Nougate gateway
Nougate is Nouverse’s LLM gateway. From Nouride’s point of view it is an ordinary provider endpoint — there is no special integration, and nothing in the engine knows it is not Anthropic.
It is worth its own page for one reason: it serves both wire formats from one deployment under one
credential, and that is the case a per-vendor ANTHROPIC_API_KEY / OPENAI_API_KEY pair could not
describe.
[providers.nougate-anthropic]kind = "anthropic"base_url = "https://nougate.nouverse.tech/anthropic/v1"api_key = "nougate" # a secret NAME → $NOUGATE
[providers.nougate-openai]kind = "openai"base_url = "https://nougate.nouverse.tech/openai/v1"api_key = "nougate" # the same credential
[llm.defaults]provider = "nougate-anthropic"model = "antigravity:claude-sonnet-4-6"Two profiles, one secret, named once and referenced twice.
Store the credential the same way as any other:
printf '%s' "$KEY" | nouride secret set nougate --value-stdinModel names
Nougate namespaces models by upstream, so a model name carries where it comes from —
antigravity:claude-sonnet-4-6. Nouride passes the string through untouched: kind decides the
request shape and nothing else, so the model behind an OpenAI-shaped endpoint can perfectly well be
Claude.
Running it inside the daemon
Nougate is normally a separate service reached over HTTP. It can instead be compiled into the Nouride binary and served on loopback:
bun run build:binary --bundle-nougate[nougate]in_process = trueport = 18256Then point a profile at it like any other endpoint:
[providers.local-gateway]kind = "anthropic"base_url = "http://127.0.0.1:18256/anthropic/v1"api_key = "nougate"Both halves are required. A build with the flag and no in_process = true starts nothing; embedded = true on a build without the flag fails at open with a sentence naming the setting to change.
What it buys is measured: a separate gateway process costs 44.6 MB, and bundling it costs the daemon 6.0 MB — a saving of 38.6 MB. Almost all of that is a second copy of the Bun runtime, which a process cannot share and a listener does not need. The gateway’s own code is 0.3 MB of its 79.0 MB binary.
What it costs is +0.4 MB of binary and one crash domain: a bug in the gateway is then one stack
frame from the agent loop. Unlike bundling the WhatsApp bridge, it does not change the licence —
nougate depends only on drizzle-orm.
Nothing else changes. A gateway hosted here is addressed by a provider profile’s base_url exactly
like a remote one, so in_process = false puts it back with no code change.