Skip to the content
Back to Nymbot

Knowledge base Developers

Coding tools

Coding agents that let you choose where their model requests go can run on Nymbot. Each one needs a base URL, a key and a model id; this page gives the exact settings for each.

Before you start

You need an API key, made in the app's API menu (see API keys). Each tool speaks one of the API's three formats, and that decides its base URL:

ToolFormatBase URL
Claude CodeAnthropic Messageshttps://nymbot.ai/api
Codex CLIResponseshttps://nymbot.ai/api/v1
Cline, Kilo Code, Roo Code, ContinueChat Completionshttps://nymbot.ai/api/v1

Model ids come from the model list, GET https://nymbot.ai/api/v1/models, which needs no key. The examples below use anthropic/claude-sonnet-5 and, for a model from another maker, moonshotai/kimi-k3. Check that the model you pick is still listed.

  • Pick a model that can call tools. These agents read files, edit them and run commands by calling tools, on every step. Use a model whose entry has capabilities.tools set to true. nymbot/auto refuses any request with tools (400 unsupported_tool), so it does not work with any of them.
  • Copy the model's limits into the tool. Most tools ask for a context window and a maximum output. Take them from context_length and max_output_tokens in the model list. A tool that asks for more output than the model allows is not refused; the request is lowered to the model's maximum.
  • Steps arrive whole. A request with tools runs in one piece and is then sent back as a stream, with keep-alive pings while the model works. Streaming works in every tool below, but each step appears at once rather than word by word.
Give each tool its own key

Make a separate key for each tool, with a daily cap. A coding agent makes many model calls for one task, each carrying the conversation so far, so a single task can cost far more than a chat message. A cap on the key is the simplest way to know the most a tool can spend, and revoking it stops that tool alone.

Claude Code

Claude Code talks to Nymbot through its gateway settings. Set these in the shell you start it from:

Shell

export ANTHROPIC_BASE_URL=https://nymbot.ai/api
export ANTHROPIC_AUTH_TOKEN=sk-nymbot-...
export ANTHROPIC_DEFAULT_OPUS_MODEL=anthropic/claude-opus-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=anthropic/claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=anthropic/claude-haiku-4.5
claude
  • The base URL is exactly https://nymbot.ai/api: no /v1 and no slash at the end, since Claude Code adds /v1/messages itself.
  • The key goes in ANTHROPIC_AUTH_TOKEN, which Claude Code sends as Authorization: Bearer. While it is set, a saved claude.ai login is not used for these requests and your subscription's limits do not apply.
  • Pin the model slots. By default Claude Code asks for Anthropic's newest model names, and Nymbot answers a Claude name only with the same or a newer version from its catalog, never an older one; a version the catalog does not carry yet returns 404. Pointing opus, sonnet and haiku at catalog ids avoids that. If you use the fable alias, set ANTHROPIC_DEFAULT_FABLE_MODEL the same way.
  • Pinning the Haiku slot also moves Claude Code's background work, such as session titles, to that cheaper model. Without it, that work runs on your main model.

Start Claude Code and run /status. The Status tab should show an Anthropic base URL line with https://nymbot.ai/api and an Auth token line naming ANTHROPIC_AUTH_TOKEN.

To keep the settings for every session, put them in the env block of ~/.claude/settings.json (%USERPROFILE%\.claude\settings.json on Windows) instead. Never put the key in a project's .claude/settings.json, which is committed with the project.

settings.json

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://nymbot.ai/api",
    "ANTHROPIC_AUTH_TOKEN": "sk-nymbot-...",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "anthropic/claude-opus-5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "anthropic/claude-sonnet-5",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "anthropic/claude-haiku-4.5"
  }
}

A few more settings are worth knowing:

  • Output length. Set CLAUDE_CODE_MAX_OUTPUT_TOKENS to the model's max_output_tokens, so Claude Code plans its replies for the limit the model really has.
  • The model picker. With CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1, Claude Code reads Nymbot's model list at startup and adds the Claude models in it to /model.
  • Leave the advisor off. Claude Code's advisor is a tool that runs on Anthropic's own servers, which Nymbot cannot run, and a request carrying it is refused. Don't turn it on with /advisor, or set CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1 to remove it entirely.
  • Leave MCP tool search off. Claude Code turns it off for a custom base URL, and Nymbot cannot take the tool references it sends, so don't set ENABLE_TOOL_SEARCH=true. MCP tools still work; they are loaded up front instead.

Claude Code can also run on a model that is not Claude: point the model slots at another catalog id, such as moonshotai/kimi-k3, and set CLAUDE_CODE_MAX_CONTEXT_TOKENS to that model's context_length, since Claude Code cannot know it. Anthropic does not support Claude Code on other models, so expect rough edges.

Claude Code in VS Code

The VS Code extension runs the same Claude Code, but checks for credentials before it starts, so give it the settings in VS Code's own user settings. Run Preferences: Open User Settings (JSON) and add:

settings.json

{
  "claudeCode.disableLoginPrompt": true,
  "claudeCode.environmentVariables": [
    { "name": "ANTHROPIC_BASE_URL", "value": "https://nymbot.ai/api" },
    { "name": "ANTHROPIC_AUTH_TOKEN", "value": "sk-nymbot-..." },
    { "name": "ANTHROPIC_DEFAULT_OPUS_MODEL", "value": "anthropic/claude-opus-5" },
    { "name": "ANTHROPIC_DEFAULT_SONNET_MODEL", "value": "anthropic/claude-sonnet-5" },
    { "name": "ANTHROPIC_DEFAULT_HAIKU_MODEL", "value": "anthropic/claude-haiku-4.5" }
  ]
}

Disable Login Prompt stops the extension asking you to sign in to Anthropic. Everything in Claude Code above applies to the extension too; settings in ~/.claude/settings.json reach it as well, but the extension's login check reads only its own setting.

Codex CLI

Codex uses the Responses API. Add Nymbot as a provider in ~/.codex/config.toml:

config.toml

model = "anthropic/claude-sonnet-5"
model_provider = "nymbot"
model_context_window = 1000000

[model_providers.nymbot]
name = "Nymbot"
base_url = "https://nymbot.ai/api/v1"
env_key = "NYMBOT_API_KEY"
wire_api = "responses"

[features]
multi_agent = false

Then set NYMBOT_API_KEY in your environment and run codex.

  • multi_agent = false is required. Codex's multi-agent tools come as a group of tools that Nymbot cannot take, and while they are on every request is refused with 400 unsupported_tool. Nymbot takes function tools and web search only; if Codex reports unsupported_tool, a feature or MCP server that adds another kind of tool is on.
  • Pick a model that is not one of OpenAI's own. For model ids it recognizes as OpenAI's, such as openai/gpt-5.6-sol, Codex switches to a request format Nymbot cannot read, and the request is refused. Claude, Kimi and the other catalog models work.
  • model_context_window tells Codex the model's context size, from context_length in the model list; otherwise it assumes 272,000 tokens.
  • Codex offers the model a web search tool, which Nymbot runs with its own web search when the question needs it. Set web_search = "disabled" at the top of the file to turn it off.
  • Nymbot does not store responses. Codex already sends the whole conversation each time, so nothing needs to change.

Cline

In Cline's settings in VS Code:

  1. Set API Provider to OpenAI Compatible.
  2. Set Base URL to https://nymbot.ai/api/v1.
  3. Paste your key into OpenAI Compatible API Key.
  4. Pick the model under Model ID. Cline loads the list from Nymbot once the URL and key are in; you can also type an id such as anthropic/claude-sonnet-5.

Open Model Configuration and fill in Context Window Size and Max Output Tokens from the model list, and tick Supports Images if the model has capabilities.vision, so Cline manages its context correctly.

Kilo Code

In the VS Code extension, open Settings, go to the Providers tab, scroll to the bottom and click Custom provider. Fill in:

  • Provider ID: nymbot
  • Display name: Nymbot
  • Provider API: OpenAI Compatible
  • Base URL: https://nymbot.ai/api/v1
  • API key: your key
  • Models: pick them from the list Kilo loads from Nymbot

Click Submit, and the models appear in the model picker. For the CLI, or to set a model's limits and tool support, define the provider in ~/.config/kilo/kilo.json instead:

kilo.json

{
  "provider": {
    "nymbot": {
      "npm": "@ai-sdk/openai-compatible",
      "env": ["NYMBOT_API_KEY"],
      "options": {
        "baseURL": "https://nymbot.ai/api/v1"
      },
      "models": {
        "claude-sonnet-5": {
          "id": "anthropic/claude-sonnet-5",
          "name": "Claude Sonnet 5",
          "tool_call": true,
          "limit": { "context": 1000000, "output": 64000 }
        }
      }
    }
  },
  "model": "nymbot/claude-sonnet-5"
}

id is the Nymbot model id and the key above it is Kilo's own name for it, used in "model" as nymbot/…. Take limit from the model list; without it Kilo cannot manage the context.

Roo Code

Roo Code was discontinued on May 15, 2026. If you still have it installed, it works with Nymbot like this: set API Provider to OpenAI Compatible, Base URL to https://nymbot.ai/api/v1, put your key in API Key and a model id in Model. Roo Code only works through tool calls, so the model must have capabilities.tools. Under the model configuration, set Max Output Tokens, Context Window and Image Support from the model list.

Continue

Continue's final release is 2.0.0 and it is no longer maintained, but the extension and its CLI still work. Add Nymbot models to ~/.continue/config.yaml (%USERPROFILE%\.continue\config.yaml on Windows):

config.yaml

name: My Config
version: 0.0.1
schema: v1
models:
  - name: Claude Sonnet 5 (Nymbot)
    provider: openai
    model: anthropic/claude-sonnet-5
    apiBase: https://nymbot.ai/api/v1
    apiKey: sk-nymbot-...
    roles:
      - chat
      - edit
      - apply
    capabilities:
      - tool_use
      - image_input
    defaultCompletionOptions:
      contextLength: 1000000
      maxTokens: 64000
  - name: Nymbot embeddings
    provider: openai
    model: "@cf/baai/bge-m3"
    apiBase: https://nymbot.ai/api/v1
    apiKey: sk-nymbot-...
    roles:
      - embed
  • capabilities tells Continue what the model can do, since it cannot tell from a Nymbot id. tool_use is what Agent mode needs; leave out image_input for a model without capabilities.vision.
  • The second entry uses a Nymbot embedding model for Continue's codebase search.

What the tools send

A coding agent sends the model whatever it works with: your instructions, the files it opens, the output of the commands it runs. Through Nymbot, all of that is an ordinary API request, with the protections and limits described in what the API can see: it is not end-to-end encrypted, Nymbot does not store it, and the model's provider sees it.

  • The tools keep their own histories on your machine, and some talk to their makers besides. Claude Code, for one, still sends its telemetry to Anthropic when it runs on Nymbot; set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 to stop that and its other background traffic. Its WebFetch tool still checks each domain with Anthropic unless you set skipWebFetchPreflight to true in its settings.
  • Keys in settings files are only as safe as the file. Keep them out of anything you commit, and read them from the environment where the tool allows it.