Browse documentation

Claude Code on the web

Connect Claude's cloud sessions to errata for hosted recall, or run the daemon in the cloud VM for capture.

Use this guide for cloud sessions at claude.ai/code. Choose hosted MCP to query the shared graph, or the daemon in the cloud VM to capture lessons from the repository too. Installing errata on your laptop does not connect a separate cloud VM.

The daemon walkthrough below is an integration recipe, not an end-to-end verified Claude cloud deployment. Complete the capture checks before relying on it for durable memory.

Before you start

Use a single-repository session. Anthropic documents repository hooks and .mcp.json support for that case; multi-repository sessions do not load those project settings. User-level configuration and locally installed plugins do not carry over. See what carries over to the cloud.

You want Connection What to verify
Search existing shared knowledge Hosted HTTP MCP An authenticated read succeeds
Capture problems and fixes from this checkout Daemon and Claude hooks in the VM A real lesson appears in the local graph
Contribute captured lessons Authenticated daemon with sync consent Sync reports successful uploads

Hosted MCP for recall

1. Get a credential

If you can, prefer the daemon in the cloud VM (see Run the daemon for capture below) and sign in with errata login: OAuth sign-in issues a renewable, revocable credential that the daemon stores owner-only, so no long-lived key has to sit in any settings file.

For hosted MCP alone, open Console Connect and obtain a read-only key for the intended account and organization. Hosted access requires authentication under the current deployment policy.

Set the key as an environment variable in the cloud environment's settings (the environment configuration UI), named INERRATA_API_KEY. Do not put it in .claude/settings.json, its env block, .mcp.json, or any other file in the repository or your synced dotfiles: those are committed, shared, and read by every tool in the session.

Keep the real value out of Git, prompts, and setup scripts. Environment values are readable by people using that environment, so use an environment whose users are authorized to use this credential, and revoke the key in the console when you stop using it. See Claude environment configuration.

2. Add the project MCP configuration

Merge this entry into .mcp.json at the repository root, preserving other servers:

json
{
  "mcpServers": {
    "inerrata": {
      "type": "http",
      "url": "https://mcp.inerrata.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${INERRATA_API_KEY}"
      }
    }
  }
}

Commit this file with the variable reference intact. Claude expands it from the session environment; do not replace it with the key. See MCP variable expansion.

For this direct connection, allow mcp.inerrata.ai in the environment's network settings. Keep the default package-registry domains if you will also install the daemon. See network access.

3. Verify a read

Start a new cloud session on the branch containing the configuration. Ask Claude to list the inerrata tools and search for a known topic using the returned tool schema. A connected server and a successful authenticated response establish recall access; an empty result can still be a successful query.

Hosted MCP alone does not observe edits, capture inline tags, or create a local code graph. For those capabilities, continue below. The two connections can coexist: inerrata is hosted; errata is local to the VM.

Run the daemon for capture

This path needs Node.js 22 or newer, npm, Bash, and curl in the cloud VM. The CLI installation guide covers versions and release channels.

1. Install the CLI in the cloud environment

Add this to the environment's setup script after selecting Node.js 22 or newer:

bash
set -eu
node -e 'if (Number(process.versions.node.split(".")[0]) < 22) throw new Error("errata requires Node.js 22 or newer")'
npm install -g @inerrata-corporation/errata
errata --version

Keep authentication and consent out of this script. The environment cache retains installed files, but not running processes. The MCP launcher below starts the daemon per session. See environment caching.

2. Prepare the repository hooks in Linux

In a Linux or WSL checkout of the repository, with the CLI installed, run:

sh
errata init --no-login

Review the generated .claude/settings.json, .mcp.json, and managed instructions in CLAUDE.md. Preserve unrelated configuration. The installer adds hooks for context injection and capture, as described in Connect your agent.

Generate these files in Linux: Windows hook commands will not run in the cloud VM. The generated MCP entry also contains absolute paths from the installation machine; replace only its errata entry with the launcher in the next step before sharing it. These instructions target Linux cloud execution; keep a working Windows configuration appropriate to its own environment.

Keep .errata/ runtime state and credentials out of version control. --no-login skips sign-in; it does not clear existing credentials or consent.

3. Initialize each VM before starting local MCP

Create .claude/errata-cloud-mcp.sh in the repository:

bash
#!/usr/bin/env bash
set -eu

cd "${CLAUDE_PROJECT_DIR:?Claude project directory is required}"
# Preserve stdin and stdout for the MCP protocol.
errata init --no-login --skip-hooks </dev/null >&2
exec errata mcp

Use this errata entry in .mcp.json, preserving other servers:

json
{
  "mcpServers": {
    "errata": {
      "command": "bash",
      "args": ["${CLAUDE_PROJECT_DIR:-.}/.claude/errata-cloud-mcp.sh"]
    }
  }
}

The wrapper initializes this checkout before starting MCP. --skip-hooks preserves the committed hook configuration; errata mcp starts or attaches to the background daemon. It needs errata on the session's PATH, not an absolute path from another machine. Bash reads the script directly, so no executable-bit change is required.

Launch from the repository root. The :-. fallback resolves the script there when the variable is absent during configuration expansion; Claude supplies CLAUDE_PROJECT_DIR to the spawned process. See Claude's stdio MCP setup.

Commit the script, reviewed hooks, MCP configuration, and managed CLAUDE.md instructions. Start a cloud session from that branch. If MCP connects after the initial SessionStart hook, ask Claude to read .errata/context.md once the daemon is ready; later prompt hooks refresh context.

4. Verify local capture

Ask Claude to run these commands in the repository:

sh
errata status
errata privacy
errata search "a real symbol from this repository"

Confirm the expected workspace and a running daemon. If local MCP did not start it, run errata start, inspect its result, and retry the MCP connection. Indexing may take time.

Next, follow Your first session with a real issue. Ask Claude to read the maintained capture instructions, state the observed problem and fix, and verify the lesson in errata g problems and search. Installed hooks and visible tools do not prove capture.

Enable contribution when ready

Allow the production gateway mcp.inerrata.ai and the sign-in service console.inerrata.ai in the VM's network settings. In the running cloud session:

sh
errata login

Approve the verification URL and code in your own browser. Current builds use device-bridged sign-in by default; check errata --help for the installed version. For the explicit headless flow, obtain an installation UUID from Console Connect and run errata login --device --installation <uuid>. Replace the placeholder. Do not use a localhost browser callback across machines.

Check identity and consent before enabling uploads:

sh
errata whoami
errata status
errata privacy

Confirm the intended organization and project. If linking is missing or wrong, follow Team workspaces and the installed errata link flow before contributing. Review Privacy and consent, then opt in if desired:

sh
errata consent sync on
errata sync now
errata doctor

Read the results. consent-off, rejected writes, or a pending outbox do not establish successful sharing. A bare API key, including errata login --token, supports reads but does not grant the daemon identity required for graph writes.

Session lifetime and troubleshooting

Treat the VM's graph and credentials as session-local. A fresh VM must initialize and authenticate again. Do not bake a logged-in daemon identity into a shared environment image. Before ending a session, sync intended contributions and inspect the outcome; unsynced local lessons can be lost when the VM is discarded. Cloud contributions are not a backup of the entire local graph.

Symptom Check
Hosted tools are missing Committed .mcp.json, selected branch, single-repository session, and MCP connection status
Hosted reads return 401 or 403 Credential, account access, and intended organization; never print the key to diagnose it
Requests time out Allowed domains and proxy errors; this is separate from authentication
errata is not found Setup-script result, Node version, and CLI availability on the MCP process's PATH
Hooks reference cmd or Windows drive paths Regenerate in Linux and use the portable MCP launcher above
Tools work but no lessons appear errata status, loaded hooks, transcript compatibility, and the first-session capture check
Writes report client_kind_denied Use daemon sign-in rather than an API key
Writes report consent_required Check local sync consent and the selected installation's approval in Console
A new session has no old local lessons Verify prior sync; each VM has its own local graph

For further checks, see Troubleshooting. If you want to keep the daemon on your own computer while using a browser interface, investigate Claude Remote Control, which runs the session on that computer.