Skip to content

Frequently asked questions

What is the Smart LLM Supervisor Gateway?

A small OpenAI-compatible HTTP service that decides which underlying LLM should answer a chat-completion request, then proxies the request to OpenRouter. See Getting started → Overview.

Who is this for?

Individual developers and small teams who want predictable cost and privacy behavior across coding agents (Aider, Cline, Roo-Code) without hand-tuning the model for every request.

What does it cost?

You pay OpenRouter's rates for the chosen model. The gateway does not add a fee. The DeepSeek V4 Flash worker is "very low" cost; DeepSeek V4 Pro is "high relative to stack"; the Nemotron Scout is free (subject to the privacy gate). Cost is recorded in OpenRouter's usage field on every response.

Why aliases instead of real model IDs?

Decoupling, privilege separation, routing flexibility, and audit clarity. See User guide → Model aliases.

Can I use my OpenAI key directly?

No. The gateway accepts only its own bearer token. The OpenRouter key is held server-side. See User guide → Authentication.

Is the gateway compatible with the OpenAI Responses API?

No. v1.0.0 implements Chat Completions only.

Does the gateway support multimodal / image inputs?

No. v1.0.0 rejects multimodal content with HTTP 400. See API reference → Chat completions.

Is the gateway compatible with Anthropic / Claude?

No. The wire format is OpenAI Chat Completions only. Use a translator (LiteLLM, Portkey) upstream of the gateway if you need the Anthropic shape.

Can I use the gateway without TLS?

The gateway binds loopback only. The public HTTPS termination is the host nginx. There is no production deployment without TLS.

Does the gateway store my prompts or responses?

No. The gateway writes only structured routing events to stdout. There is no prompt cache, no message archive, and no per-user record store. The only persistent state is the budget ledger in PostgreSQL.

Where does my data go?

To OpenRouter. OpenRouter's data-handling policy applies to the upstream call. The gateway itself does not add logging that includes message content.

How do I know the gateway is using the right model?

Look at the response body's model field — it echoes the real OpenRouter ID. Look at the structured logs for decision.model — it is the internal alias key. Use POST /v1/route/decision to dry-run any decision without making an upstream call.

How do I prevent private code from being sent to the free model?

Use sensitive=true (the default) or omit metadata entirely. The privacy gate enforces free_model_fail_closed: true on sensitive + free.

Why is the free model refused on my private repo?

See Security → Free-model policy. Nemotron's free endpoint terms explicitly warn against confidential data. The gateway treats this as a hard boundary.

Can I add my own model?

Only via a release. See the operator runbook in the repository under docs-internal/development/release-process.md (operator-only).

Can I disable the privacy gate?

No in v1.0.0. The privacy gate is part of the architecture freeze.

Why is the API key not actually verified by value?

This is a known architectural caveat tracked in PROJECT-COMPLETION-REPORT.md §"Unresolved Items". The current implementation checks token presence and length only. See User guide → Authentication.

How do I rotate the gateway API key?

See the operator runbook at docs-internal/operations/secret-rotation.md (operator-only).

How do I report a bug?

For v1.0.0 documentation or behavior issues, open an issue at the repository. For security incidents, follow the operator runbook at docs-internal/operations/incident-response.md (operator-only).

Where do I find the operational runbook?

The day-2 operations runbook is in the repository under docs-internal/operations/. It contains SSH procedures, server paths, backup locations, and credential rotation that are not appropriate for a public site. Access is restricted to operators with shell access to the production VPS.

Why are there two documentation directories?

docs-public/ is for users and integrators. docs-internal/ is for operators and contains sensitive information. They are deliberately separated so that publishing the public site does not leak internal infrastructure details. See Operations → Index.