πŸ”§

Ripperdoc

Configuration

Configuring Ripperdoc models and behavior

Ripperdoc can be configured through configuration files or environment variables.

Configuration Files

Configuration is loaded in order of precedence:

  1. Global: ~/.ripperdoc.json
  2. Project: .ripperdoc/config.json
  3. Local: .ripperdoc/config.local.json (gitignored)

Project and local configuration override global configuration.

Model Configuration

Basic Model Setup

{
  "model_profiles": {
    "default": {
      "provider": "openai_compatible",
      "model": "deepseek-chat",
      "api_key": "YOUR_DEEPSEEK_KEY",
      "api_base": "https://api.deepseek.com",
      "max_tokens": 4096,
      "temperature": 0.0
    }
  },
  "model_pointers": {
    "main": "default",
    "quick": "default"
  }
}

Multiple Models

You can define multiple model profiles:

{
  "model_profiles": {
    "default": {
      "provider": "openai_compatible",
      "model": "deepseek-chat",
      "api_key": "YOUR_DEEPSEEK_KEY",
      "api_base": "https://api.deepseek.com"
    },
    "reasoner": {
      "provider": "openai_compatible",
      "model": "deepseek-reasoner",
      "api_key": "YOUR_DEEPSEEK_KEY",
      "api_base": "https://api.deepseek.com",
      "thinking_mode": "deepseek"
    },
    "local": {
      "provider": "openai_compatible",
      "model": "llama3.2",
      "api_base": "http://localhost:11434/v1",
      "api_key": null
    }
  },
  "model_pointers": {
    "main": "default",
    "quick": "reasoner"
  }
}

Switch between profiles using the /models command or --model flag (use the profile name from model_profiles):

ripperdoc --model reasoner

Model Profile Fields

FieldDescriptionRequired
providerProvider typeYes
modelModel identifierYes
api_keyAPI key (or use env var)Provider-specific
api_baseAPI base URLProvider-specific
auth_tokenBearer token authenticationNo
max_tokensMaximum output tokensNo
temperatureSampling temperatureNo
thinking_modeExtended thinking modeNo
max_input_tokensMaximum input tokensNo
max_output_tokensMaximum output tokensNo
openai_tool_modeTool calling mode for OpenAINo
supports_visionOverride image/vision support (true/false)No
input_cost_per_million_tokensCost tracking (input)No
output_cost_per_million_tokensCost tracking (output)No

Set supports_vision to true if your model supports image input and auto-detection does not pick it up.

Provider Options

ProviderRequired ConfigDescription
openai_compatibleapi_base, modelAny OpenAI-compatible API
anthropicapi_keyAnthropic Claude
geminiapi_keyGoogle Gemini
volcengineapi_key, modelVolcengine Seed 2.0
aliyunapi_key, modelAlibaba Cloud (Aliyun)
stepfunapi_key, modelStepFun (ι˜Άθ·ƒζ˜ŸθΎ°)
nvidiaapi_key, modelNVIDIA API endpoints

Provider Preset Mode

For simplified model configuration, you can use the provider preset mode:

ripperdoc --model claude-sonnet  # Auto-detects provider from model name

The system will automatically detect the correct provider and configuration based on the model name.

Authentication Options

{
  "model_profiles": {
    "with_api_key": {
      "provider": "openai_compatible",
      "api_key": "sk-xxx",
      "api_base": "https://api.example.com/v1",
      "model": "model-name"
    },
    "with_bearer_token": {
      "provider": "openai_compatible",
      "auth_token": "your-bearer-token",
      "api_base": "https://api.example.com/v1",
      "model": "model-name"
    }
  }
}

Thinking Mode

For models that support extended thinking (DeepSeek, Claude with extended thinking):

{
  "model_profiles": {
    "reasoning": {
      "provider": "openai_compatible",
      "model": "deepseek-reasoner",
      "api_key": "YOUR_DEEPSEEK_KEY",
      "api_base": "https://api.deepseek.com",
      "thinking_mode": "deepseek"
    }
  }
}

Thinking mode options:

ModeDescription
noneDisable extended thinking (default)
deepseekDeepSeek-style thinking
anthropicAnthropic-style thinking (Claude)
openrouterOpenRouter compatible mode
qwenQwen style thinking
gemini_openaiGemini OpenAI compatible mode
openaiOpenAI style thinking

When not set, the system will infer the correct thinking mode based on the provider automatically.

OpenAI Tool Mode

Control how tools are presented to OpenAI-compatible models:

{
  "model_profiles": {
    "custom": {
      "provider": "openai_compatible",
      "model": "model-name",
      "openai_tool_mode": "native"
    }
  }
}

Options:

  • native - Use OpenAI native tool calling
  • text - Use text-based tool descriptions

Cost Tracking

Track token costs per model:

{
  "model_profiles": {
    "expensive": {
      "provider": "openai_compatible",
      "model": "gpt-4",
      "api_key": "YOUR_KEY",
      "api_base": "https://api.openai.com/v1",
      "input_cost_per_million_tokens": 30.0,
      "output_cost_per_million_tokens": 60.0
    }
  }
}

Custom API Endpoints

For OpenAI-compatible APIs:

{
  "model_profiles": {
    "custom": {
      "provider": "openai_compatible",
      "api_base": "https://your-api-endpoint.com/v1",
      "api_key": "YOUR_CUSTOM_KEY",
      "model": "your-model-name"
    }
  },
  "model_pointers": {
    "main": "custom",
    "quick": "custom"
  }
}

Permission Settings

{
  "allowed_tools": ["Read", "Glob", "Grep", "LS", "Edit", "Bash"],
  "bash_allow_rules": [
    {"pattern": "npm *", "description": "Allow npm"}
  ],
  "bash_ask_rules": [
    {"pattern": "terraform *", "description": "Always ask before terraform"}
  ],
  "bash_deny_rules": [
    {"pattern": "rm -rf /", "description": "Block dangerous"}
  ]
}

See Permissions for detailed configuration.

Theme Configuration

Ripperdoc includes a built-in theme system for customizing the CLI appearance. Configure your preferred theme in the global config:

{
  "theme": "dark"
}

Available Themes

ThemeDescription
darkDefault dark theme with cyan accents
lightLight theme for bright terminals
monokaiMonokai-inspired color scheme
draculaDracula color scheme
solarized_darkSolarized dark color scheme
nordArctic, bluish color scheme

Switch themes at runtime using the /themes command:

> /themes              # Show current theme and list available
> /themes light        # Switch to light theme
> /themes preview nord # Preview nord theme colors

CLI Options

OptionDescription
--model NAMEUse a specific model profile
--yoloSkip permission prompts
--verboseEnable verbose output
--max-thinking-tokens NSet max thinking tokens
-c, --continueContinue last session
-p, --prompt TEXTNon-interactive prompt

Environment Variables

API keys can be provided in the config file. If you want to configure via env vars, Ripperdoc only reads RIPPERDOC_* variables (provider-specific vars like OPENAI_API_KEY are not used).

RIPPERDOC_ overrides

These variables override config values in memory for the current session (they are not persisted to disk). If no profile exists, set at least RIPPERDOC_MODEL, RIPPERDOC_PROTOCOL, or RIPPERDOC_BASE_URL so Ripperdoc can build a profile.

VariableDescription
RIPPERDOC_BASE_URLAPI base URL override (api_base)
RIPPERDOC_API_KEYAPI key override (api_key)
RIPPERDOC_AUTH_TOKENAuth token override (auth_token)
RIPPERDOC_MODELModel name override
RIPPERDOC_SMALL_FAST_MODELModel name for the quick pointer
RIPPERDOC_PROTOCOLProtocol family (anthropic, openai_compatible, gemini)

Other environment variables

VariableDescription
RIPPERDOC_MAX_RETRIESMax API retries (default: 10)
RIPPERDOC_API_TIMEOUTAPI timeout in seconds (default: 120)

See Environment Variables for a complete list.