Getting StartedQuickstart

Protect the first action

The useful first loop is simple: create a project, register an agent, submit an intent, approve it, then verify the receipt before execution.

Create a project

Projects hold API keys, policy defaults, registered agents, and audit history.

Dashboard -> Projects -> New project

Register an agent

Name the automation and record the runtime that will submit protected actions.

Dashboard -> Agent setup -> Register agent

Pick a policy

Start with approval queue for medium risk, then require local proof for higher-risk actions.

policy: reviewer | quorum | stub_vinacfm_l3

Verify the receipt

The agent checks the signed receipt before it runs the action.

receipt_version: 2
params_hash: sha256:...
proof_tier: stub_vinacfm_l3

Submit the intent

Use the project key server-side. The request should include the exact action and enough context to hash the parameters.

curl https://api.silentauth.ai/api/intents \
  -H "Authorization: Bearer $SILENTAUTH_PROJECT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source_type": "agent",
    "source": "deployment-runner",
    "action": "production.deploy",
    "risk_tier": "high",
    "context": {
      "environment": "production",
      "version": "2026.06.18"
    },
    "proof_tier": "stub_vinacfm_l3"
  }'

Verify before execution

SilentAuth does not execute the action. Your agent or gateway verifies the receipt and then decides whether it is allowed to continue.

const result = await fetch("https://api.silentauth.ai/api/intents/permit/verify", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.SILENTAUTH_PROJECT_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    permit_token: receiptToken,
    action: "production.deploy",
    parameters: {
      environment: "production",
      version: "2026.06.18"
    }
  })
}).then((res) => res.json());

if (!result.valid) {
  throw new Error("SilentAuth receipt is not valid for this action");
}