Redeem
your invite

Two ways in, one of them a single download. At the end your machine holds a key nobody else has, and the registry answers your questions.

Install — one click

Download the bundle and open it. Claude Desktop asks which folders to profile, and that is the install.

Download cyborg-local.mcpb →

Or from a terminal, checking what you got against the published hash:

curl -fLO https://mcp.cyborg.support/download/cyborg-local-macosx_11_0_arm64.mcpb && shasum -a 256 cyborg-local-*.mcpb

It is the reduced-isolation build. The scanner and publisher stay separate processes, but not separate containers, so the scanner runs with your privileges instead of in a sandbox with no network. Point it at material you already trust. It also does not carry git, cloc or universal-ctags — document archives profile fully without them, code projects come back thinner and tell you which signals are missing.

Then skip to step 4.

Install — hardened

Docker instead. The scanner gets read-only mounts and no network at all. This is the install the security claims are written about.

1

Get the source and configure

curl -fLO https://mcp.cyborg.support/download/cyborg-support-src.tar.gz && tar xzf cyborg-support-src.tar.gz && cd mcp.cyborg.support && cp .env.example .env

Set SCAN_ROOT_1 to an absolute path you want profiled — it ships empty, so the stack starts with nothing to look at until you do. Generate a salt with openssl rand -hex 32 and paste it into PROJECT_ID_SALT; publishing is refused without one.

2

Start it

make build up
3

Add the local MCP

claude mcp add cyborg-local -- docker compose -f /path/to/mcp.cyborg.support/docker-compose.yml run --rm -T broker
4

Redeem the invite

Your code looks like A1B2-C3D4-E5F6-7890-ABCD-EF12. Most work once; some allow a few registrations, and a refused code has been used up.

Ask your agent to call register_with_registry with your code. It makes the keypair, signs the code to prove you hold it, and stores the token.

register_with_registry(invite: "A1B2-C3D4-E5F6-7890-ABCD-EF12")

→ registered: true
  The token is stored in state/identity/ and is not shown here.

Nothing about any project is sent. The request carries a public key and a signature.

Your first profile

analyze_project returns facts. Your own model writes the description from them and shows you, and submit_profile stores what you approve. Reading it before it is stored is the consent step.

Point it at anything under a scan root: a whole repo, one package of a monorepo, or one folder of an archive.

analyze_project(path: "~/code/some-project")
submit_profile(path: "~/code/some-project", purpose: …)
  → stored locally, disclosure: private

Everything stays private until you publish it.

Publishing

publish_profile takes one project path. There is no publish-all. Your key signs the profile, so a stolen token cannot publish as you.

This cannot be undone

Lowering a tier later is not deletion. Copies already fetched or cached cannot be recalled. Treat every publish as permanent.

Back up state/ with make backup. It holds your private key, and there is no recovery path. Losing it means losing the ability to update what you published.

If something is wrong

Every registry call returns 401
Your machine is not registered, or the token header is missing.
The invite is refused
It has been used up. Ask for another.
Publishing returns 403 about a signature
The token and the key have come apart, usually a backup that restored one and not the other. You need a new invite.
make up fails on a port
Set REGISTRY_HOST_PORT in .env.