Quickstart · three commands, no account
Running gateway in 3 commands. Signed receipts on every call you route through it.
Run the SynOI Gateway locally, then govern any action, an API call, a payment, a device, an integration, or an LLM call, with one gate() call from @synoi/sdk. Already routing LLM traffic? Skip the SDK and just repoint your Anthropic or OpenAI client at the gateway. Either way you get cache, audit, governance, and signed Decision Receipts. Free, local, no signup required. When you're ready for multi-device or cloud sync, add a license key; same gateway, same code.
The Gateway is GAP conformant (L1-L4) against the open conformance suite. Every receipt this quickstart produces is a valid GAP object.
STEP 01
Bootstrap · npx @synoi/start init
Drops a docker-compose.yml + .env (with a fresh admin key, mode 0600) into ./synoi/. Requires Docker. No account, no payment, no terminal jiu-jitsu.
npx @synoi/start init cd synoi docker compose up # Gateway live on http://localhost:3000 # Dashboard: http://localhost:3000/dashboard # Admin key: in synoi/.env
STEP 02
Govern any action you wrap: gate() from @synoi/sdk
Set SYNOI_GATEWAY_URL and wrap any action, an API call, a payment, a device, an integration, or an LLM call, with one function. Every call gets a policy decision and a signed receipt. This is the general path.
export SYNOI_GATEWAY_URL=http://localhost:3000
import { gate } from '@synoi/sdk'
const result = await gate(
{ tool_name: 'payments.charge', tool_input: { amount: 4200 } },
() => charge(),
)STEP 02b
If you're governing LLM calls: zero-code alternative
Already routing traffic through an Anthropic or OpenAI-shaped client? Skip the SDK and just repoint your base URL. Your LLM provider key passes through per-request, never persisted.
# Claude Code (Anthropic-protocol) export ANTHROPIC_BASE_URL=http://localhost:3000/anthropic # Cursor / Aider / OpenAI SDK (OpenAI-protocol) export OPENAI_API_BASE=http://localhost:3000/v1
STEP 03
Make a call · receive a signed receipt
Every gateway response includes an X-SynOI-Receipt-Id header. Verify it cryptographically with one command; the receipt-ID form fetches the receipt and key from the gateway (internally consistent). Check an exported bundle to send nothing to us.
# Smoke-test the gateway
curl http://localhost:3000/anthropic/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-opus-4-7","max_tokens":16,"messages":[{"role":"user","content":"hi"}]}'
# Response header: X-SynOI-Receipt-Id: rcpt_abc_123
# Verify it (third party; fetches receipt + key from the gateway):
npx @synoi/verify rcpt_abc_123STEP 04
Upgrade (optional) · hosted + multi-device + cloud sync
When you want to skip the docker compose step or share a license across devices, subscribe at app.synoi.systems. Hosted gateway at gateway.synoi.systems: same code, no install, $19/mo Personal.
# Hosted (zero install - paid plan) export ANTHROPIC_BASE_URL=https://gateway.synoi.systems/anthropic export SYNOI_LICENSE_KEY=<from your activation email> # OR local + license (cloud sync features unlock) echo "SYNOI_LICENSE_KEY=<your key>" >> synoi/.env docker compose restart
What you have, after five minutes
Signed Decision Receipts on every call
Hybrid-signed (Ed25519 + ML-DSA-65), publicly verifiable, exportable as CI artifact.
Semantic cache hits
Average hit rates vary by workload; P99 latency overhead under 2 ms on cached paths (measured internally).
Tier-aware routing
Trivial queries route to free Groq tier. Hard ones go to your premium model.
Per-tenant risk policy
Allow / deny / require-approval. Evaluated in ~1 ms (measured internally).
HITL surface
Slack, SMS, desktop, mobile (coming). Approval round-trip signed.
BYO keys, never persisted
Your provider key forwarded once, never written to any database. Asserted in CI.