Skip to content

Developers

Verify it, call it, read the data

Everything a reviewer or an integrator needs, kept apart from the holder dashboard. Nothing on this page moves funds.

Verification tools

  • Evidence pack and call verifierRe-check KEYHOLE on mainnet with no wallet: public RPC and attestation reads, a 37-check call verifier, tamper tests, and the lien lookup.
  • Verification pathSeven checks from the contract to the enclave, each with the command or the page that runs it.
  • Attack boardAttempts to move a key's value without the holder, with the refusal the enclave returned for each.
  • Source archiveOne tarball cut from one commit, with its sha256, so the code you read is the code that was published.
  • AtlasEvery chain with a record, with the transaction, dry run or settled order behind it.
  • Holder checkProve you hold a key with a read-only signature. No money moves.
  • Ask privatelyAsk a question about KEYHOLE and get an answer from an attested model.
  • Demo vaultA read-only replay of a real mainnet session.

Your own calls (balance reads, swaps, withdrawals) are verified from My proof in the dashboard.

Enclave and attestation

Reading the passive health check…

Hardware
Intel TDX, attested through OutLayer
Live worker build (OutLayer registry)
Reading the registry…
Publish transaction (repository pin)
GXZtL6hgscWU…alt ↗
Keys contract
keyhole-devmo.nearalt ↗

Each call carries a TDX quote that names the worker build it ran. The hash above is read from the OutLayer registry when the page loads, so a newer publish shows up without a site update. Re-check any call with the verifier above or with ./verify.sh <call_id>.

Agent API demo, quotas and holder caps

Agent API · holder caps as policy

Demo · one shared NEAR Intents agent, $0 balance. Dry quotes only: it shows the policy the enclave would install for a holder, nothing is moved.

KEYHOLE tier caps are written into a NEAR Intents Agent API policy, so the agent's own wallet refuses what the key would refuse. Demo partner deployment on mainnet; quotes are dry and the agent holds no funds.

APIs and MCP

MethodPathWhat it does
GET/api/healthEnclave availability, read passively. It does not spend compute.
GET/api/pricesPublic price book used for the USD lines.
GET/api/tokensThe token list NEAR Intents can swap.
POST/api/oneclickA dry 1Click quote. Nothing is signed and nothing moves.
GET/api/agent?r=network|quotas|policyAgent API reads, through the server key. Swaps there are dry quotes only.
POST/api/workerThe signed worker call {op, auth}. Every op is authorised by the holder's own signature or session.

The CLI and the MCP server use the same signed worker calls. Your key stays on your machine; only signatures are sent.

cd cli && npm ci
npx tsx src/cli.ts help      # the command list
npm run mcp                  # the MCP server (stdio)

Full reference: cli/README.md.

Commands

Check a call against the published build, from a clone of the repository:

./verify.sh <call_id>            # attestation, wasm hash and FastFS bytes
./verify.sh <call_id> --rebuild  # also against your own rebuild

The claims checker compares every claim in the README with a live read. Its commands, including the offline mode, are in VERIFY.md.

Raw data