Environment Variables
🌍 Configure ReasonKit through environment variables.
Environment variables provide a way to configure ReasonKit without modifying config files, making it ideal for CI/CD, Docker, and multi-environment setups.
API Keys
LLM Provider Keys
# Anthropic Claude (Recommended)
export ANTHROPIC_API_KEY="sk-ant-..."
# OpenAI
export OPENAI_API_KEY="sk-..."
# OpenRouter (300+ models)
export OPENROUTER_API_KEY="sk-or-..."
# Google Gemini
export GOOGLE_API_KEY="..."
# Local (Ollama) - no key needed
# Just ensure Ollama is running
Priority Order
If multiple keys are set, ReasonKit uses this priority:
ANTHROPIC_API_KEY(Claude)OPENAI_API_KEY(GPT)OPENROUTER_API_KEY(OpenRouter)GOOGLE_API_KEY(Gemini)- Local Ollama (if available)
Override with --provider:
rk-core think "question" --provider openai
Configuration Variables
Core Settings
# Default profile
export RK_PROFILE="balanced"
# Default provider
export RK_PROVIDER="anthropic"
# Default model
export RK_MODEL="claude-sonnet-4-20250514"
# Output format
export RK_OUTPUT="pretty" # pretty, json, markdown
# Timeout (seconds)
export RK_TIMEOUT="180"
# Verbosity
export RK_VERBOSE="false"
Path Settings
# Config file location
export RK_CONFIG="$HOME/.config/reasonkit/config.toml"
# Cache directory
export RK_CACHE_DIR="$HOME/.cache/reasonkit"
# Log file location
export RK_LOG_FILE="$HOME/.local/share/reasonkit/reasonkit.log"
Feature Flags
# Enable/disable features
export RK_STREAMING="true" # Stream output as it generates
export RK_CACHE="true" # Cache responses
export RK_TELEMETRY="false" # Anonymous usage stats
export RK_COLOR="auto" # auto, always, never
Provider-Specific Variables
Anthropic (Claude)
export ANTHROPIC_API_KEY="sk-ant-..."
export ANTHROPIC_MODEL="claude-sonnet-4-20250514"
export ANTHROPIC_MAX_TOKENS="4096"
OpenAI
export OPENAI_API_KEY="sk-..."
export OPENAI_MODEL="gpt-4-turbo"
export OPENAI_ORG_ID="org-..." # Optional
export OPENAI_BASE_URL="https://api.openai.com/v1" # For proxies
OpenRouter
export OPENROUTER_API_KEY="sk-or-..."
export OPENROUTER_MODEL="anthropic/claude-sonnet-4"
export OPENROUTER_SITE_URL="https://yourapp.com" # For rankings
export OPENROUTER_SITE_NAME="YourApp"
Ollama (Local)
export OLLAMA_HOST="http://localhost:11434"
export OLLAMA_MODEL="llama3.2"
Profile Variables
Override profile settings:
# GigaThink settings
export RK_GIGATHINK_PERSPECTIVES="15"
export RK_GIGATHINK_INCLUDE_CONTRARIAN="true"
# LaserLogic settings
export RK_LASERLOGIC_DEPTH="deep"
export RK_LASERLOGIC_FALLACY_DETECTION="true"
# ProofGuard settings
export RK_PROOFGUARD_SOURCES="5"
export RK_PROOFGUARD_REQUIRE_CITATION="true"
# BrutalHonesty settings
export RK_BRUTALHONESTY_SEVERITY="high"
Development Variables
# Debug mode
export RK_DEBUG="true"
# Log level
export RK_LOG_LEVEL="debug" # trace, debug, info, warn, error
# Disable SSL verification (dev only!)
export RK_INSECURE="false"
# Mock responses (for testing)
export RK_MOCK="false"
Docker Usage
FROM rust:latest
RUN cargo install reasonkit-core
ENV ANTHROPIC_API_KEY=""
ENV RK_PROFILE="balanced"
ENV RK_OUTPUT="json"
ENTRYPOINT ["rk-core"]
docker run -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
reasonkit think "question"
CI/CD Examples
GitHub Actions
jobs:
analyze:
runs-on: ubuntu-latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
RK_PROFILE: balanced
RK_OUTPUT: json
steps:
- uses: actions/checkout@v4
- name: Install ReasonKit
run: cargo install reasonkit-core
- name: Run Analysis
run: rk-core think "Is this ready to ship?" > analysis.json
GitLab CI
analyze:
variables:
ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY
RK_PROFILE: balanced
script:
- cargo install reasonkit-core
- rk-core think "question" --output json
Precedence Order
Settings are applied in this order (later overrides earlier):
- Built-in defaults
- Config file (
~/.config/reasonkit/config.toml) - Environment variables (
RK_*) - Command-line flags (
--profile, etc.)
Related
- Configuration — Config file reference
- Exit Codes — Scripting with exit codes
- Scripting — Full scripting guide