Zerker AI Gateway: route, guard and charge

nader1 pts0 comments

Zerker Gateway — every agent call, through a door you own

Skip to content

Apache-2.0 · one Go binary · no server-held key<br>Every agent call, through a door you own.

Zerker sits in front of your agent traffic and turns raw calls — plain HTTP or<br>MCP — into something you can catalog, route, guard, watch, and charge for. You run<br>it. It never holds a key.

$ git clone https://github.com/zerkerlabs/gateway.git<br>$ cd gateway && make dev-auth

Copy

Quickstart →<br>Watch a request

No signup. No account. Nothing phones home.

ingress → gateway → upstream<br>simulated

forwarded 0<br>402 held 0<br>guard blocked 0

The wire

One request. Six checkpoints. Nothing skipped.

A call enters the gateway and leaves as an invocation record. Every stage below is<br>enforced in-process, at request time — not configured once and trusted forever.

01Authenticate401

02Resolvecatalog

03Guard403

04Price402

05Proxyhttp · mcp

06Capturerecord

Authenticate

The gateway refuses to start without an OIDC issuer and audience. Not a warning —<br>the process exits.

$ ZERKER_OIDC_ISSUER= make run<br>fatal: OIDC issuer and audience are required

There is no bypass flag and no dev-mode shortcut in the binary. Local development<br>gets a throwaway mock issuer instead, booted by make dev-auth.

Sovereignty

Two things a hosted gateway structurally can't give you.

Not features someone else will ship next quarter — consequences of where the<br>software runs and who holds the key.

It runs where you run<br>One binary, one process, your hardware.

On-prem, inside your own VPC, or air-gapped. No JVM, no Python runtime, no<br>sidecar, no agent to install next to it. Back it with Postgres when you want<br>agents to survive a restart.

It never holds your key<br>Verify is not custody.

The payment gate checks that a valid authorization exists before it forwards a<br>call. It does not hold a private key to do that. If you later want to actually<br>settle on-chain, you run the facilitator yourself — with your own gas key, on<br>your own hardware.

Zerker, self-hosted

A hosted gateway

Your infrastructure<br>⚿ signing key

Someone else's cloud<br>⚿ signing key

The key never leaves. Zerker verifies the authorization a caller presents<br>and forwards, or doesn't. Nothing to hand over, nothing to breach.

Self-host it. Charge for it. Hold no keys.

Nobody else does all three.

ContextForge and Lunar self-host but can't charge for a call. Cloudflare charges<br>but cannot be self-hosted. MCPay does both — in TypeScript, with settlement<br>delegated to a facilitator service. That's the whole field, and we show our<br>working: vs MCPay,<br>vs Cloudflare,<br>vs ContextForge.

Payment required

What's free, and what isn't.

We put the answer behind the exact mechanism this page is selling. Present a<br>payment authorization to read it. (It's a demo. Nothing is charged, and there is<br>no wallet involved.)

HTTP/1.1 402 Payment Required<br>GET /pricing

X-Payment-Required: x402<br>scheme: exact<br>network: base<br>amount: 0.00 USDC (demo)<br>resource: /pricing

Present authorization

⌁ withheld pending payment<br>the gateway is holding this response

OSS verifies and captures.<br>Commercial collects, bills, and governs.

Capability<br>Tier

Gateway, catalog, MCP transport, proxy, auth, SSRF, per-tenant credential isolation<br>OSS

The x402 payment gate — verify an authorization before forwarding<br>OSS

Raw invocation and payment capture, readable over the API<br>OSS

Self-hosting a facilitator — the /settle server<br>OSS

Settlement and collection, fee modes, a managed facilitator<br>Commercial

Usage and revenue dashboard, quotas, spend limits, invoicing<br>Commercial

Multi-tenant control plane and governance<br>Commercial

The full boundary →

That gate you just walked through is the open-source half, and so is the settle<br>server behind it — you can run the whole path yourself. What we sell is not<br>permission to take money. It's not having to run the part that holds the key.

Run it

Up in one command. Yours in two.

Local development boots a throwaway mock issuer alongside the gateway and writes<br>you a bearer token. Production points at your own IdP — Auth0, Okta, Google,<br>whatever you already run.

Local (mock OIDC)

Production

Copy

The stack

One of three parts. Each useful alone.

Zerker carries the traffic. The other two carry the trust and the memory.

Zerker<br>The gateway in front of agent traffic — routing, policy, observability, payment<br>metering.

Treeship ↗<br>Portable trust receipts for agent work.

Zmem ↗<br>Verifiable memory for agents.

gateway payment zerker agent call nothing

Related Articles