Orbit is the infrastructure layer for AI agent fleets. Schema-validated handoffs, intelligent task routing, and real-time fleet observability — so you can run a dozen agents without losing the thread.
Orbit provides the routing, context, and observability layer between your agents. You build the agents — Orbit handles everything else.
Register agents by capability, not hardcoded ID. Orbit routes to the right agent based on what the task needs. Swap out agents without touching the call site.
Every handoff carries structured context — input schema, output schema, traces. No context drops. No black boxes. Dead-letter queues for failures that can't be retried.
Every agent's status, pending handoffs, token usage, and error rate — in one view. Alert on anomalies before they cascade.
Circuit breakers per route. Configurable retry policies with exponential backoff. Timeouts default to graceful degradation — your fleet never goes silent.
One agent works. Ten agents become a debugging nightmare. The issue isn't the agents — it's what's missing between them.
Agent A finishes. Agent B starts from scratch. The chain breaks and nobody knows why.
Agent stops. Nobody notices until the output is wrong or the customer complains.
One timeout. Stale context propagates downstream. You ship garbage and find out hours later.
Hardcoded if/else logic for "which agent handles this?" — brittle, unwieldy, breaks on edge cases.
Output looks wrong. Was it the model, the tool, or the routing? You have no audit trail.
More agents = more failure modes you can't see. Teams give up and consolidate into a monolith.
Orbit is infrastructure, not another framework. Drop it into any existing stack in minutes.
Register agents. Route tasks. Inspect traces. Everything else is Orbit handling failures, retries, and context so you don't have to.
// Register your first agent
const res = await fetch('https://orbit-1983.polsia.app/api/agents', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: 'research-agent',
type: 'research',
capabilities: ['web-search', 'summarize'],
status: 'online'
})
});
const { id, name } = await res.json();
// → { id: 1, name: "research-agent", ... }
// Route a task — Orbit finds the right agent
const res = await fetch('https://orbit-1983.polsia.app/api/handoff', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
agentName: 'research-agent',
input: { query: "What is Orbit?" },
capabilities: ['web-search']
})
});
const { output, durationMs, taskId } = await res.json();
// → { output: { result: "[orbit-mvp] routed to agent 1", ... }, durationMs: 4 }
// Inspect the full handoff trace
const res = await fetch(
`https://orbit-1983.polsia.app/api/handoff/${taskId}/traces`
);
const { traces } = await res.json();
// → [{ direction: "in", status: "running", input: {...}, ... },
// { direction: "out", status: "success", output: {...}, durationMs: 4 }]
Register an agent, check its status, route a task — then watch the full trace execute end-to-end.
POST to /api/agents with a name, type, and capabilities.
// Register an agent
const res = await fetch('https://orbit-1983.polsia.app/api/agents', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: 'research-agent',
type: 'research',
capabilities: ['web-search', 'summarize'],
status: 'online'
})
});
const agent = await res.json();
// → { id: 1, name: "research-agent", status: "online", ... }
Agents heartbeat via POST /register/heartbeat. Query status to confirm liveness.
// List all agents
const { agents } = await (
await fetch('https://orbit-1983.polsia.app/api/agents')
).json();
// Get by name
const agent = await (
await fetch('https://orbit-1983.polsia.app/api/agents/research-agent')
).json();
// Agent heartbeat (agent-side)
await fetch('https://orbit-1983.polsia.app/register/heartbeat', {
method: 'POST',
body: JSON.stringify({ id: agent.id })
});
POST to /api/handoff with agentName, agentId, or capabilities to auto-match.
// Route by agent name
const { taskId, agentId, output, durationMs } = await (
await fetch('https://orbit-1983.polsia.app/api/handoff', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
agentName: 'research-agent',
input: { query: 'What is Orbit?' }
})
})
).json();
// Route by capability (auto-match first active agent)
// body: { capabilities: ['web-search'], input: { query: '...' } }
Every handoff logs an in and out trace. Pull by taskId.
const { traces } = await (
await fetch(
`https://orbit-1983.polsia.app/api/handoff/${taskId}/traces`
)
).json();
// → [
// { direction: "in", status: "running", input: {...} },
// { direction: "out", status: "success", output: {...}, durationMs: 4 }
// ]
No hidden fees, no per-seat surprises. Pay for what your agent workforce actually runs.
Orbit handles the coordination. You own the product. Get a working fleet running in minutes.