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.
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.
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 fabricEnterprise and teams
One balance for the whole team.Members, budgets, keys and billing in one place.
Acme
Enterpriseacme
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.
Latest news
All postsProduct · November 5, 2026
Separator types a request, then moves it in milliseconds
The first public description of Separator: a type on every request, a model chosen for that type, and a split when one request is really many.
Product · November 2, 2026
Separator sits in front of the models you already call
Claude, Grok, ChatGPT, and DeepSeek stay with their publishers. You attach a key. The lane is still the contract.
Product · October 28, 2026
An allow-list is a refusal, written down
A lane that is absent cannot be chosen. Splitting the request does not open a lane the list removed.
Product · October 22, 2026
A complex request is a list, not a longer prompt
Fan-out keeps each part of a hard request on its own contract, with its own model, and shows the list.