Use Sider in your coding agent
Set up Claude Code, Codex CLI, OpenCode and other coding agents to use this service: get an API key, then follow the guide of your tool. Its commands and settings already have this service's address.
Before you start
API key
API keys are given out on request by the administrator of this service.
Base URL
OpenAI-compatible API
https://sider.ai.id/v1
Anthropic-compatible API (Claude Code)
https://sider.ai.id
Each guide below already uses the right one.
Model
The examples use deepseek-4.1-unrestricted. You can use any model of the model list on the status page. Pick one that supports tool calling: coding agents use tools to read and edit files and to run commands.
Claude Code
by Anthropic · Anthropic Messages APIAnthropic's coding agent for the terminal: it reads your project, edits files and runs commands.
Install Claude Code with Anthropic's installer (or
npm install -g @anthropic-ai/claude-codewith Node.js 22 or later). Then open a new terminal and check thatclaude --versionprints a version number.macOS, Linux, WSLcurl -fsSL https://claude.ai/install.sh | bash
Windows (PowerShell)irm https://claude.ai/install.ps1 | iex
Create the file
~/.claude/settings.json(on Windows%USERPROFILE%\.claude\settings.json) with the content below; the command for your system opens it in an editor (in nano, Ctrl+O and Enter save, Ctrl+X exits). If the file already exists, add these entries to it.ANTHROPIC_BASE_URLis the address without/v1: Claude Code adds/v1/messagesitself.macOS, Linuxmkdir -p ~/.claude && nano ~/.claude/settings.json
Windows (PowerShell)New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude" | Out-Null; notepad "$env:USERPROFILE\.claude\settings.json"
~/.claude/settings.json{ "env": { "ANTHROPIC_BASE_URL": "https://sider.ai.id", "ANTHROPIC_MODEL": "deepseek-4.1-unrestricted", "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-4.1-unrestricted", "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-4.1-unrestricted", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-4.1-unrestricted", "ANTHROPIC_DEFAULT_FABLE_MODEL": "deepseek-4.1-unrestricted", "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192" }, "disableAutoMode": "disable" }Keep your API key out of that file, in the environment variable
ANTHROPIC_AUTH_TOKEN(Claude Code sends it asAuthorization: Bearer): replaceYOUR_API_KEYwith your key, run the command for your system once, then close the terminal and open a new one.macOS (zsh)echo 'export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY"' >> ~/.zshrc
Linux (bash)echo 'export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY"' >> ~/.bashrc
Windows (PowerShell)setx ANTHROPIC_AUTH_TOKEN "YOUR_API_KEY"
In your project folder, start Claude Code. The first time, pick a theme, press Enter after the security notes and choose Yes, I trust this folder; there is no sign-in. Type
/status: it shows Anthropic base URLhttps://sider.ai.id, Auth tokenANTHROPIC_AUTH_TOKENand Modeldeepseek-4.1-unrestricted. Then ask something. A sign-in screen means thatANTHROPIC_AUTH_TOKENis not set in this terminal.In your project folderclaude
Good to know
- The five model entries name
deepseek-4.1-unrestrictedfor the main conversation and for the models Claude Code callsopus,sonnet,haikuandfable, which its subagents and helpers ask for. Without them those requests name Claude models that this service does not have, and fail with404. To use another model, change all five. - Claude Code asks for answers of up to 32,000 tokens; many models allow fewer, and their providers refuse such requests (
400).CLAUDE_CODE_MAX_OUTPUT_TOKENSasks for 8,192 instead: raise it if your model allows more. While a request runs, its output limit also counts against the daily token limit of your account, if it has one. disableAutoModestarts Claude Code in Manual mode: it asks before it edits files or runs commands. In auto mode, its default, a classifier checks commands before they run with an extra request of tens of thousands of tokens todeepseek-4.1-unrestricted, which counts against your limits, and blocks the command when it can't read the answer. Remove the line to use auto mode anyway.- Choose a model that supports tool calling (function calling): Claude Code reads, edits and runs everything through tools.
- The WebSearch tool runs on Anthropic's servers. It works only when
deepseek-4.1-unrestrictedis served by an Anthropic-compatible provider that supports it and the admin forwards Anthropic's server tools; otherwise searches fail. - Claude Code does not know the model names of this service, so at start it warns that it assumes a context window of 200k tokens. If
deepseek-4.1-unrestrictedhas another window (on the Models tab of your dashboard, or itscontext_lengthinGET https://sider.ai.id/v1/modelswith your API key), add"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "…"with that number toenv, so that Claude Code compacts the conversation in time.
See the Claude Code documentation for every setting.
Codex CLI
by OpenAI · OpenAI Responses APIOpenAI's coding agent for the terminal: it reads your project, edits files and runs commands.
Install the Codex CLI with OpenAI's installer (or
npm install -g @openai/codex). Then open a new terminal and check thatcodex --versionprints a version number.macOS, Linuxcurl -fsSL https://chatgpt.com/codex/install.sh | sh
Windows (PowerShell)powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
Open
~/.codex/config.toml(on Windows%USERPROFILE%\.codex\config.toml) with the command for your system (in nano, Ctrl+O and Enter save, Ctrl+X exits) and add the settings below. If the file already has settings, put the first three lines above its first line in brackets, such as[features], and remove its own lines with the same names.base_urlends with/v1: Codex adds/responses.macOS, Linuxmkdir -p ~/.codex && nano ~/.codex/config.toml
Windows (PowerShell)New-Item -ItemType Directory -Force "$env:USERPROFILE\.codex" | Out-Null; notepad "$env:USERPROFILE\.codex\config.toml"
~/.codex/config.tomlmodel = "deepseek-4.1-unrestricted" model_provider = "aiter" web_search = "disabled" [model_providers.aiter] name = "Sider" base_url = "https://sider.ai.id/v1" env_key = "AITER_API_KEY" wire_api = "responses"
Keep your API key out of that file, in the environment variable
AITER_API_KEYthatenv_keynames: replaceYOUR_API_KEYwith your key, run the command for your system once, then close the terminal and open a new one.macOS (zsh)echo 'export AITER_API_KEY="YOUR_API_KEY"' >> ~/.zshrc
Linux (bash)echo 'export AITER_API_KEY="YOUR_API_KEY"' >> ~/.bashrc
Windows (PowerShell)setx AITER_API_KEY "YOUR_API_KEY"
In your project folder, start Codex; there is no sign-in. Type
/status: it shows Modeldeepseek-4.1-unrestrictedand Model provideraiter. Then ask something.Missing environment variable: `AITER_API_KEY`means that the variable is not set in this terminal; once it is, runcodex app-server daemon restart, because the background server of Codex keeps the environment it started with.In your project foldercodex
Good to know
- Choose a model whose name does not start with the name of an OpenAI model that Codex knows, such as
gpt-5.5oropenai/gpt-5.5: for such names Codex adds tools of other types (apply_patchas acustomtool, andtool_search) that this service refuses with400. - For other names Codex warns
Model metadata for `deepseek-4.1-unrestricted` not foundand uses defaults, among them a context window of 272,000 tokens. Ifdeepseek-4.1-unrestrictedhas a smaller one (on the Models tab of your dashboard, or itscontext_lengthinGET https://sider.ai.id/v1/modelswith your API key), addmodel_context_window = …with that number next tomodel, so that Codex compacts the conversation in time. - Choose a model that supports tool calling (function calling): Codex runs commands and edits files through tools.
- To have the model think more, add
model_reasoning_effort = "high"(or"low","medium") next tomodel: it reaches the model asreasoning_effort. A model without reasoning may refuse it with400; without the setting Codex sends none. web_search = "disabled"turns off the web search of Codex, which runs on OpenAI's servers: this service has no web search and leaves that tool out anyway.
See the Codex CLI documentation for every setting.
Antigravity
by Google · OpenAI Chat Completions APIGoogle's agentic IDE, whose built-in agent runs only the models Google provides and cannot be pointed at another API: in Antigravity you use Sider through the Cline extension.
In Antigravity's editor, open the Extensions view, search for this ID and install Cline, published by saoudrizwan (not Cline (Nightly) or a look-alike).
Extension IDsaoudrizwan.claude-dev
Open Cline from its icon in the side bar. The first time, choose Bring my own API key and Continue; later, its gear icon opens Settings → API Configuration. Set API Provider to OpenAI Compatible and fill in these fields; the Model ID list shows the models your key may use.
Base URLhttps://sider.ai.id/v1
OpenAI Compatible API KeyYOUR_API_KEY
Model IDdeepseek-4.1-unrestricted
Under Model Configuration, set Max Output Tokens (8192 is a safe start; raise it if the model allows more) and Context Window Size, the model's context window shown on the Models tab of your dashboard. Clear Supports Images if the model does not read images.
Open your project's folder, start a new task in Cline (+) and ask for something that needs a tool, such as listing the project's files.
Route POST /chat/completions not found(404) means the base URL lacks/v1;Invalid API key(401), that the key is wrong.
Good to know
- Antigravity's own agent cannot use Sider: Google's plans page lists no support for bring-your-own-key or bring-your-own-endpoint, and the Antigravity CLI takes only Gemini-compatible endpoints, which this service does not offer. Cline works next to it, in its own panel.
- Pick a model that supports tool calling (function calling): Cline reads and edits files and runs commands through tools.
- Without Max Output Tokens, Cline asks for up to 32,000 output tokens, which many models refuse (
400 upstream_bad_request) and which, if your account has a daily token limit, is reserved from it while the request runs. - Leave Reasoning Effort at none unless the model reasons: Cline sends the effort as
reasoning_effort, which models without reasoning may refuse. - Cline keeps the API key in its own settings on your computer; it does not read
AITER_API_KEY.
See the Cline documentation for every setting.
OpenCode
by Anomaly · OpenAI Chat Completions APIAn open-source coding agent for the terminal, also available as a desktop app and an IDE extension, that works with any OpenAI-compatible provider.
Install OpenCode. On Windows the npm command needs Node.js;
scoop install opencodeorchoco install opencodework as well. OpenCode recommends WSL on Windows: inside WSL, use the macOS/Linux command.macOS, Linuxcurl -fsSL https://opencode.ai/install | bash
Windows (PowerShell)npm install -g opencode-ai
Save this as OpenCode's config for all your projects,
~/.config/opencode/opencode.json(Windows:%USERPROFILE%\.config\opencode\opencode.json; create the folder if it is missing), or asopencode.jsonin a project's folder for that project only. If the file exists already, add themodelline and theaiterentry (underprovider) to it instead. Undermodels, list each model you want to use, with its limits (see below).~/.config/opencode/opencode.json{ "$schema": "https://opencode.ai/config.json", "model": "aiter/deepseek-4.1-unrestricted", "provider": { "aiter": { "npm": "@ai-sdk/openai-compatible", "name": "Sider", "options": { "baseURL": "https://sider.ai.id/v1", "apiKey": "{env:AITER_API_KEY}" }, "models": { "deepseek-4.1-unrestricted": { "limit": { "context": 128000, "output": 8192 } } } } } }Put your API key in the environment variable
AITER_API_KEY, in the terminal you start OpenCode from. It lasts until the terminal closes: to keep it, add the line to~/.zshrcor~/.bashrc(macOS, Linux), or runsetx AITER_API_KEY "YOUR_API_KEY"once and open a new terminal (Windows).macOS, Linuxexport AITER_API_KEY="YOUR_API_KEY"
Windows (PowerShell)$env:AITER_API_KEY = "YOUR_API_KEY"
In the same terminal, check the config:
opencode models aiterlistsaiter/deepseek-4.1-unrestricted. Then start OpenCode in your project's folder; below the prompt it shows deepseek-4.1-unrestricted and Sider. Ask for something that needs a tool, such as listing the project's files./modelsswitches between the models of your config.In your project's folderopencode models aiter opencode
Good to know
- Pick a model that supports tool calling (function calling): OpenCode reads and edits files and runs commands through tools, in every turn.
limit.outputcaps each answer. Without it OpenCode asks for 32,000 tokens, which many models refuse (400 upstream_bad_request) and which, if your account has a daily token limit, is reserved from it while the request runs. 8192 is a safe start; raise it if the model allows more.limit.contextis the model's context window, shown on the Models tab of your dashboard: OpenCode compacts the conversation before it outgrows the model.- Rather not use an environment variable? Run
opencode auth login, choose Other, enteraiterand your API key, then delete theapiKeyline from the config.Missing API key(401) means OpenCode sent no key: the variable is not set in the terminal that started it. - A model that answers
503withserved for Anthropic's Messages API onlyworks through Anthropic's API: add"provider": { "npm": "@ai-sdk/anthropic" }to its entry undermodels. The base URL and the key stay the same.
See the OpenCode documentation for every setting.
Hermes Agent
by Nous Research · OpenAI Chat Completions APINous Research’s open-source agent for the terminal: it runs commands, edits files, and keeps memories and skills across sessions.
Install Hermes Agent with its official installer, which brings the Python it needs. On Windows, use PowerShell, or the Linux command inside WSL2. At the end, the installer opens the setup wizard.
macOS, Linux, Windows (WSL2)curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Windows (PowerShell)iex (irm https://hermes-agent.nousresearch.com/install.ps1)
In the wizard, choose Full setup, then the provider Custom endpoint (enter URL manually). Enter the API base URL
https://sider.ai.id/v1and your API key (YOUR_API_KEY): Hermes checks them and lists the models your key may use. If the wizard did not open, or to change this later, runhermes modelin a new terminal.API base URLhttps://sider.ai.id/v1
Choose the API compatibility mode Chat Completions and the model
deepseek-4.1-unrestricted, then press Enter at Context length (Hermes reads it from the service) and at Display name. For the rest of the wizard, keep the defaults and skip keys you do not have. Hermes saves the settings in~/.hermes/config.yamland the key in~/.hermes/.env(on Windows without WSL, in%LOCALAPPDATA%\hermes).Modeldeepseek-4.1-unrestricted
Open a new terminal and start Hermes. The welcome banner shows the model
deepseek-4.1-unrestricted. Ask, for example, Which files are in this folder? Hermes runs a command to find out, then answers.macOS, Linux, Windowshermes
Good to know
- Pick a model that supports tool calling: Hermes does its work through tools. It also needs a context window of at least 64K tokens and refuses a smaller model at startup (below the minimum 64,000 required by Hermes Agent). It reads the window from this service’s model list (
context_length); for a model listed without one it guesses from the name or assumes 256K, so set the real window if you know it:hermes config set model.context_length 131072. - Each request carries Hermes’s system prompt and tool list (
hermes prompt-sizeshows the size), and its side tasks use your model on this service too: session titles, context compression, the background memory review, and image descriptions (only with a model that accepts images). All of it counts toward your key’s limits; side tasks go to another provider (OpenRouter, Nous Portal) only if you set one up in Hermes. To save tokens, turn the automatic review off:hermes config set auxiliary.background_review.enabled false. - Hermes asks for
reasoning_effort: mediumunless you pick another level, and this service passes it on to the model’s provider. If the provider refuses it, Hermes says the model rejects reasoning effort and goes on without it. Reasoning tokens count as output: lower the level with/reasoning lowin a session, or for good withhermes config set agent.reasoning_effort low.
See the Hermes Agent documentation for every setting.
omp (oh-my-pi)
by Stencil Labs · OpenAI Chat Completions APIA coding agent for the terminal, forked from Pi, with language servers, a debugger, subagents and many more tools built in.
Install omp. The installer puts a ready-built
ompin place, or installs it with Bun when Bun 1.4.4 or newer is there;brew install can1357/tap/ompworks too. If the terminal then cannot findomp, follow the PATH line the installer prints and open a new terminal;omp --versionshows the version.macOS, Linuxcurl -fsSL https://omp.sh/install | sh
Windows (PowerShell)irm https://omp.sh/install.ps1 | iex
Put your API key in the environment variable
AITER_API_KEYof the terminal where you start omp: omp reads it from there, so the key stays out of its files. The variable lasts until you close the terminal. To keep it, add the line to~/.zshrc(macOS) or~/.bashrc(Linux); on Windows, runsetx AITER_API_KEY "YOUR_API_KEY"once and open a new terminal.macOS, Linuxexport AITER_API_KEY="YOUR_API_KEY"
Windows (PowerShell)$env:AITER_API_KEY = "YOUR_API_KEY"
Add this service to
~/.omp/agent/models.yml(on Windows%USERPROFILE%\.omp\agent\models.yml): create the file with this content, or add theaiterentry underprovidersin the file you have.apiKeyholds the variable's name, not the key. Add an entry tomodelsfor each model you use; the notes explaincontextWindowandmaxTokens.~/.omp/agent/models.ymlproviders: aiter: baseUrl: "https://sider.ai.id/v1" api: openai-completions apiKey: AITER_API_KEY compat: maxTokensField: max_tokens models: - id: "deepseek-4.1-unrestricted" contextWindow: 128000 maxTokens: 8192Check the connection: omp sends one request to
deepseek-4.1-unrestrictedthrough this service and prints the answer, such asOK.omp models aiterlists the models omp read from the file; a mistake in the file shows asmodels.yml validation failedwith the field at fault.Terminalomp -p --model aiter/deepseek-4.1-unrestricted "Reply with only OK"
Start omp in your project folder. The first start opens a setup wizard: on Set up your providers press Esc (the key is already in
AITER_API_KEY), and on Choose your default model typeaiter, selectaiter/deepseek-4.1-unrestrictedand press Enter. If omp was set up before, open/modeland assignaiter/deepseek-4.1-unrestrictedto Default.Terminal, in your project folderomp
Good to know
- omp edits files and runs commands through tool calls: use a model that supports tool calling (function calling). Its tools that need other kinds of models, such as image generation or speech, do not work through this service, which serves chat models.
apiKey: AITER_API_KEYmakes omp read the key from that variable at each request. When the variable is not set, omp sends the name itself as the key and this service answers401 invalid_api_key: set the variable in the terminal that starts omp.404 model_not_foundmeans this key cannot use a model of that ID (IDs are case-sensitive).contextWindowis the model's context window in tokens: omp compacts the conversation before it is full, and compacts and tries again when this service answers400 context_length_exceeded. Use the model's window from the Models tab of your dashboard, or itscontext_lengthinGET https://sider.ai.id/v1/modelswith your API key, when it is listed.maxTokensis the longest answer omp asks for: 8192 suits most models; raise it for a model that allows longer answers, or lower it when requests fail with400 upstream_bad_requestabout the output limit. With a daily token limit, each request reserves its prompt andmaxTokensuntil it ends.maxTokensField: max_tokenssends the output limit in the field the providers behind this service read; without it omp sendsmax_completion_tokens, which some providers ignore. OpenAI's reasoning models (o-series, GPT-5) refusemax_tokens(400 upstream_bad_request): give such a modelcompat: { maxTokensField: max_completion_tokens }in its entry.- omp sends reasoning settings such as
reasoning_effortfor a model markedreasoning: true, and for one it knows by its ID as a reasoning model. A provider that does not take them refuses the request (400 upstream_bad_request): then setreasoning: falseon that model.
See the omp (oh-my-pi) documentation for every setting.
Pi
by Earendil · OpenAI Chat Completions APIA minimal, extensible coding agent for the terminal, created by Mario Zechner: it reads and edits your files and runs commands.
Install Pi. The installer also sets up Node.js if needed; with Node.js 22.19 or newer,
npm install -g --ignore-scripts @earendil-works/pi-coding-agentworks as well.pi --versionthen shows the version.macOS, Linuxcurl -fsSL https://pi.dev/install.sh | sh
Windows (PowerShell)powershell -c "irm https://pi.dev/install.ps1 | iex"
Put your API key in the environment variable
AITER_API_KEYof the terminal where you start Pi: Pi reads it from there, so the key stays out of its files. The variable lasts until you close the terminal. To keep it, add the line to~/.zshrc(macOS) or~/.bashrc(Linux); on Windows, runsetx AITER_API_KEY "YOUR_API_KEY"once and open a new terminal.macOS, Linuxexport AITER_API_KEY="YOUR_API_KEY"
Windows (PowerShell)$env:AITER_API_KEY = "YOUR_API_KEY"
Add this service to
~/.pi/agent/models.json(on Windows%USERPROFILE%\.pi\agent\models.json): create the file with this content, or add theaiterentry toprovidersin the file you have. Add an entry tomodelsfor each model you use; the notes explaincontextWindowandmaxTokens.~/.pi/agent/models.json{ "providers": { "aiter": { "name": "Sider", "baseUrl": "https://sider.ai.id/v1", "api": "openai-completions", "apiKey": "$AITER_API_KEY", "compat": { "supportsDeveloperRole": false, "maxTokensField": "max_tokens" }, "models": [ { "id": "deepseek-4.1-unrestricted", "contextWindow": 128000, "maxTokens": 8192 } ] } } }Start Pi in your project folder with this model and send a short request, such as Reply with only OK: the answer comes from
deepseek-4.1-unrestrictedthrough this service. To start with this model every time, open/model, select it and press Ctrl+S. If Pi answersNo API key found for aiter,AITER_API_KEYis not set in this terminal.Terminal, in your project folderpi --model aiter/deepseek-4.1-unrestricted
Good to know
- Pi edits files and runs commands through tool calls: use a model that supports tool calling (function calling).
contextWindowis the model's context window in tokens: Pi compacts the conversation before it is full, and compacts and tries again when this service answers400 context_length_exceeded. Use the model's window from the Models tab of your dashboard, or itscontext_lengthinGET https://sider.ai.id/v1/modelswith your API key, when it is listed.maxTokensis the longest answer Pi asks for: 8192 suits most models; raise it for a model that allows longer answers, or lower it when requests fail with400 upstream_bad_requestabout the output limit. With a daily token limit, each request reserves its prompt andmaxTokensuntil it ends.supportsDeveloperRole: falsekeeps Pi's instructions in asystemmessage, which every OpenAI-compatible provider takes, also for a model markedreasoning; this service passes adevelopermessage on unchanged, and providers of other models may refuse it.maxTokensField: "max_tokens"sends the output limit in the field the providers behind this service read; without it Pi sendsmax_completion_tokens, which some providers ignore. OpenAI's reasoning models (o-series, GPT-5) refusemax_tokens(400 upstream_bad_request): give such a model"compat": { "maxTokensField": "max_completion_tokens" }in its entry.- Pi sends no
reasoning_effortfor these models, so each model reasons as its provider does by default; its thinking shows when the provider streams it. Add"reasoning": trueto a model only when its provider takesreasoning_effort:/thinkingthen sets the level. Providers of other models refuse it. - When a request fails:
401 invalid_api_keymeans the key inAITER_API_KEYis wrong or was regenerated;404 model_not_foundmeans this key cannot use a model of that ID (IDs are case-sensitive). Pi reads$AITER_API_KEYthis way since version 0.77: update an older Pi withpi update, or install it again as in step 1 if it comes from the old package@mariozechner/pi-coding-agent.
See the Pi documentation for every setting.