Coding agents
Aider setup
Aider talks to any OpenAI-compatible API through two environment variables and a model name with an openai/ prefix. Two small files then give it the model’s real limits and prices.
Checked 29 October 2026
The values
- OPENAI_API_BASE
https://nokeep.ai/v1- API key
sk-nokeep-test to test, then your own sk-nokeep-… key- Model
deepseek-v4.1-flash-uncensored- Context window
1000000- Max output tokens
32768
Start with the free test key: it answers every request with one fixed line and no tool calls, which proves the URL and the key are right without spending anything. Then paste your own key from the console. Credits from $5, no subscription.
Connect
- Set the base URL and the key in your shell.
- Start Aider in your project with the model name prefixed
openai/:openai/deepseek-v4.1-flash-uncensored. - Ask anything. A reply that starts “Connected to” means the setup works.
- Set
OPENAI_API_KEYto your own key from the console and start Aider again.
export OPENAI_API_BASE=https://nokeep.ai/v1
export OPENAI_API_KEY=sk-nokeep-test
cd /path/to/your/project
aider --model openai/deepseek-v4.1-flash-uncensoredKeep the openai/ prefix: it is what sends the call to OPENAI_API_BASE. Without it Aider doesn’t recognise the model name and the call fails.
To keep your OpenAI variables for OpenAI, pass the two values as flags instead: --openai-api-base and --openai-api-key.
Limits, prices and edits
Aider warns that it doesn’t know this model’s context window or price. It works anyway, but two files in your home directory or the repository’s root fix the warning, the cost report and the edit format.
{
"openai/deepseek-v4.1-flash-uncensored": {
"max_tokens": 131072,
"max_input_tokens": 1000000,
"max_output_tokens": 131072,
"input_cost_per_token": 4.5000000000000003e-7,
"output_cost_per_token": 0.00000175,
"litellm_provider": "openai",
"mode": "chat"
}
}- name: openai/deepseek-v4.1-flash-uncensored
edit_format: diff
use_repo_map: true
accepts_settings:
- reasoning_effort
extra_params:
max_tokens: 32768edit_format: diffsends only the changed lines back, which is quicker and cheaper than whole files.use_repo_mapgives the model a map of the repository, which a million-token context has plenty of room for.max_tokensis the cap on each reply. Without it, a reply stops at our default of 8,192 tokens.- For GLM, copy both entries with
openai/glm-5.3-flash-uncensoredand its own numbers from Models.
Which model
deepseek-v4.1-flash-uncensored | glm-5.3-flash-uncensored | |
|---|---|---|
| Context | 1,000,000 tokens | 128,000 tokens |
| Longest reply | 131,072 tokens | 32,768 tokens |
| Tool calls | Yes, every tool_choice | Yes, tool_choice auto or none |
| Reads screenshots | Yes, up to 10 per request | No, text only |
| Thinking | Off unless asked | Always, briefly |
| Per 1M tokens | $0.45 in · $0.011 cached · $1.75 out | $0.20 in · $0.04 cached · $0.65 out |
Use DeepSeek for agent work. A whole repository fits in its context, it calls tools in every form, and the history an agent resends on each call bills at the cached $0.011 per million. Use GLM for short one-off tasks that don’t resend a long history, where its lower fresh-input and output prices win.
Both models have their refusals removed from the weights, so work near a sensitive subject, such as security testing on your own systems or moderation tooling, gets code instead of a refusal. Compare the models.
Thinking
DeepSeek answers at once unless a request names a reasoning_effort, which suits the quick edit-and-run loop of an agent. For planning or a hard bug, ask it to think: it takes none, low, high, max. Other apps’ minimal, medium and xhigh run at the nearest of these; any other value is refused with 400 invalid_reasoning_effort. Thinking is billed as output.
In Aider, start with --reasoning-effort high, or type /reasoning-effort high in a session. The settings file above lists reasoning_effort as a setting the model accepts, so Aider sends it without a warning.
What a session costs
An agent sends the whole conversation on every call: the instructions, the files it read, every step so far. Say a call sends 60,000 tokens, 55,000 of them the same start as the last call, and writes 1,000. On DeepSeek that call costs about $0.0046, so 200 calls are about $0.92. With no cache the same call would be $0.0288.
- Caching is automatic: nothing to turn on. A start of about 1,000 tokens or more, repeated within a few minutes, bills at the cached price.
- Each call holds what it could cost, its prompt and its max output, and settles to what it used. At 32,768 max output tokens the output part of the hold is about $0.0573.
- The console shows each call’s real tokens, cached tokens and credits. An agent’s own cost counter may not know the cached price, and then reads high.
If it doesn’t work
| The agent shows | Fix |
|---|---|
| 401 | The key is wrong or revoked. Paste it again, with no spaces or quotes. |
| 402 | The account is out of bought credits. Top up from $5 in the console, and turn on Auto top-up there so a long task never stops halfway: when the balance drops under the amount you pick, it adds credits on your saved card. |
| 429 | Over 120 requests a minute on one key, or past a daily cap you set on it. Agents that run several sub-agents at once hit this first. Wait the seconds in Retry-After, raise the cap in the console, or give each agent its own key. |
400 invalid_reasoning_effort | The agent sent an effort the model doesn’t take. DeepSeek takes none, low, high, max; GLM takes low or high. |
| 404 | The URL is wrong or has the path twice. Use https://nokeep.ai/v1, without /chat/completions, and check the model id against /v1/models. |
| 503 | The model is busy. Retry in a few seconds; nothing was charged. |
| The fixed test line | The setup works. Swap in your own key to get real replies. |
Every error is listed with its fix in Errors.
Questions
Is my code kept?
No. We keep one row of counts per call: the time, the key, the model, the tokens, the credits and the status. Never the prompt, the files or the reply. What we keep.
Why does the second call cost less than the first?
The second call starts the way the first did, so that start is read from cache at $0.011 per million tokens instead of $0.45. Most of an agent’s input is cached after its first call.
Does Aider’s cost report match the bill?
Close, with the metadata file above, but it doesn’t know the cached price, so it reads high once the cache kicks in. The console shows each call’s real cost.