Other coding agents

Claude Code, Codex, opencode and the Claude Desktop app can use Nemocode's project memory. They get what Nemocode knows about the repository as context, can search it, and can propose new facts — which wait at your gate like any other.

What they get

Nothing an external agent sends is applied on its own. Every proposal waits for you.

Connect an agent

Nemocode has to know the repository first: open it in Nemocode once, so it is a project. Then, in a terminal:

nemocode integrate claude     # Claude Code
nemocode integrate codex      # Codex CLI
nemocode integrate opencode   # opencode
nemocode integrate claude-desktop   # the Claude Desktop app
nemocode integrate status     # what is connected on this machine, and what agents may do in each project

Each one writes the other tool's configuration so that it starts Nemocode's memory server by itself. There is no token to copy and nothing to start by hand: the external agent launches nemocode mcp when it needs it, and that finds the Nemocode server running on your machine — or starts one.

OptionWhat it does
--dry-runShow what would change, change nothing.
--uninstallRemove only Nemocode's entries again.
--bin <path>Pin the nemocode program the configuration calls.
--curatorAlso add the second server with the curator tools. See Letting an agent curate.
--no-installClaude Code only: write the plugin files but do not run the claude plugin commands; the installer prints them instead.
--dir <path>Claude Code only: write the plugin files to this folder instead of the default one under Nemocode's folder.
--config <file>Claude Desktop only: write to this configuration file instead of the app's own.

Every file that is changed is backed up next to itself first, and running the same command twice changes nothing the second time.

AgentGood to know
Claude CodeInstalled as a plugin named nemocode. It adds a nemocode-memory skill and a /nemocode-harvest command to hand the session to Nemocode by hand. With --curator a second plugin, nemocode-curator, is installed as well — switched off until you enable it (see below). Without the claude program on the PATH the installer prints the two /plugin commands to run by hand.
CodexCodex asks you to trust new hooks once: start codex and open /hooks.
opencodeInstalled as a plugin; your own opencode configuration file is not rewritten.
Claude DesktopAdds Nemocode to the app's MCP servers and leaves the rest of its settings alone. The app does not see your shell's PATH, so the entry needs the full path of the nemocode program — pass --bin if the installer cannot find it. Restart the app afterwards. For the app's Code tab, run nemocode integrate claude as well — that tab is Claude Code.

Claude Desktop chats

A chat in Claude Desktop does not run in a folder and has no hooks, so it works a little differently from a terminal agent:

Allow a project

Connecting an agent gives it nothing yet. What it may do is set in Nemocode, per project: press x in the project or session list, or open /config ▸ General ▸ External agents (also in the web settings). Each project cycles through four states with Space:

StateWhat the external agent may do
offNothing. The default.
readGet Nemocode's knowledge as context and search it.
read + proposeAlso stage facts and hand sessions over — for your approval, never directly.
read + propose + curatorAlso curate, in sessions that use the curator server (see below). Stays on until you lower it.

Why only in Nemocode. There is deliberately no command for this. An external agent can run commands in your terminal — if a command could grant access, the agent could grant it to itself. Which project a session belongs to is still found from the folder it runs in; it only gets anything if that project is allowed here. Outside any project folder — and always in Claude Desktop — only the projects allowed here can be chosen.

What the agent can do

The memory server, nemocode, offers 15 tools. The list never changes; a tool the project's level does not allow answers with the reason instead of disappearing. Every tool also accepts project (a name or an id) or project_id, for when the agent runs outside a project folder. A parameter in bold is required.

ToolLevelParametersWhat it does
nemocode_projectsanynone Lists the projects you opened to external agents, with the level of each — and nothing about the others.
pum_bundleread task, areas (list of topics) The knowledge block Nemocode's own agent starts a mission with: the absolute rules and what knowledge exists. task adds what is relevant to it, areas limits it to those topics. Call it at the start of non-trivial work unless it was injected already.
pum_searchreadquery Search the memory in natural language: decisions, rules, gotchas and invariants, with ids and weights. A weight below 0.8 is a hypothesis; verify it.
pum_nodereadid One fact in full: statement, proofs and code pointer.
pum_relationsreadid What a fact is connected to. Check it before changing something the fact covers.
pum_queryread action (search, node, relations, conflicts, pending, proofs, grep), query, id The low-level read. It also lists open conflicts, what is pending and proofs nobody judged, and grep searches ids, statements and topics with a regular expression.
pum_rules_forread path (a file, folder or glob) Before an edit: the rules, decisions and gotchas tied to that path, for example src/billing/ or src/**/*.sql.
search_historyread query, include_cross_project Case-insensitive search over this project's past sessions and missions. Other projects are included only if you allowed them for external agents too.
pum_rememberpropose statement (one self-contained sentence), topics (one to three tags), code_ref (path[:line]) Stages one durable fact: a decision with its reason, a gotcha, an invariant, a convention. It waits in /pending; it is not stored until you approve it. Not for progress notes.
pum_add_proofpropose node_id, text, file, line, commit, kind Proposes evidence for a fact: where the code shows it. The kinds are code_implementation, code_invariant, test_passes, type_check_passes, benchmark_passes, logical_deduction, metric_observed, doc_references and git_blame.
pum_report_conflictpropose node_id, reason, contradicts (another fact's id), file, line, commit, kind Reports a fact the code contradicts, with the reason and where. The kinds are user_reported_bug, test_fails, runtime_crash, type_check_fails, metric_violation, benchmark_fails and security_audit_fails.
pum_mark_outdatedpropose node_id, reason, file, commit, superseded_by Flags a fact for a recheck after a code change. You retire it or keep it.
pum_finishpropose summary, touched_files, transcript_path Ends a unit of work and hands it to Nemocode, which distils what is worth keeping into the gate. Call it as the last step of substantial work. It is safe to call more than once and together with the session hooks: each turn is taken once. The transcript is found by itself for Claude Code and Codex.
harvest_nextproposenone Takes the next open harvest job — only when the project has the external agent harvest its own sessions (see Who harvests its sessions). It returns the transcript excerpt and the project knowledge.
harvest_donepropose job_id, summary Reports the job finished, with what the agent proposed and what it left out. Nemocode shows it in that session's harvest session.

The levels are the ones you set per project: read for the searching tools, propose for the tools that stage something. Everything staged waits in /pending, marked with the agent it came from. The evidence kinds that mean “the user says so” are not offered to an agent: only you can assert that.

Older names still work. Allow lists and skill texts written for earlier versions keep working: the two old tool names map to pum_bundle and pum_finish. nemocode integrate writes the current names.

Letting an agent curate

An agent you trust can also curate the project memory, exactly like Nemocode's own curator: decide pending proposals, resolve conflicts, judge evidence, edit, rename, retire and connect facts, choose the folders that feed the memory, and approve team reviews. Every one of those is filed as a request in the same queue as the curator's own (Curator requests), marked “from <agent> (external)”. Nothing changes until you approve it. The agent sees your decision, and your reason for a rejection, with curator_requests. The curator is a second server, added with --curator. It has all 15 tools above plus 14 curator tools, so a session that uses it needs nothing else:

nemocode integrate claude --curator
ToolParametersFiles a request to …
curator_statusnone(reads) whether curator rights are on for the project.
curator_requestsnone(reads) show the agent's own requests and what you decided, with your reason for a rejection. Check it before filing something again.
curator_decide pending_id, decision (approve or reject), reason, evidence approve or reject a pending proposal (its number from the pending list).
curator_judge_proof proof_id, judgement (vouched, refuted, irrelevant), reason, evidence give a verdict on a proof. A refutation should name the counter-case.
curator_resolve_conflict conflict_id, resolution (keep_a, keep_b, dismiss), reason, proof_text, proof_ref, proof_kind resolve an open conflict. Keeping one side needs refuting evidence against the other.
curator_add_node statement, reason, topics, code_ref add a new fact.
curator_edit_node node_id, statement, reason, evidence reword a fact.
curator_rename_node node_id, new_id, keep_connections (default yes), reason rename a fact; its connections and proofs move along unless you say otherwise.
curator_delete_node node_id, reason, superseded_by retire a fact, optionally naming the fact that replaces it.
curator_add_edge from_node, to_node, semantic_type (CAUSAL, TEMPORAL, CONTRAST, LOGICAL, EVIDENTIAL, EVALUATIVE, CONSTITUTIVE), explanation, reason connect two facts.
curator_delete_edge edge_id, reason remove a connection.
curator_set_folders folders (empty means the whole project), reason choose the folders that feed the memory.
curator_reviewsnone(reads) list the open team reviews. Only on a team Source, or as a Member with the reviewer role.
curator_approve_review review_id, head_sha approve a team review at the version you looked at.

Two things decide whether an agent may curate:

RuleWhy
Only you can raise the levelThe agent has no tool for it, and Nemocode refuses a raise that comes from the agent or from a program it started. Lowering is open to anyone.
Nothing happens without youEvery change is a request that you approve or reject in /requests or in the browser. The project level only decides whether the agent may file requests at all.
Everything is loggedEvery request and every approved change is recorded with the agent's name. Changes to the memory are undone with the normal undo.

Who harvests its sessions

When Nemocode gets a finished session from Claude Code, Codex or opencode, it shows up in Nemocode with its own harvest session (↳ harvest under it). The project setting Harvested by (/config ▸ General) decides who does the work:

Harvested byWhat happens
Nemocode's curatorNemocode's curator harvests it, visibly, and you can talk to it in Nemocode like for any other session.
the agent itselfThe external agent takes the job with the harvest_next tool, analyses it with its own model, proposes through the usual tools and closes it with harvest_done. Nemocode mirrors the progress, marked “run by” the agent; you talk to it in its own tool. Switching to this is up to you, never to an agent.

Either way, what comes out of an external session waits for your click and is never applied automatically.

Options

The first two are also switches per project, in Nemocode under /config ▸ Project (Harvest external sessions and Context on external prompts, both off by default). The environment variable of the external agent wins over the switch in both directions: 1 forces it on, 0 forces it off. The harvest also needs at least read + propose for the project.

VariableWhat it does
NEMOCODE_HARVEST=1Hand each finished turn to Nemocode, so it can learn from it. Off by default.
NEMOCODE_PROMPT_CONTEXT=1With every prompt of 12 or more characters, add the knowledge most relevant to it. Claude Code and Codex.
NEMOCODE_PROJECT_ID=<id>Name the project instead of finding it from the folder.
NEMOCODE_NO_AUTOSTART=1Never start a Nemocode server from the external agent; only use one that is already running.
NEMOCODE_HOOK_DEBUG=1Print errors instead of staying silent.

The project is found from the working directory: the longest matching project folder wins, and a git worktree counts as its main checkout. Where there is no such folder, the project is chosen among those you allowed, as in Claude Desktop.