RepoOps
Open the app
Getting started

CLI reference

Every repoops command, 34 of them, generated from the registry the binary reads, and how to reach them from any terminal. A check in CI fails the build when a command ships without an entry here, so the list below is the list that ships.

Last updated

1

How to

Node on your PATH, for npm and npx. The commands themselves run under the RepoOps desktop app's install.

  1. Install the app.

    Follow Install, or run npx repoops: it signs you in, then on Windows downloads the signed installer, checks it against the release feed and launches it. On macOS and Linux it opens your build in the browser.

  2. Put repoops on your PATH, or go through npx.

    The repoops package on npm is a front door: it finds your installed app and hands it your arguments. Install it once with npm i -g repoops and type repoops <command>, or prefix any command with npx.

    repoops help          # the same list as this page
    npx repoops doctor    # or through npx, same commands
  3. Sign in once when a command asks.

    init, run and bench --contribute ask for a one-time, free sign-in that opens repoops.ai in your browser; the token is cached so later runs need no browser. In CI or Docker, set REPOOPS_AUTH_TOKEN and no browser opens. A command marked local only below never talks to a server.

  4. Find the command, then ask it for its flags.

    The full list is under Every command below. Run a command with --help for its full set of flags: the front door hands the flag to the app, so repoops mcp-scan --help prints the scanner's help, not this list.

2

Use cases

A tab is empty and you cannot tell why

Situation
You tracked a repository, but its brain tab shows nothing, and you cannot tell whether the repository or the server is at fault.
You do
Run repoops doctor in the repository's folder, or pass the folder: repoops doctor <dir>.
You see
Doctor checks the repository's brain and its wiring into the dashboard, and names what is missing.

Check your MCP servers before you install anything

Situation
You want to know whether a configured MCP server's tool descriptions changed after you approved them, on a machine with no RepoOps app.
You do
Run npx repoops mcp-scan. With no app installed, the front door signs you in, downloads the command bundle, checks its sha256 and caches it for the version.
You see
The scan reads the MCP servers configured on this machine and reports definition drift. It runs locally, and later runs work offline from the cached bundle.
3

Expected outcome

Workedrepoops help prints the same groups and commands as the list below.
Workedrepoops <command> --help prints that command's own flags.
WorkedAfter the first sign-in, init and run start without opening a browser.
Did not workThe terminal says the command runs from the installed app, and no install was found.

Next step: The front door could not find the app, so it starts the install. Finish it, then run the same command again. Only adopt, connect, mcp-scan and readiness run with no app.

Did not workA CI job stops waiting for a browser sign-in.

Next step: Set REPOOPS_AUTH_TOKEN in the job's environment so the command skips the browser.

Did not workThe bundle command reports it is offline.

Next step: The first run of a bundle command needs a connection to download it. Connect once; after that it runs offline.

4

What else to consider

Every command

34 commands in 7 groups, rendered from the registry repoops help reads. Each card lists the flags worth knowing before you type the command, not all of them.

Setup

Install a brain, track a repo, start the dashboard, bind to a team.

run

Boots the dashboard and opens the sign-in gate, then serves http://localhost:4000. This is the command the desktop app runs for you; type it when you want the server in a terminal you control.

repoops run

Start the dashboard (sign-in gate + http://localhost:4000)

init

Writes a .claude/brain/ into a repo that has none. The scaffolder reads the same canonical tab registry the dashboard renders from, so a fresh brain matches what the dashboard expects. Hand the generated brain-bootstrap-prompt.md to your coding agent to fill the stubs with real content.

repoops init [dir]

Scaffold a .claude/brain/ into a repo (default: current dir)

add

Tracks a repo in the RepoOps you are running, so its brain, docs, and telemetry appear alongside everything else you track. With no app running, it writes the store the app opens next. When an app is listening but does not answer, it stops and names the port instead.

repoops add [path]

Track a repo (default: current dir)

repoops add [path] --server <url>

Track it in the app at this address only

remove
also: repoops rm

Stops tracking a repo. It leaves the repo and its brain on disk; only the dashboard's registration goes away.

repoops remove <id|path>

Stop tracking a repo

doctor

Checks a repo's brain and its wiring into the dashboard, and names what is missing. Run it when a tab is empty and you cannot tell whether the fault is the repo or the server.

repoops doctor [dir]

Check a repo's brain + dashboard wiring

native-host

Registers the browser capture extension's native messaging host with Chrome and Edge for this user, so captured sessions reach the local RepoOps stores over stdio and never over a port. The desktop app does this at startup; this is the same step for a source install, and the way to see or undo it.

repoops native-host register --extension-id <id> [--launcher <path>]

Write the host manifest for Chrome and Edge (and the Windows registry value) allowing the given extension id; the launcher defaults to node on scripts/native-host.mjs (local only)

repoops native-host unregister

Remove the host manifests and registry values (local only)

repoops native-host status

Print where the manifests live for this platform (local only)

connect

Binds this install to a team using a one-time code from /team/connect. Until you run it, the install is a solo one and nothing leaves the machine.

repoops connect <code>

Bind this install to a team with a one-time connect code (from /team/connect)

repoops connect --me [--url <mcp-url>]

Wire your own portable brain into this repo's .mcp.json

repoops connect --local

Register the installed app's brain MCP server in this repo's .mcp.json (stdio, the app's own runtime)

Attribution

Which session, prompt, or agent produced a line, and what that measures out to.

blame

Answers who wrote a line, where the answer includes the agent. Given a file it reports the session and prompt behind each line; given a commit it reports the agent and human split.

repoops blame <file>

Which session/prompt wrote a line, or a commit's agent/human split

bench

Runs the accountability metrics against this repo and prints the real numbers, not a sample. It reads local evidence only, so the figures are yours and nothing is uploaded. The published figures on /accountability-benchmark come from this command run against RepoOps itself.

repoops bench

Run the real accountability metrics against this repo (local only)

import

Reads a Git AI refs/notes/ai note and maps it into a RepoOps proposal, so attribution captured by another tool lands in the same ledger. Only the git-ai source is wired.

repoops import git-ai --dry-run

Map a Git AI refs/notes/ai note into a RepoOps proposal (local only)

Memory and skills

Hold agent memory and agent capabilities to a signed, sanctioned state, and rewind the tree when one goes wrong.

memory

Agent memory is an input to every run, which makes it worth poisoning. Sign records the state you sanctioned; verify checks the current .claude/ brain and CLAUDE.md against those signatures and flags what changed without your say-so.

repoops memory verify

Verify agent memory (.claude/ brain + CLAUDE.md) against its sanctioned signatures; flags poisoning candidates (local only)

repoops memory sign

Record the sanctioned state of agent memory (local only)

skills

The same signed-state check, applied to what your skills and subagents are allowed to do. Sign records each capability manifest; verify reports drift from it.

repoops skills verify

Verify each skill / subagent against its signed capability manifest; flags drift (local only)

repoops skills sign

Record the sanctioned capability manifests of your skills + subagents (local only)

ask

One question over a brain, answered from the running dashboard with the files it drew on. `--me` asks your own portable brain instead of this repo's, which is the same scope switch `connect --me` makes. The dashboard has to be running; this is a client, not a second retrieval engine.

repoops ask "<question>" [--me] [--repo <id>] [--k <n>]

Ask a brain one question and print the answer with citations

chat

The same ask, in a loop. Stateless per turn on purpose: each line is one question, so nothing is remembered between them that the brain does not already hold, and a dashboard restart mid-session costs you a question rather than a conversation.

repoops chat [--me] [--repo <id>] [--k <n>]

Ask a brain repeatedly; type exit to leave

checkpoint

Snapshot and restore the working tree without a commit and without moving HEAD. Use it before letting an agent make a large change, so undoing it costs one command rather than a rebase.

repoops checkpoint <cmd>

Snapshot, list, or restore a working-tree checkpoint (create|list|restore)

Security

What the agent can reach, what it is allowed to reach, and how it behaves when something tries to steer it.

nhi

Inventories the long-lived secrets a non-human identity on this machine can read, and reports which are over-exposed for what the agent actually does. Discovery only: it reads, it does not rotate.

repoops nhi

Inventory the long-lived secrets your agent can see, with an over-exposure report (local only)

secrets

The secrets manager on the command line. Run starts a command with the vault's values for this repo's .env variables in its environment, so local work needs no plaintext .env file. No value is written to disk or printed. Scan, export and backup come with their slices.

repoops secrets run [--repo <id>] [--env-file <path>] [--keep-env] -- <cmd> [args...]

Start a command with this repo's secrets from the vault in its environment; no value touches disk (local only)

broker

A loopback-only credential broker, so the agent holds a short-lived task-scoped token instead of your raw key. Opt in and it mints on demand; leave it off and nothing listens.

repoops broker

Local credential broker: status, or mint a short-lived task-scoped token so the agent never holds the raw key (opt-in, loopback-only)

injection-eval

Scores this repo's resistance to prompt injection by running a probe corpus against your agent configuration, and treats the score as an eval bar: it exits non-zero when the repo does not clear it, so CI can hold the line.

repoops injection-eval

Score this repo's injection resistance (probe corpus vs agent config) as an eval bar; exits 1 when it does not clear (local only)

readiness

One day-one score out of 100 from local discovery plus the advisory detectors, with the top five fixes named. The starting point when you want to know where a repo stands before picking a specific scan.

repoops readiness

Day-one security readiness score (0-100) + top-5 fixes from local discovery + advisory detectors (local only)

egress-policy

Shows or edits the pinned domains and IPs a repo's sandbox may reach. An agent that cannot resolve an unexpected host cannot quietly exfiltrate to one.

repoops egress-policy

Show or set a repo's sandbox egress allowlist (pinned domains/IPs); add/remove <host> (local only)

mcp-scan

Reads the MCP servers you have configured and reports definition drift, the tool-poisoning case where a server's tool description changes under you after you approved it.

repoops mcp-scan

Scan configured MCP servers for tool-poisoning definition drift (local only)

mcp-allow

Pins the MCP servers you approve and lists what mcp-scan has flagged against those pins.

repoops mcp-allow

Pin the MCP servers you approve; list what is flagged (local only)

redteam-mcp

Attacks your own MCP setup with a library of tool-poisoning attacks and reports which ones land. Where mcp-scan watches for drift, this one goes looking.

repoops redteam-mcp

Red team your own MCP setup against a tool-poisoning attack library (local only)

Attestation

Verify an AI-authorship record with no server and no account.

verify

Checks an AI-authorship attestation offline: no server, no network, no account. A tampered or unknown record fails honestly, and the verdict is the same one the dashboard page gives. --key is the install's public verification material, never a private signing key.

repoops verify <record>

Verify an attestation OFFLINE (no server, no network)

conform

Grades a third-party emitter's attestation against the v0.2 conformance suite, check by check (graded band, honest-null cost, digest, signature). --key is optional; without it the signature check is skipped rather than faked.

repoops conform <record>

Check an attestation against the v0.2 conformance suite

go-live

Reports the Wave B public-claims preconditions and which of them this install currently meets.

repoops go-live

Report the Wave B public-claims preconditions (CNA.31)

seal-incident

Seals an AI incident case, or an evidence pack, to Evidence Rooms (which also publishes the INCIDENT record on aisourceoftruth.com) or straight to the registry. Sends the bundle's hash, the attribution handles (commit, PR, session, prompt hash, model, a developer handle) and the agent trace; never a name, an email or prompt text. Stores the Rooms case id, registry digest and URL on the case. Off until the Rooms or registry settings are set; --dry-run prints what would leave.

repoops seal-incident <caseId>

Seal an incident to Evidence Rooms or aisourceoftruth.com

aisot-publish

Publishes our own public facts to aisourceoftruth.com as the publisher repoops: one provenance record per merged PR in a public sellingascode repository (PR URL, the linked Claude Code session id, the opening prompt's hash, the approving reviewer) and the transparency log head, refusing a rollback or a fork. Never customer repositories, private PRs, telemetry or prompt text. Off until AISOT_PUBLISH_MODE is set; records wait for approval (--list, --approve) until a kind is set to auto.

repoops aisot-publish

Publish merged-PR provenance and log checkpoints to aisourceoftruth.com

Capture and fleet

Get session evidence off a machine and into the dashboard, on one install or across a fleet.

sensor

The capture pass on a bound install: read new session evidence, buffer it, push it. Run it once, or run it as a daemon that repeats on an interval. With --otlp-receive the daemon also hosts a loopback OTLP/HTTP receiver, so OTLP-emitting tools can push into a bare Sensor with no other agent installed.

repoops sensor --once

Passive capture + buffered push on a bound install (--enroll <secret> for headless fleet)

repoops sensor --watch

Long-running daemon: repeat the capture+push pass every --interval <sec> (default 60)

repoops sensor --watch --otlp-receive

Also host a localhost OTLP/HTTP receiver (127.0.0.1, --otlp-port <n>, default 4318) so OTLP tools push into a bare Sensor

tap

An optional in-path tee for capture. The Sensor is the supported default and this is an unsupported beta; reach for it only when a passive pass genuinely cannot see what you need.

repoops tap --help

The optional in-path tee (UNSUPPORTED BETA; the Sensor is the default capture)

enroll-secret

Mints the enrollment secret a headless install passes to `sensor --enroll`, so a fleet machine can bind with no browser. Owner or admin only.

repoops enroll-secret mint

Mint a fleet enrollment secret (owner/admin; for headless sensor --enroll)

sources

Scaffolds a production evidence source in a RepoOps source checkout: a manifest skeleton, a sample fixture and a conformance test. The manifest fails the conformance kit until its field mapping is filled in, and its connect steps are what the Connectors page shows.

repoops sources new <id>

Scaffold an evidence source manifest, fixture and conformance test; takes --mode, --auth, --name, --dir

Engagements

Scaffold the deliverables of a forward-deployed engagement.

fde

Scaffolds one of the named forward-deployed engagement deliverables. The mcp kind takes --connector, --auth, and --no-eval; the others take the name alone.

repoops fde new <kind> <name>

Scaffold an FDE deliverable (mcp|subagent|skill|auth|eval); mcp takes --connector, --auth, --no-eval

Four commands run with no app installed

adopt, connect, mcp-scan and readiness work from a bare npx repoops: the front door downloads the auth-gated command bundle once after sign-in, checks its sha256, caches it per version and runs it against the repository you are in. The gate is a verified email, never a plan check. Every other command needs the app, and the front door says so before it starts the install.

Where to read more

For what the numbers from repoops bench mean, see the accountability benchmark. For what the security commands defend against, see AI Security. For calls over HTTP rather than a terminal, see the hosted API reference.