Skip to content

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:

Terminal window
printf '%s' "$KEY" | nouride secret set nougate --value-stdin

Model 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:

Terminal window
bun run build:binary --bundle-nougate
[nougate]
in_process = true
port = 18256

Then 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.

Build variants and their measured costs →