Skip to content

Build your own agent ​

Install the stack gives you Nexus with rho, the default agent. This page is the other starting point: you want an agent with your own prompts, interface or channel, you want to embed Nexus in a product, or you want to add tools from your own machines or services.

What you need ​

  • A running Nexus. The stack from the previous pages is fine; rho stays installed and is useful to compare against.
  • An owner or administrator login, and at least one usable text model configured under Models and providers.
  • The person who will approve your program's connection in the Nexus browser.

Choose the shape ​

You are buildingWhat it holdsStart here
An agent application — a product that talks to people and answers as an AgentA member credential (the Agent's identity) and a transport credential (its own tool inbox)Build agents quickstart
A runner — tools bound to a machine or containerA transport credential onlyRunner quickstart
A tool provider — tools served by name from a poolA transport credential onlyTool providers
A direct model integration — model calls through the gateway, no conversationAn agent application's member credentialDirect model calls

An agent application can also be a runner for its own machine, the way rho is in full mode: one connection pairs both.

Choose a language ​

StatusWhat you get
Ruby — cybros_agentAvailableDevice connection and credential rotation, every member and executor resource, durable event following, typed step authoring, an optional realtime module. rho is built on it.
JavaScript / TypeScriptNo first-party SDK yetUse the HTTP contract; see the SDK roadmap.
Any other languageThrough the HTTP contractBearer authentication, JSON envelopes, idempotency keys, opaque cursors and a documented durable-follower procedure. See the reference.

See SDKs.

The path ​

  1. Connect. Choose a stable, non-secret registration identifier for the installation, start the device flow, show the code, and let the person approve in the Nexus browser. Store each credential lineage privately. Credentials and planes
  2. Declare the agent. One atomic write of tools, approval mode and rules, prompt mechanism, compaction policy, models and hooks, plus the agent's prompt documents. Agents and configuration
  3. Converse. Create or reuse a workspace, create a conversation, submit an input, follow it to the settled answer over HTTP, then add the cable for latency. Quickstart, Events and streaming
  4. Serve tools. Announce what your executor serves, claim calls from its inbox, commit results, publish captures. Claims and results
  5. Decide with people. Surface approvals and questions from your inbox in your own interface. Approvals and rules
  6. Go further. Delegation and subagents, schedules, lifecycle hooks, memory and store, direct model calls. Build agents

Learn from rho ​

rho uses only the public APIs, so its source is a complete worked example. The repository is jasl/cybros.ai; rho lives under agents/rho/.

You needWhere rho does it
Device pairing, credential storage and rotation, the settings filerho — the daemon core and CLI
Following conversations, rendering streamed answers, approvals and questions in a UIrho-webui — plain browser modules over the daemon's control API
The inbox claim loop, file and shell tools, checkpoints, process managementrho-runner
Orchestrating tools and model calls from JavaScript (programmatic tool calling)rho-codemode
An external channel as an ingress: consent, routing, deliveryrho-ingress-telegram
MCP servers as tools, with OAuth loginrho-mcp
Reading the web safely from a runnerrho-web-tools
Serving an editor over a standard protocol, and delegating to other agentsrho-acp, rho-acp-client
Delegating a coding assignment to another harnessrho-t3

Your application does not have to look like rho. A chat bot with no runner, a workflow service with no conversation interface, or a second agent beside rho with a different persona and stricter rules are all ordinary agent applications on the same Nexus.

Nexus is licensed O’Saasy. The rest of the repository defaults to MIT.