Skip to content

VeloxitySI

Every request.
The right model.

Separator gives a request a type and hands it to the model built for that type. The choice is checked. It is designed to land in milliseconds. When the ask is several jobs at once, Separator splits it into small calls and sends each call to a different model.

separator5.6 ms

request

Why is the sky blue?

type
explanation
model
reason-1
contract
Route<Question, Answer>
  • Judge the questionexplanation → reason-1

Illustrated decision · replay slowed

  • explanation → reason-1
  • patch → code-1
  • prose → write-1
  • lookup → search-1
  • media → vision-1
  • speech → speech-1
  • workflow → ops-1
  • fan-out → many models
  • explanation → reason-1
  • patch → code-1
  • prose → write-1
  • lookup → search-1
  • media → vision-1
  • speech → speech-1
  • workflow → ops-1
  • fan-out → many models

01 Chat

One question, one typed hop.

A plain question is classified, checked against a contract, and handed to the model that answers that kind of question. You see the type, the model, and the milliseconds.

separator / chat

YouWhy is the sky blue?

Separatorexplanation → reason-1 · 3.2 ms

reason-1Shorter blue wavelengths scatter more off air molecules than longer red ones.

02 Build

Code stays on the code lane.

A change request is typed as a patch and routed to code-1. If the same message also asks for an explanation, that part splits off and does not ride inside the diff.

src/routes.tscode-1

14 export async function handler(req) {

15+ await limit(req, { max: 100 });

16 const session = await getSession(req);

17 return schema.parse(session);

type patch · Route<ChangeRequest, Diff>

03 Bot

Complex work becomes a list of small requests.

Separator reads a long ask, breaks it into typed parts, and calls a different model for each part. The list is the result. Nothing is merged in secret.

fan-out

Close the month and file the report.

  • Match each charge to a receiptdone · ops-1
  • Write the month-end notedone · write-1
  • Ask where a receipt is missingdone · reason-1

04 Imagine

A picture prompt does not land on a text model.

Media is its own type. vision-1 receives the prompt. If you also ask for a caption, write-1 gets that part alone.

media → vision-1 · Route<Prompt, Media>

05 Voice

Speech in. Actions beside it, not inside it.

Audio is typed as speech and routed to speech-1. A follow-up hiding in the same utterance is split into its own call.

speech-1

Transcribe the call and book the follow-up.

speech-1 + ops-1 · fan-out

Studio

Text, a still, then a clip.

A brief stays on write-1. A picture stays on vision-1. This page shows the shape of those calls. It does not call a model.

POST /v1/route

JSON

{
  "model": "separator",
  "allow": [
    "write-1"
  ],
  "input": "Write a visual brief for a giant whale floating over a golden wheat field. Include the scene, lighting, composition, and gentle motion for a short film."
}

write-1

Sample reply

Sample ready

Visual brief

A whale above the wheat.

A giant whale floats above a golden wheat field and a small farmhouse. Frame it from a low angle, with soft afternoon light, a warm palette, and a quiet sense of wonder. Use the supplied still as the first frame. Preserve the whale, farmhouse, composition, and warm light. The whale glides slowly forward, the wheat sways in a light breeze, and the camera gently pushes in. One continuous shot, no cuts.

Characters 404

For developers

One API.
Every model.

Text, code, search, speech, and images go through one route call. Separator returns the type, the model, and the parts when a request splits.

<10 ms
Decision target
7
Lanes
2
Contracts

/v1/route

const response = await fetch("https://api.veloxity.si/v1/route", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VELOXITY_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    input: "Close the month and flag anything without a receipt.",
    allow: ["ops-1", "write-1", "reason-1"],
  }),
});

const decision = await response.json();
console.log(decision.latency_ms, decision.parts);

<10 ms

Design target for the routing decision

1

Typed contract on every hop

7

Specialist lanes in the catalog

n

Sub-requests when the work splits

Requests leave one intake. Each lane is a model that is good at one kind of work. A request that contains two kinds of work forks before it arrives.

The fabric

Enterprise and teams

One balance for the whole team.Members, budgets, keys and billing in one place.

A

Acme

Enterprise

acme

Enterprise balance

$2,480

Alert below $500

  • AC

    Alex Chen

    Owner

    Unlimited

  • MW

    Mia Wang

    Admin

    $126 / $300

  • SL

    Sam Li

    MemberAlmost used up

    $86 / $100 / month

  • JP

    Jordan Park

    Member

    $36 / $200 / month

Audit log · Sam Li reached 80% of the budget

Sample console. Not a customer account.

Approved enterprise accounts get a console of their own: invite the team, give each member a budget, and see every top-up, request, and creation in one place.

  • The money stays in one enterprise balance. Members spend within their budgets.
  • Member accounts, their keys, and their creations belong to the enterprise.
  • Every top-up and admin action is recorded with who did it.