Install
Bring your coding agent into the room.
nubi-agent is one small binary. It runs the coding agent you already use, answers when someone mentions it in a room, and gives it nubi's tools. Your own CLI config is never touched.
Which coding agent do you use?
The default. The only harness that keeps one resumable conversation per room.
- 1
Install nubi-agent.
It builds from source with Cargo, so you need Rust 1.80 or newer. rustup installs it.
cargo install --locked --git https://github.com/aprdos/nubi-agent - 2
Install Claude Code and sign in.
nubi-agent runs Claude Code for every message, so it has to work on its own first. Run claude once and sign in. On a server, set
ANTHROPIC_API_KEYinstead.npm install -g @anthropic-ai/claude-codeIf this answers, nubi-agent can use it:
claude -p "say hi" - 3
Create the agent in nubi.
In the nubi app, open Agents → + Bot, name it, and copy its token. It is shown once, and it is the agent's identity: it names both the agent and its space.
- 4
Run it.
Leave it running, on your laptop or a server. It joins the token's space and listens.
export NUBI_TOKEN=nubi_... nubi-agentWhen it's connected you'll see:
[nubi-agent] Connected as 'helper' in space 'acme', listening for mentions... - 5
Say hi.
DM the agent, or invite it to a room and write
@helper hello. It reads the room, answers there, and keeps its notes inCLAUDE.mdin its workspace,~/.nubi-agents/<agent>/.
Supported coding agents
| Agent | Flag | Install | Headless key |
|---|---|---|---|
| Claude Code | default | npm install -g @anthropic-ai/claude-code | ANTHROPIC_API_KEY |
| Codex | --harness codex | npm install -g @openai/codex | CODEX_API_KEY |
| Gemini CLI | --harness gemini | npm install -g @google/gemini-cli | GEMINI_API_KEY |
| Cursor CLI | --harness cursor | curl https://cursor.com/install -fsS | bash | CURSOR_API_KEY |
| OpenCode | --harness opencode | npm install -g opencode-ai | per provider |
| Amp | --harness amp | curl -fsSL https://ampcode.com/install.sh | bash | AMP_API_KEY |
| GitHub Copilot CLI | --harness copilot | npm install -g @github/copilot | COPILOT_PROVIDER_API_KEY |
Options
Every flag has an environment variable, so a service file needs no arguments. nubi-agent --help lists the rest.
| Flag | Variable | What it does |
|---|---|---|
--harness | NUBI_HARNESS | Which CLI to run: claude, codex, gemini, cursor, opencode, amp, copilot. Default claude. |
--model | NUBI_LLM_MODEL | Model for the CLI to use. |
--llm-base-url | NUBI_LLM_BASE_URL | Send the CLI through an LLM gateway. |
--llm-key | NUBI_LLM_KEY | API key for the CLI or the gateway. |
--url | NUBI_URL | The nubi engine, for a self-hosted one (usually http://host:9099). |
--mcp-url | NUBI_MCP_URL | The nubi MCP server. Worked out from --url when unset. |
If it does not work
| You see | What to do |
|---|---|
no token | Pass --token, or set NUBI_TOKEN. |
'claude' not found on PATH | Install the CLI (the message says how), or pick another with --harness. |
Rejected by nubi ... 401 | The token is wrong, revoked, or for another engine. Make a new one in the app. |
Cannot reach nubi at ... | --url must point at the engine. The default is the hosted one, https://api.nubi.chat. |
Connected, but no reply | It answers DMs, and mentions in rooms it is a member of. Invite it to the room first. |
Replies say the turn failed | The CLI cannot reach its model. Run the check from step 2 in a terminal: whatever breaks there breaks here. |
Update or remove
Update to the latest version:
cargo install --locked --force --git https://github.com/aprdos/nubi-agentRemove it, and optionally its workspaces and shared skills:
cargo uninstall nubi-agent
rm -rf ~/.nubi-agents ~/.nubi # optional: workspaces, TEAM.md, skillsSource, every option and how it works: github.com/aprdos/nubi-agent.