Skip to content
All docs

Coding agents

Goose setup

goose reads custom providers from JSON files. Save the nokeep file below, give goose your key, and pick nokeep as the provider in the desktop app or the CLI.

Checked 30 October 2026

The values

base_url
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

  1. Save the file below as custom_nokeep.json in ~/.config/goose/custom_providers/ on macOS and Linux, or %APPDATA%\Block\goose\config\custom_providers\ on Windows. Make the folder if it isn’t there.
  2. Give goose the key. In the terminal, set NOKEEP_API_KEY to sk-nokeep-test. In goose Desktop, open Settings, then Models, then Configure providers, find nokeep and paste the key; goose keeps it in your keychain.
  3. Start a session on it: in the terminal with the command below, or in goose Desktop by choosing nokeep and deepseek-v4.1-flash-uncensored as the model.
  4. Send a message. A reply that starts “Connected to” means the setup works.
  5. Swap in your own key from the console.
custom_providers/custom_nokeep.json
{
  "name": "custom_nokeep",
  "engine": "openai",
  "display_name": "nokeep",
  "description": "OpenAI-compatible API for uncensored DeepSeek and GLM, paid with prepaid credits",
  "api_key_env": "NOKEEP_API_KEY",
  "base_url": "https://nokeep.ai/v1",
  "model_doc_link": "https://nokeep.ai/docs/models",
  "models": [
    {
      "name": "deepseek-v4.1-flash-uncensored",
      "context_limit": 1000000,
      "input_token_cost": 0.00000045,
      "output_token_cost": 0.00000175,
      "cache_read_token_cost": 0.000000011,
      "currency": "USD",
      "reasoning": false,
      "supports_vision": true
    },
    {
      "name": "deepseek-v4.1-flash-1017-uncensored",
      "context_limit": 1000000,
      "input_token_cost": 0.00000045,
      "output_token_cost": 0.00000175,
      "cache_read_token_cost": 0.000000011,
      "currency": "USD",
      "reasoning": false,
      "supports_vision": true
    },
    {
      "name": "glm-5.3-flash-uncensored",
      "context_limit": 128000,
      "input_token_cost": 0.0000002,
      "output_token_cost": 0.00000065,
      "cache_read_token_cost": 0.00000004,
      "currency": "USD",
      "reasoning": false,
      "supports_vision": false
    }
  ],
  "supports_streaming": true,
  "requires_auth": true
}
Shell
export NOKEEP_API_KEY=sk-nokeep-test
goose session --provider custom_nokeep --model deepseek-v4.1-flash-uncensored

goose reads the file when a session starts, so restart goose Desktop after saving it. To make nokeep the default, set GOOSE_PROVIDER to custom_nokeep and GOOSE_MODEL to the model id in goose’s config.yaml or your environment. Keep the key itself out of config.yaml: goose ignores keys there.

What the file sets

  • base_url stops at /v1; goose adds /chat/completions itself.
  • context_limit is each model’s real window, so goose knows when to summarise a long session.
  • The three costs are USD per token, cached reads included, so goose’s cost display matches the bill.
  • supports_vision lets you give DeepSeek screenshots. GLM reads text only.
  • The file also lists the dated DeepSeek id, held to one build, for when you want a session to stay on it. glm-5.3-flash-uncensored is there for short tasks.

You can also add the same provider by hand: goose Desktop’s Add Custom Provider form, or goose configure then Custom Providers. Both write a file like this one, but without the context windows and prices.

Which model

deepseek-v4.1-flash-uncensoredglm-5.3-flash-uncensored
Context1,000,000 tokens128,000 tokens
Longest reply131,072 tokens32,768 tokens
Tool callsYes, every tool_choiceYes, tool_choice auto or none
Reads screenshotsYes, up to 10 per requestNo, text only
ThinkingOff unless askedAlways, 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 goose, the file keeps reasoning off, so goose never sends an effort and DeepSeek answers at once. Switching it on makes goose send low even with thinking off, so every call thinks and costs more; its medium runs as high. For a hard task, use a tool that can send reasoning_effort: high, or call the API as in Thinking.

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.

How billing works.

If it doesn’t work

The agent showsFix
401The key is wrong or revoked. Paste it again, with no spaces or quotes.
402The 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.
429Over 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_effortThe agent sent an effort the model doesn’t take. DeepSeek takes none, low, high, max; GLM takes low or high.
404The URL is wrong or has the path twice. Use https://nokeep.ai/v1, without /chat/completions, and check the model id against /v1/models.
503The model is busy. Retry in a few seconds; nothing was charged.
The fixed test lineThe 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.

Do goose’s extensions work with this?

Yes. Extensions reach the model as tools in the OpenAI format, and DeepSeek calls them like any other tool.