Install · connect your agent
Connect your agent through the Lyhna MCP adapter.
Lyhna rides in the tool path your agent already uses, witnesses the calls, and renders the AI Work Receipt — locally, with your own keys, models, and tools. Here's how to wire it up, and exactly what works today.
Install by agent
Paste this into your MCP-capable agent (Claude Code, Cursor, Codex…). It shows you a receipt now, connects your agent through the Lyhna MCP adapter so your calls are witnessed, and points to the guided flow for your first claimed-vs-witnessed capsule. It's a multi-step setup — your agent will stop and ask you for anything it can't do itself.
Help me set up Lyhna so I can see an AI Work Receipt for my agent's work. Lyhna is an MCP
adapter that witnesses the tool calls routed through it, locally, using my own keys and tools.
This is a guided, multi-step setup: do what you can in my terminal, and STOP to ask me for
anything you can't (a client restart, a signing key). Never fake a result or claim a step
worked if it didn't.
STEP 1 — Show me a real receipt right now (no setup, works offline):
git clone https://github.com/Lyhna-ai/lyhna-witness && cd lyhna-witness
node src/cli.mjs demo/live-loop-witness-input.json ./receipt --okf --pam
Open ./receipt/CAPSULE.md and walk me through the verdict — that's the capsule shape.
STEP 2 — Connect MY agent through the adapter so its calls are witnessed (stdio):
Add a server to my MCP client config (.mcp.json) that wraps an MCP server I already use.
command = "npx", args = ["-y","@lyhna/mcp","stdio"], and point it at my server with
LYHNA_PROXY_UPSTREAM_COMMAND / LYHNA_PROXY_UPSTREAM_ARGS_JSON, plus LYHNA_PROXY_LOOP_ID and
LYHNA_PROXY_GOAL so the calls form a sealed loop (without those two the adapter runs with the loop
disabled). LYHNA_PROXY_BIND_MODE=demo needs no key and makes no Lyhna-hosted call. Then tell me to
reload my MCP client. Now my calls to that server route through Lyhna and earn a sealed receipt chain.
(This connects and witnesses. It does NOT by itself produce the rendered
claimed-vs-witnessed capsule — that's Step 3.)
STEP 3 — My first claimed-vs-witnessed capsule (guided, standing service):
Comparing what I CLAIMED to what was WITNESSED needs the adapter's standing service: claim
capture (LYHNA_PROXY_CLAIM_CAPTURE=1) plus a control loop you open and close. Follow the
adapter's QUICKSTART "Path B": start the standing adapter, open a loop, record a claim
(record_claim) and make a tool call, close/seal the loop, then export-pack to get a
witness-input.json. Render it with:
node src/cli.mjs <witness-input.json> ./receipt --okf --pam
Use a signing key (LYHNA_API_KEY) for signed receipts; demo mode works unsigned with no key. Tell
me exactly which of these you need me to do.
Two surfaces, on purpose: quick-connect (Step 2) witnesses your calls; the rendered claimed-vs-witnessed capsule (Step 3) is the adapter's standing-service flow — the guided QUICKSTART “Path B”. Lyhna only witnesses calls routed through it; anything else isn't on the receipt.
What actually works today
- The adapter is on npm. npx -y @lyhna/mcp wraps an MCP server you already use. No rewrite, no new platform — your agents keep your keys, models, and tools.
- Local by default. LYHNA_PROXY_BIND_MODE=demo decides locally and sends nothing to Lyhna — the adapter makes no hosted call (your upstream tools still do their own network I/O). Same flow, same artifacts; receipts are deliberately unsigned.
- Receipts and capsules are real. The witness CLI renders the readable receipt, the Work Receipt Capsule, and the OKF / PAM-shaped exports from a witnessed run.
- The receipt renderer isn't on npm yet. The witness CLI (node src/cli.mjs) runs from a source clone for now — packaging it into Lyhna Desktop is the product direction.
- Signed receipts are an optional add-on — and they leave your machine. A LYHNA_API_KEY doesn't just add cryptographic proof refs: signed mode routes each tool call through Lyhna's hosted witness service to make its decision, so your routed tool arguments leave your machine. Local unsigned receipts (demo mode) decide locally, need no account, and send nothing to Lyhna — choose per how sensitive your tool arguments are.
- No desktop download, no plugin store, no one-command install yet. Setup is the guided sequence above. We won't pretend otherwise.
- Cloud-hosted agents may need a bridge. An agent that can't route its tool calls through a local adapter would need a remote/tunnel bridge — that's later, not today.
How you'll know it's working
Four states tell you exactly where you are.
-
🟢 Connected
Your agent's calls to the witnessed server are routing through Lyhna and being recorded.
-
🟡 Waiting for first witnessed tool call
Connected, but no call has crossed the boundary yet. Make one test call to see a receipt.
-
🟢 Test receipt created
Lyhna rendered an AI Work Receipt Capsule — the bundled sample (Step 1) or your own run (Step 3). Open CAPSULE.md and read the verdict.
-
🔴 Not connected · outside the witness path
The agent is calling tools that don't route through Lyhna. Those calls aren't witnessed — only what's routed through the adapter appears on a receipt.
Where this is going
The fastest way to judge Lyhna is to see the proof yourself: run the demo, copy the receipt, and audit it with your own AI. The same loop runs against your real tool calls today through the MCP adapter. Lyhna Desktop packages that into a local app — start the adapter, route your agents, and watch receipts land in a local inbox you own.
Lyhna Desktop is buy once, use with all your agents — see the ownership model. No numbers are published yet, and there's nothing to buy on this page.