DodoRouter
Get Started
Docs / Forge
Browse docs
View as Markdown

Forge

Forge has a built-in openai_compatible provider slot. The easiest path is the interactive menu:

forge provider login
# choose "openai_compatible", then enter your base URL and API key when prompted

This writes an entry to ~/.forge/.credentials.json shaped like this (confirmed from a real, already-configured Forge installation pointed at DodoRouter):

{
  "id": "openai_compatible",
  "auth_details": { "api_key": "sk-dodo-YOUR_KEY" },
  "url_params": { "OPENAI_URL": "{base_url}/r/{router}/v1" }
}

and sets in ~/.forge/.forge.toml:

[session]
provider_id = "openai_compatible"
model_id = "default"

Then run forge as usual, or non-interactively with forge -p "your prompt".

Verified with a caveat

We pointed a real Forge installation at a live DodoRouter router using exactly this config and it connected, authenticated, and completed several successful tool-calling turns (each logged by DodoRouter as HTTP 200 with the correct content). During one longer automated run, Forge's own client logged "Empty completion received" and retried repeatedly on a turn where DodoRouter's logs show it actually returned a perfectly valid response (right content, finish_reason: "stop"). That looks like an intermittent client-side parsing hiccup in Forge rather than anything DodoRouter did wrong, and it's exactly the config the project's own maintainers run day-to-day against the hosted service — but if you hit a similar stall, check the request in DodoRouter's Logs before assuming the request failed.