HomeProductsThe harness CLI
The harness CLI · Apache-2.0

One command. No token in your repo.

Point a machine at a memory service that offers OAuth sign-in, in a single command. A browser opens, you sign in, and the CLI writes a working MCP config into the repository — with no credential in it. It is published on npm under Apache-2.0, and it is free.

> npx @bluenotelogic/harness init

Using ProofMEM? Claude Code, VS Code, Codex and Google Antigravity sign in to ProofMEM with Blue Note ID, so there is no key to paste. ProofMEM is this command’s default: it signs you in with Blue Note ID in the browser, writes the ProofMEM URL into .mcp.json with no token in it, and then revokes its short-lived session key. You can also add ProofMEM from a client’s own MCP settings; follow the setup steps in the ProofMEM docs.

The setup it replaces was four files and a rotation problem.

Wiring an agent host to a remote MCP server used to mean pasting the same bearer token into every config on the machine — and rotating it meant editing every one of them again.

By hand
  • Paste a bearer token into .mcp.json
  • Paste it again into ~/.claude.json
  • Paste it again into ~/.codex/config.toml
  • Paste it again into a VS Code roaming profile
  • Rotate the token → edit every one of them again
With the harness
  • Run one command
  • Sign in in the browser that opens, for a memory service that offers OAuth sign-in
  • The config is written with no token in it
  • Where the memory service offers OAuth sign-in, each host runs OAuth itself and keeps its own credential
  • Nothing in the repo to rotate, ever

A URL, and nothing else.

This is the file it writes for ProofMEM, its default. There is no token in it. That is the entire point of the tool — it is safe to commit, safe to hand a teammate, and there is nothing in it to rotate.

{ "mcpServers": { "proofmem": { "type": "http", "url": "https://proofmem.com/mcp" } } }

Where the memory service offers OAuth sign-in, OAuth-capable hosts — Claude Code, VS Code — discover authentication from the endpoint’s 401 and WWW-Authenticate response, run the flow themselves, and keep their own credential in their own keychain. Hosts that cannot do OAuth, such as CI, take a real credential via an explicit flag, and so does Codex when this CLI configures it (--codex); even then it lands in an environment file and is referenced by name, so it never touches the repository.

OAuth sign-in to ProofMEM is verified with Google Antigravity, Claude Code, VS Code and Codex, and this CLI signs in to proofmem.com too. Those clients can also sign in from their own MCP settings, using the setup steps in the ProofMEM docs; connect any other client with a ProofMEM API key.

A setup tool you can run on a machine you care about.

Tokenless

Safe to commit

The file it writes contains a URL and nothing else. Where the memory service offers OAuth sign-in, hosts discover authentication from the endpoint's 401 and WWW-Authenticate response, run the OAuth flow themselves, and store credentials in their own keychain.

Non-destructive

It will not clobber your config

Every write reads what is already on disk and replaces only the keys it owns. An unrelated MCP server survives untouched, as do your other top-level keys and any hooks you have set.

Careful

Broken JSON is left alone

If a config file is not valid JSON, the CLI reports it and leaves it exactly as it found it — because "it looked broken" is precisely when someone's half-finished hand edit is sitting in it.

Opt-in

No credential unless you ask

Without an explicit flag the CLI creates no credential and no database row. Minting is something you request, not a side effect of setup.

Headless

Works without a browser

For a memory service that offers OAuth sign-in, a device-code flow (RFC 8628) prints a short code and a URL to open on any other device — for SSH sessions and boxes with no display.

Reversible

Dry run first if you like

A dry run prints the full contents of every file it would touch and writes nothing, so you can see the change before you take it.

Every switch it takes.

--dry-runShow every file that would change, write nothing.
--url <base>Point at a self-hosted deployment instead of the default.
--dir <path>Repository to configure (default: the current directory).
--deviceDevice-code login, for headless boxes and SSH sessions.
--token <token>Use an existing token instead of logging in — the CI path.
--mint-tokenAlso mint a token for hosts that cannot do OAuth.
--codexConfigure Codex too (implies --mint-token).
--server-name <name>Override the MCP server key written into the config.
--no-browserPrint the login URL instead of opening a browser.

Requires Node 20 or newer.

Open setup, governed service.

The setup CLI is released. ProofMEM founding access is open, and ProofMEM connects by Blue Note ID sign-in from Claude Code, VS Code, Codex or Google Antigravity, or with an API key.

@bluenotelogic/harness · Apache-2.0

Published to npm and installable right now. Source under Apache-2.0.

Available now

ProofMEM hosted service

Standalone, scoped memory for agents at the production proofmem.com endpoint.

Founding access open

ProofMEM is the CLI’s default endpoint, and the CLI signs in to proofmem.com with Blue Note ID. You can also connect ProofMEM from your client’s own MCP settings: Claude Code, VS Code, Codex and Google Antigravity sign in with Blue Note ID, and any other client uses a ProofMEM API key. The setup steps are in the ProofMEM docs. Point the CLI at another memory service with --url if you operate an approved private deployment.

Try it on a scratch repository first.

Run it with a dry run and it will print every file it would touch without writing a byte.

View it on npm Explore ProofMEM Our open-source plans