An AI agent that runs on a permission you sign instead of your keys. Proofable checks every action outside the agent before it runs, the work can run on an isolated computer, and every run leaves a signed receipt anyone can verify offline.
The permission lives with Proofable, not with the runtime. Run the agent from your AI tools, a hosted runtime or CI, and the same limits hold in each one. Revoke it once and every copy stops.
Click Use this template for your own copy, or open it in Codespaces.
You need Node 20 or later and a Proofable account (free, with 500 credits a month). Create an access key under Profile, Account, Access keys and keep it in your shell.
npm install
export PROOFABLE_ACCESS_KEY=npk_...
npm run setup
npm run status
npm run job -- "Run the tests and report each exit code" --repo proofable/mcp
npm run verifysetup gives the agent its own key in .agent/ and signs its identity, then prints a link. Open the link, check the limits, and sign with your wallet. Commit agent.json afterwards. It holds the agent's public account. Each job is one hosted run paid from your credits.
The agent lives on Proofable. Its identity, its permission and its receipts are records any runtime reads, so there is nothing to deploy. Every runtime gets the same limits, and revoking the permission stops all of them at once. The agent's own key never leaves the machine that ran setup.
From any app, server or runtime, one call talks to the agent. The turn runs on Proofable as the agent, checks every tool call against the permission before it runs, and cites the records it read:
import { ProofableClient } from '@proofable/sdk';
const client = new ProofableClient({ apiKey: process.env.PROOFABLE_ACCESS_KEY });
const turn = await client.agentChat({
agentId: 'proofable-agent',
messages: [{ role: 'user', content: 'What did the last run find?' }],
});
console.log(turn.answer, turn.citations);Talk to your agent from any app covers the HTTP call, the events and the costs.
In your AI tools:
npx -y @proofable/sdk mount proofable-agent --apply claude--apply takes claude, cursor, codex, hermes, openclaw, or opencode; VS Code uses cursor.
From this repository, npm run job runs a task as the agent on an isolated computer, and npm run verify checks its receipt offline. Give each place you run it its own access key, so you can revoke one without the others.
Bring it as it is: a GitHub repository, an MCP server URL, an A2A agent card, or a package. Secrets stay out of the import.
npx -y @proofable/sdk auth --oauth
npx -y @proofable/sdk import <repository, URL, or folder>
npx -y @proofable/sdk mount <agentId> --apply claudeimport prints a link to register the agent's identity.
| Command | What it does |
|---|---|
setup |
Creates the agent's key and identity, then prints the permission link |
permit |
Prints the link again, to renew the permission or sign new limits |
status |
Shows the permission and which actions it allows or refuses |
job "<task>" |
Runs a task. --repo owner/name checks out a public repository on an isolated computer (--ref picks the commit); --computer asks for one without a repository. |
verify |
Checks the latest run's receipt and dispatch decision offline, with no network and no account. Pass a folder under runs/ to check another run. |
listing |
Saves an AI service listing that runs as this agent, as a draft. -- --publish puts it live. |
Edit agent.json, then run npm run setup.
| Field | Sets |
|---|---|
agentId, label, description, instructions |
Who the agent is and how it behaves |
permission.actions |
The only actions it may take; anything else is refused before it runs |
permission.expiresInDays |
When access ends. Leave it out and the permission has no end date until you revoke it. |
permission.maxSpend |
Spend cap in USDC base units (1000000 is 1 USDC); 0 for an agent that never pays |
listing |
The service buyers order: name, description, the repository input, and the prompt each order runs |
Add your access key as a repository secret named PROOFABLE_ACCESS_KEY. The Trust checks workflow runs Proofable's eight live permission cases and the prompt injection test on your account. It fails when an attack gets past the scoped permission. Run it from the Actions tab; it also runs on pull requests that change agent.json. It starts 12 hosted jobs.
- Docs
- Benchmark: Proofable's published results for these checks
- Prompt injection test
Apache-2.0