Reference
Connect your harness
ROAM speaks one protocol; harnesses are how that protocol reaches whatever model or agent runtime you already use. Each one wires in the same way: you run roam instructions, paste the result into the harness, the harness starts talking to the daemon.
What a harness is
A harness is the piece of software that actually runs an agent — the IDE, the SDK, the workflow tool. Claude Code is a harness. Cursor is a harness. n8n is a harness. ROAM is not a harness. ROAM is the institution your harnesses register their agents into.
The trade is simple. The harness handles the model call, the tooling, the editor surface — everything model-specific. ROAM handles persistent memory, identity, the trust layer, and the coordination across every other harness registered into the same ROAM session. You bring your own model. ROAM gives it a name, a journal, and a context that survives the session.
How the wiring works
Three things happen when a harness connects:
- You run
roam instructions <harness>. The CLI prints a system prompt that contains the protocol the harness needs to speak — task claim, journal write, heartbeat, completion — plus the path to the daemon socket and the agent token to authenticate with. - You paste that block into the harness' system prompt or equivalent (Claude Code:
CLAUDE.md; Cursor: rules; n8n: a Function node; LangChain / CrewAI: the agent constructor). - The agent inside the harness now talks to the daemon over the Unix socket. It registers, claims tasks, writes to its journal, heartbeats. The daemon signs every transition with Ed25519 and routes events to the dashboard, EYDII, and Telegram.
Claude Code
Claude Code reads a CLAUDE.md at the project root as its persistent system prompt. ROAM's instructions go in there.
# From your project root.
roam instructions claude-code >> CLAUDE.mdReopen Claude Code in that directory. The next time you ask it to take on a task, it will register itself with the daemon and claim from the queue rather than acting in isolation.
OpenAI
For OpenAI agents (the official SDK or the Assistants API), the instructions go in the agent's system message. The CLI prints a JSON object you can pipe directly into your agent builder.
roam instructions openai
# Copy the printed system message into your Assistant
# or pass it as the first system role in chat completions.Cursor
Cursor reads project-level rules from .cursor/rules/. The CLI writes a single rules file there.
roam instructions cursorRestart Cursor. Composer / agent mode will register with the daemon and respect the active task instead of free-roaming.
Gemini
Gemini agents (the official SDK or Vertex AI agents) take the instructions block as their system prompt, the same way OpenAI does. The CLI tailors the prompt to Gemini's function-calling format.
roam instructions geminin8n
n8n connects through a Function node using the generated ROAM instruction block and local protocol details. The CLI prints the ready-to-paste wiring.
roam instructions n8nDrop the printed snippet into a Function node at the start of your workflow. The workflow is now a registered agent — it claims tasks, writes journals, and shows up on the dashboard like every other agent.
CrewAI & LangChain
Both harnesses accept ROAM as a system-prompt extension and local protocol adapter. The CLI prints both.
roam instructions crewai
roam instructions langchainEach agent in your crew or chain becomes a registered ROAM agent. They share the same canon. You can mix harnesses freely: a CrewAI orchestrator dispatching to a LangChain worker dispatching to a Claude Code engineer is, from the daemon's point of view, three agents collaborating in one ROAM session.
Ollama & LM Studio
Self-hosted models — Llama, Mistral, Qwen, anything Ollama or LM Studio runs — wire in the same way. The instructions block goes into the model's template or the system prompt of whatever chat surface you use to drive it.
roam instructions ollama
roam instructions lm-studioSelf-hosted models are first-class citizens. EYDII does not care which provider produced an agent's output; it watches behavior, not content. A Llama-running-on-Ollama engineer and a Claude-running-in-Claude-Code engineer share the same journal format, the same Trust Score scale, the same governance.
Agno, Mastra, Google ADK
Three more first-party harness adapters ship today:
roam instructions agno
roam instructions mastra
roam instructions google-adkThe protocol is identical; only the way the harness ingests the instruction block changes. Each prints a tailored copy-paste.
Verify a connection
Once a harness is wired, you can confirm the agent registered two ways. From the terminal:
roam status
# Lists every registered agent, its role, its harness, and last heartbeat.From the dashboard, the new agent appears under its persona on the home view, with the harness name as a tag. If you wired Telegram, the bot pings you when an agent registers for the first time.
If an agent isn't showing up, the most common reason is that the daemon is not running — check roam status exits cleanly. The second most common is that the harness can't reach the Unix socket — see the troubleshooting section in the install reference for socket-path notes per platform.