§04Using Archis

Coding agents

Archis is an MCP server. You keep the coding agent you already use; it stops reading files and starts asking the index.

§01

Supported coding agents

Twelve coding agents. Seven are verified end to end — registered, handshaking, listing tools, and answering a live call — on the CLI version current at the last conformance run. Two have not been through one yet: Antigravity is built from the vendor's documented CLI, and Cursor from an integration session against the editor itself. Pi is the one harness Archis does not reach over MCP at all, because Pi has no MCP client: Archis arrives there as the briefing and the skill instead. JetBrains Air, added since, is measured on macOS and not yet on Linux.

HarnessVendorIdHow Archis registers
JetBrains AirJetBrainsair (or jetbrains-air)JSON merge into ~/Library/Application Support/JetBrains/Air/mcp.json
Claude CodeAnthropicclaudeclaude mcp add
Codex CLIOpenAIcodexcodex mcp add
Gemini CLIGooglegeminigemini mcp add
AntigravityGoogleantigravity (or agy)agy mcp add
CursorAnyspherecursorJSON merge into ~/.cursor/mcp.json, with absolute paths
VS CodeMicrosoftvscode (or copilot) (or code)JSON merge into ~/Library/Application Support/Code/User/mcp.json, with absolute paths
OpenCodeAnomalyopencodeJSON merge into ~/.config/opencode/opencode.jsonc
GooseBlockgooseYAML merge into ~/.config/goose/config.yaml
Amp CLISourcegraphampamp mcp add
Factory DroidFactorydroiddroid mcp add
PiEarendil Workspinot an MCP client — briefing and skill only

A vendor command is always preferred over editing a file: the vendor owns its own config schema, so Archis never has to track it. The MCP harnesses with no scriptable command are edited directly — backed up to <file>.chi-backup first, written through a temporary file and an atomic rename, with every unrelated key preserved.

§02

Connecting

Bare, chi agents reports every harness it knows: whether its CLI is on this machine, whether Archis's tools are registered with it, whether the hooks are installed, and whether it has been briefed.

$ chi agents
$ chi agents on
registers the tools, installs the hooks, writes the briefing
$ chi agents on claude

With no id, on arranges every harness it found. With an id, only that one. The flags narrow it further when you want one piece — the registration but not the briefing, say — and chi agents off reverses any install Archis performed, leaving every file otherwise as it was.

§03

What a connection touches

Every file chi agents on can write for a harness, global and per repository, who writes it and the command that takes it back out. Pick an agent; the URL follows, so this is a page you can send to somebody. The same answer, for the machine you are on rather than in general, is chi config; chi config --catalog prints this table in the terminal.

Claude Code · claude · Anthropic · install: npm i -g @anthropic-ai/claude-code

ScopeWhatWhereWritten byUndo
Your homeMCP registration~/.claude.jsonclaude mcp add --scope user chi -- chi-mcp
The vendor's own command and the vendor's own file, at the location its documentation gives. Archis never opens it.
chi agents off claude --mcp
Your homeHooks (8 events)~/.claude/settings.jsonArchis, as entries under hooks; existing entries are kept
SessionStart → chi hook session
PostToolUse → chi hook record
PreToolUse → chi hook advise
UserPromptSubmit → chi hook remind
PreToolUse → chi hook bind
PreToolUse → chi hook gate
PreCompact → chi hook compact
Stop → chi hook summarize
chi agents off claude --hooks
Your homePermission entry~/.claude/settings.jsonArchis, one permissions.allow entry (mcp__chi) so its tools run without a promptchi eject --machine
This repositoryHooks and permission entry./.claude/settings.jsonArchis, only with --project (or the "team defaults" step of chi init) — the file is committed, so it is never the defaultchi agents off claude --hooks --project
Your homeBriefing~/.claude/CLAUDE.mdArchis, as one attributable block (<!-- chi:begin --> … <!-- chi:end -->)
The original is kept beside it as .chi-backup. Several harnesses read the same file; the block is written once.
chi agents off claude --brief
This repositoryBriefing./CLAUDE.mdArchis, as one attributable block (<!-- chi:begin --> … <!-- chi:end -->), only with --project — usually committedchi agents off claude --brief --project
Your homeSkill~/.claude/skills/chi/SKILL.mdArchis, a SKILL.md it stamps and refreshes; a file it did not write is never overwritten
Claude Code reads skills at startup — restart it for this to take effect
chi skill uninstall --global
This repositorySkill./.claude/skills/chi/SKILL.mdchi skill install, only when askedchi skill uninstall

"Your home" means the files under your own account — ~/ — which apply to every repository you open and are never committed. "This repository" means files at the repository root, which usually are; nothing is written there unless you ask with --project.

§04

What Archis keeps for itself

Independent of the agent, Archis keeps its own state in two places: a directory per machine, and .chi/ at the root of each repository it has indexed. Nothing in either is sent anywhere; the privacy page has the boundary.

PlatformState directory
macOS~/Library/Application Support/chi
Linux$XDG_STATE_HOME/chi, or ~/.local/state/chi
Windows%APPDATA%\chi
Any$CHI_STATE_DIR, when set, overrides all three
In the state directoryWhat it isUndo
repositories.jsonwhich repositories Archis has indexed on this machine — paths and timestampschi eject --all
registrations.jsonwhat was registered with each agent, so an old registration can say sochi agents off --mcp
agents.jsonwhich coding agents have appeared here, and what Archis did about eachchi eject --machine
setup.jsonthe answers given to the setup wizard's machine-wide questionsdelete by hand
advice-strictstrict mode for the advice hook is onchi agents advice off
telemetry.jsonthe usage-statistics decision and an anonymous install idchi telemetry off
telemetry-queue.jsonlusage events waiting to be sent, as coarse buckets — `chi telemetry preview` prints themchi telemetry off
telemetry-flushedwhen the queue was last sentchi telemetry off
update-check.jsonthe last update check's answer, so the daily notice asks the server oncedelete by hand
license.jsonthe signed-in account and its cached entitlementchi auth logout
update.jsonrelease channel, automatic-update setting and the last checkchi update --auto off
licence-notice.jsonwhen each licence notice was last shown, so none repeatsdelete by hand
In a repositoryWhat it isUndo
.chi/chi-graph.dbthe knowledge graph — rebuilt by `chi index`chi eject
.chi/graphthe knowledge graph in its CAVS form — rebuilt by `chi index`chi eject
.chi/chi-session.dbsession memory — the one thing `chi index` cannot rebuildchi eject (kept with --keep-sessions)
.chi/setup.jsonthe answers given to the setup wizard's per-repository questionschi eject
.chi/release.jsonwhich release set this repository up, so a newer one can say what it addschi eject
.git/info/excludeone `/.chi/` line under Archis's comment — never `.gitignore`chi eject
.chignoreindexing rules; Archis's managed block, and the file if nothing else is in itchi eject

.git/info/exclude rather than .gitignore, on purpose: it does the same job without Archis modifying a file you have committed. And any file Archis edits in place — an instructions file, a harness's JSON or YAML config — is copied first to <file>.chi-backup, once, and the copy is yours.

Generated from chi 0.52.0.

§05

Telling the model

The most expensive mistake with Archis is a connection that works. Registering the tools puts them in front of the model. It does not tell the model they are there, and a model that was never told goes on reading files — the tools sit unused and the session costs exactly what it always did.

There are three channels, in descending order of how much Archis controls them, and no harness has all three:

ChannelHow reliableWhat it is
MCP handshakeEvery harnessThe server describes itself and its tools when the agent connects. Always present, but a tool description competes with everything else in the prompt.
Session hookClaude CodeArchis speaks at the start of a session, and before the agent reaches for its own file tools. The most reliable channel, because it does not depend on the model reading a file.
Instructions fileEvery harnessA short briefing in the file the harness already reads — CLAUDE.md, AGENTS.md, GEMINI.md, .goosehints — at project or user scope.

chi agents on uses every channel the harness supports. chi agents advice reports whether Archis is speaking up before an agent reaches for its own file tools, which is the single check worth running if the numbers are not moving.

§06

The tools

Nine tools, and the shape of them is the product: the plural ones exist so that one call answers a question that would otherwise be ten. A turn re-sends the whole conversation, so the number of calls, not the size of any answer, is what a session costs. Start with chi_context: it takes the task in words and returns what the change needs.

ToolAnswers
chi_contextThe first call for a task: describe the job in words and get the files and symbols it touches, their outlines and the exact source a change needs, in one answer.
project_overviewWhat this repository is: its files, symbols, relations and languages.
searchRanked lookup over symbol names and signatures, filterable by kind and file.
containsWhether exact text appears, in which files, how often and on which lines, comments and string literals included.
get_filesMany files at once, as an outline (every declaration, its kind and span, plus imports) or as the bytes.
get_symbolsMany symbols at once, at signature, behaviour or source detail.
get_relationsCallers, callees and impact for many symbols at once.
session_reportWhat this session has cost and saved, per level and per tool.
apply_patchEdits by line range across many files in one call, without re-sending whole files.

That is the default set. chi-mcp --toolset full advertises all 37, including the singular ones, for clients that need them; a wider list invites one call per fact, which is why it is not the default.

Where a registry composes the repository with others in a federated workspace, on a Team or Enterprise plan, every toolset also carries federation_context: chi_context across the repositories of a federated workspace, those that live only on the organization’s CAVS DB Server included: lines from each, with the repository and exact commit they came from, and nothing of a repository the user may not read.

Every one of them has a CLI equivalent, which is the useful thing about the CLI: when an agent gives you an answer you do not believe, you can ask the same question by hand. The reference maps them.

§07

Verifying a connection

$ chi agents check claude

Six things are checked, in the order they can fail:

  • The harness CLI is on PATH.
  • The harness itself reports chi among its servers — asked of the harness, not read back from the file Archis wrote. Reading our own write proves only that we can write.
  • The server binary chi-mcp resolves on PATH.
  • The handshake returns a server identity and a protocol version.
  • At least one tool is advertised.
  • A real tool call returns a real answer.

The last three run the exact command line that was registered, so a registration naming a broken path fails here rather than silently at your next session. The command exits non-zero on failure, so it works in CI.

§08

Disconnecting

chi agents off <id> undoes one connection. chi eject --machine undoes all of them, plus the hooks, the briefing and the machine-wide registrations, and touches no repository. Both remove only what is attributably Archis's — and chi config shows you the list before either runs.

§09

Archis's own loop

chi run "<task>" drives a live model over Archis's tools until it finishes or hits a step limit. It exists for two reasons: to run a task unattended, and to measure Archis against a full-source baseline on the same task — --no-compress is the control arm, and the difference between the two runs is the whole claim.

$ chi run "why does the retry loop give up early?" --plan
$ chi run "fix the failing parser test" --repair --write --exec

Writing files and running commands are separate opt-ins — --write lets it apply patches, --exec lets it run tests, builds and lints — and neither is on by default. --agent picks which harness CLI drives the loop, so this is not tied to one vendor. --transcript prints every turn, which is the way to see what the model actually asked for.