Using DeepSeek with Oh My Pi

Oh My Pi is a terminal AI coding agent. As of v14.5 it ships DeepSeek V4 model entries, but the built-in compat is incomplete — a custom models.yml is still required for reliable use.

Prerequisites

Install Oh My Pi: https://github.com/can1357/oh-my-pi#installation

Get an API key from the DeepSeek Platform:

export DEEPSEEK_API_KEY=<your API key>

Configuration

Create ~/.omp/agent/models.yml:

providers:
  deepseek:
    baseUrl: https://api.deepseek.com
    api: openai-completions
    apiKey: DEEPSEEK_API_KEY
    authHeader: true
    models:
      - id: deepseek-v4-pro
        name: DeepSeek V4 Pro
        reasoning: true
        thinking:
          minLevel: high
          maxLevel: xhigh
          mode: effort
        input: [text]
        contextWindow: 1000000
        maxTokens: 384000
        compat:
          supportsDeveloperRole: false
          supportsReasoningEffort: true
          maxTokensField: max_tokens
          reasoningEffortMap:
            high: high
            xhigh: max
          supportsToolChoice: false
          requiresReasoningContentForToolCalls: true
          requiresAssistantContentForToolCalls: true
          extraBody:
            thinking:
              type: enabled
      - id: deepseek-v4-flash
        name: DeepSeek V4 Flash
        reasoning: true
        thinking:
          minLevel: high
          maxLevel: xhigh
          mode: effort
        input: [text]
        contextWindow: 1000000
        maxTokens: 384000
        compat:
          supportsDeveloperRole: false
          supportsReasoningEffort: true
          maxTokensField: max_tokens
          reasoningEffortMap:
            high: high
            xhigh: max
          supportsToolChoice: false
          requiresReasoningContentForToolCalls: true
          requiresAssistantContentForToolCalls: true
          extraBody:
            thinking:
              type: enabled

Configuration notes

Basics

FieldNotes
baseUrl: https://api.deepseek.comDeepSeek OpenAI-compatible endpoint. Do not append /v1.
authHeader: trueSends Authorization: Bearer $DEEPSEEK_API_KEY. Does not go through OAuth /login.
supportsDeveloperRole: falseSends system prompt as system role. DeepSeek rejects the developer role.
maxTokensField: max_tokensDeepSeek uses max_tokens, not OpenAI's max_completion_tokens.

Thinking mode

FieldNotes
thinking.mode: effortUses effort-based thinking. OMP sends a reasoning_effort parameter.
thinking.minLevel: high / maxLevel: xhighLocks the selector to DeepSeek's two supported levels.
reasoningEffortMap: { high: high, xhigh: max }Maps OMP's xhigh to DeepSeek's max. Without this, xhigh is unrecognized.
extraBody.thinking.type: enabledExplicitly enables DeepSeek V4 thinking mode.
supportsReasoningEffort: trueAllows OMP to send reasoning_effort.

Three critical compat fields

These three fields are essential. Without them, DeepSeek V4 will return 400 errors when using tools in thinking mode.

FieldNotes
supportsToolChoice: falseDeepSeek V4 thinking mode rejects the tool_choice parameter.
requiresReasoningContentForToolCalls: trueDeepSeek requires reasoning_content to be preserved across tool-call turns in conversation history. Skipping this causes 400.
requiresAssistantContentForToolCalls: trueEnsures tool-call messages have non-null content. Use together with the field above.

Usage

cd /path/to/your-project
omp --model deepseek/deepseek-v4-pro

For faster responses:

omp --model deepseek/deepseek-v4-flash

Switch models inside Oh My Pi with /model or Ctrl+L.

Known issues

Do not rely on the built-in model entries. Recent builds list deepseek-v4-pro and deepseek-v4-flash via omp --list-models deepseek, but they lack the three critical compat fields above. Long thinking-mode conversations with tool calls will 400. Always use the models.yml configuration shown above.

Oh My Pi does not currently have a DeepSeek OAuth /login entry. API keys must be provided via the DEEPSEEK_API_KEY environment variable or the apiKey field in models.yml.

When using DeepSeek V4 through unofficial providers (DeepInfra, KiloCode, NVIDIA NIM, Zenmux, etc.) via OpenAI-compatible endpoints, reasoning_content replay behavior varies and compatibility is unresolved. Prefer the official api.deepseek.com endpoint.

In models.yml, compat replaces the built-in block wholesale — it does not merge. Always specify the full set of compat fields.