VERAX runs on your own machine — the client starts it, so there is no endpoint to ping. 653 installs a week from npm. Last commit 29 Oct 2026.
The body an agent asks before it acts: decide, approve, and keep a signed record on your machine.
We read the source, 4 d ago · rules 995398eba69f
Things with no honest explanation: a promise that contradicts the code, code that runs at install time while hiding what it does, data leaving the machine.
sys.setuid(uid);
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
const out = spawnSync(process.execPath, [checker], {
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
Code changes quietly between releases, and nobody reads the diff of a dependency. We do, on every release — watch VERAX and you get told the day something new turns up.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add verax -e 'VERAX_ISSUER=<VERAX_ISSUER>' -e 'VERAX_JWKS_URL=<VERAX_JWKS_URL>' -e 'VERAX_AUDIENCE=<VERAX_AUDIENCE>' -e 'VERAX_STATE_DIR=<VERAX_STATE_DIR>' -e 'VERAX_POLICY_FILE=<VERAX_POLICY_FILE>' -- npx -y @verax-ai/body
{
"mcpServers": {
"verax": {
"command": "npx",
"args": [
"-y",
"@verax-ai/body"
],
"env": {
"VERAX_AUDIENCE": "<VERAX_AUDIENCE>",
"VERAX_ISSUER": "<VERAX_ISSUER>",
"VERAX_JWKS_URL": "<VERAX_JWKS_URL>",
"VERAX_POLICY_FILE": "<VERAX_POLICY_FILE>",
"VERAX_STATE_DIR": "<VERAX_STATE_DIR>"
}
}
}
}
[mcp_servers.verax]
command = "npx"
args = ["-y", "@verax-ai/body"]
env = { VERAX_ISSUER = "<VERAX_ISSUER>", VERAX_JWKS_URL = "<VERAX_JWKS_URL>", VERAX_AUDIENCE = "<VERAX_AUDIENCE>", VERAX_STATE_DIR = "<VERAX_STATE_DIR>", VERAX_POLICY_FILE = "<VERAX_POLICY_FILE>" }
{
"mcpServers": {
"verax": {
"command": "npx",
"args": [
"-y",
"@verax-ai/body"
],
"env": {
"VERAX_AUDIENCE": "<VERAX_AUDIENCE>",
"VERAX_ISSUER": "<VERAX_ISSUER>",
"VERAX_JWKS_URL": "<VERAX_JWKS_URL>",
"VERAX_POLICY_FILE": "<VERAX_POLICY_FILE>",
"VERAX_STATE_DIR": "<VERAX_STATE_DIR>"
}
}
}
}
{
"servers": {
"verax": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@verax-ai/body"
],
"env": {
"VERAX_AUDIENCE": "<VERAX_AUDIENCE>",
"VERAX_ISSUER": "<VERAX_ISSUER>",
"VERAX_JWKS_URL": "<VERAX_JWKS_URL>",
"VERAX_POLICY_FILE": "<VERAX_POLICY_FILE>",
"VERAX_STATE_DIR": "<VERAX_STATE_DIR>"
}
}
}
}
Put your own values in place of
<VERAX_ISSUER> (Issuer the agent's token must carry. The body refuses to start without one; `verax doctor` names what is missing), <VERAX_JWKS_URL> (Where the body fetches the keys that verify that token), <VERAX_AUDIENCE> (Audience the token must name, so a token minted for something else is refused), <VERAX_STATE_DIR> (Directory the ledger, keys and approvals live in. It stays on this machine), <VERAX_POLICY_FILE> (Policy the gate applies. @verax-ai/proxy ships policy/default.json, which denies what it does not name).
The author’s registry entry marks them as required.
Optional settings from the registry entry, left out of the block above:
VERAX_BIND (host:port the body listens on. Anything but loopback needs VERAX_TLS_TERMINATED=1), VERAX_INVENTORY_FILE (Roster document the body serves; the format is @verax-ai/inventory).
Ask a human before your agent acts: approval requests decided on a phone.
Choose the safest next action after an API, MCP, or agent failure before retrying.
Puts Approve/Deny on your phone before an agent acts, and waits for your fingerprint.
Your agent asks before it acts, so the same real-world action is attempted at most once.
Seal every payment your AI agent makes as a signed record, on your own machine, with your key.
Govern your AI coding agent: frame the work, review the changes, keep a signed decision record.
The record layer for the machine age: counter-signed receipts and agent action records.
Your agent asks you before it acts. You answer with one tap on your phone. Human-in-the-loop.
Answers built from our own checks of this server.