Skip to content

Environment Variables

Looplia uses environment variables for API keys, model configuration, and development settings.

VariableDescriptionRequired
ANTHROPIC_API_KEYAnthropic API key for ClaudeYes*
ZENMUX_API_KEYZenMux proxy API keyYes*
OPENROUTER_API_KEYOpenRouter API keyYes*
OLLAMA_API_KEYOllama API key (defaults to “ollama”)No
CLAUDE_CODE_OAUTH_TOKENClaude Code OAuth token (alternative auth)No
Terminal window
# Option 1: Export in current session
export ANTHROPIC_API_KEY=sk-ant-api03-...
# Option 2: Add to shell profile (~/.zshrc or ~/.bashrc)
echo 'export ANTHROPIC_API_KEY=sk-ant-api03-...' >> ~/.zshrc
source ~/.zshrc
# Option 3: Use .env file (for development)
echo 'ANTHROPIC_API_KEY=sk-ant-api03-...' >> .env
env $(cat .env) looplia run writing-kit --file test.md

Use OpenRouter to access multiple AI providers through a single API with centralized model management:

Terminal window
# 1. Create preset in OpenRouter dashboard
# Visit: https://openrouter.ai/settings/presets
# - Click "Create Preset"
# - Name it exactly "looplia-default"
# - Select your preferred model (Claude, GPT-4, Gemini, etc.)
# - Configure routing, fallbacks, and providers
# - Save the preset
# 2. Set OpenRouter API key
export OPENROUTER_API_KEY=sk-or-v1-...
# 3. Apply preset
looplia config provider preset OPENROUTER_PRESET
# 4. Run workflow
looplia run writing-kit --file article.md

Benefits:

  • Access 100+ models through one integration
  • Change models via dashboard without reconfiguring looplia
  • Use advanced routing (fallbacks, load balancing, cost optimization)
  • Centralized billing and usage tracking

Use your existing Claude Code subscription instead of separate API credits:

Terminal window
# 1. Apply a subscription preset
looplia config provider preset CLAUDE_CODE_SUBSCRIPTION_SONNET
# 2. Set CLAUDE_CODE_OAUTH_TOKEN environment variable
# On macOS, extract from Keychain:
export CLAUDE_CODE_OAUTH_TOKEN=$(security find-generic-password -s "Claude Code-credentials" -w | jq -r '.claudeAiOauth.accessToken')
# Or set directly if you have the token:
export CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-...
# 3. Run workflow
looplia run writing-kit --file article.md

Available subscription presets:

  • CLAUDE_CODE_SUBSCRIPTION_HAIKU — Uses Claude Haiku 4.5
  • CLAUDE_CODE_SUBSCRIPTION_SONNET — Uses Claude Sonnet 4.5
  • CLAUDE_CODE_SUBSCRIPTION_OPUS — Uses Claude Opus 4.5
VariableDescriptionDefault
LOOPLIA_AGENT_MODEL_MAINOverride main agent modelProvider default
LOOPLIA_AGENT_MODEL_EXECUTOROverride skill executor modelProvider default
ANTHROPIC_DEFAULT_HAIKU_MODELOverride haiku tier model (SDK)Main model
ANTHROPIC_DEFAULT_SONNET_MODELOverride sonnet tier model (SDK)Main model
ANTHROPIC_DEFAULT_OPUS_MODELOverride opus tier model (SDK)Main model
Terminal window
# Use Opus for main agent
export LOOPLIA_AGENT_MODEL_MAIN=claude-opus-4-20250514
# Use Haiku for executor (faster, cheaper)
export LOOPLIA_AGENT_MODEL_EXECUTOR=claude-haiku-4-20250514
# Run workflow
looplia run writing-kit --file article.md
VariableDescriptionDefault
LOOPLIA_DEVEnable development modefalse
LOOPLIA_DEV_ROOTPath to looplia-core source repository-
LOOPLIA_HOMEOverride workspace path~/.looplia
LOOPLIA_DEBUGEnable debug loggingfalse
LOOPLIA_OUTPUT_DIRDefault output directory for run commandcwd

When developing Looplia from source, use dev mode to load plugins directly without running init:

Terminal window
# Enable dev mode
export LOOPLIA_DEV=true
export LOOPLIA_DEV_ROOT=~/projects/looplia-core
# Run from any directory - plugins loaded from source
cd ~/my-content
looplia run writing-kit --file article.md

In dev mode:

  • Plugins are loaded from $LOOPLIA_DEV_ROOT/plugins/
  • Changes to plugin files take effect immediately
  • No need to run looplia init after changes
Terminal window
# Enable debug output
export LOOPLIA_DEBUG=1
# Run with verbose logging
looplia run writing-kit --file test.md

Debug logs are written to ~/.looplia/logs/.

Use LOOPLIA_OUTPUT_DIR to set a default output location for workflow results:

Terminal window
# Set default output directory
export LOOPLIA_OUTPUT_DIR=~/looplia-outputs
# Outputs will be copied here after each run
looplia run writing-kit --file article.md
# → Results in ~/looplia-outputs/

Priority order for output directory:

  1. --output / -o flag (highest priority)
  2. LOOPLIA_OUTPUT_DIR environment variable
  3. Current working directory (default)

Use LOOPLIA_HOME to override the default workspace location:

Terminal window
# Use custom path
export LOOPLIA_HOME=/custom/path
looplia init
# Useful for testing
export LOOPLIA_HOME=$(mktemp -d)
looplia init --yes

This is useful for:

  • Testing isolated installations
  • Running multiple workspaces
  • CI/CD with temporary directories

These variables work with the provider system:

VariableDescription
ANTHROPIC_API_KEYUsed when provider is anthropic
ZENMUX_API_KEYUsed when provider is zenmux (auto-mapped to ANTHROPIC_API_KEY for SDK)
OPENROUTER_API_KEYUsed when provider is openrouter (auto-mapped to ANTHROPIC_AUTH_TOKEN for SDK)
OLLAMA_API_KEYUsed when provider is ollama (auto-mapped to ANTHROPIC_API_KEY for SDK, defaults to “ollama”)

Looplia automatically maps provider-specific API keys to ANTHROPIC_API_KEY for SDK compatibility (except OpenRouter, which uses ANTHROPIC_AUTH_TOKEN):

ZenMux:

Terminal window
# Set ZenMux key
export ZENMUX_API_KEY=sk-zenmux-...
# Configure ZenMux provider
looplia config provider preset ZENMUX_MINIMAX_M21
# The ZENMUX_API_KEY is automatically used
looplia run writing-kit --file article.md

OpenRouter:

Terminal window
# Set OpenRouter key
export OPENROUTER_API_KEY=sk-or-v1-...
# Configure OpenRouter provider
looplia config provider preset OPENROUTER_PRESET
# The OPENROUTER_API_KEY is automatically used
looplia run writing-kit --file article.md

Ollama:

Terminal window
# Optional: Set Ollama key (defaults to "ollama" if not set)
export OLLAMA_API_KEY=ollama
# Configure Ollama provider
looplia config provider preset OLLAMA_GLM47_CLOUD
# Uses OLLAMA_API_KEY or defaults to "ollama"
looplia run writing-kit --file article.md

API Keys: Config file takes precedence when explicitly set:

  1. Subscription auth (highest priority) — CLAUDE_CODE_OAUTH_TOKEN with subscription preset
  2. Config file authToken — set via looplia config provider set auth-token
  3. Endpoint-specific env varZENMUX_API_KEY for ZenMux, OPENROUTER_API_KEY for OpenRouter, OLLAMA_API_KEY for Ollama, ANTHROPIC_API_KEY for Anthropic
  4. Default env var (ANTHROPIC_API_KEY)
  5. Ollama default (lowest priority) — literal "ollama" string when provider is Ollama and no other auth is set

Model Settings: Environment variables take precedence:

  1. Environment variables (highest priority)
  2. Config file (~/.looplia/looplia.setting.json)
  3. Default values (lowest priority)
Terminal window
# Model env vars still override config
export LOOPLIA_AGENT_MODEL_MAIN=claude-opus-4-20250514
looplia run writing-kit --file article.md

For CI/CD pipelines, set variables in your pipeline configuration:

jobs:
process:
runs-on: ubuntu-latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- run: bunx looplia init --yes
- run: bunx looplia run writing-kit --file content.md --no-streaming

With Claude Code subscription:

jobs:
process:
runs-on: ubuntu-latest
env:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- run: bunx looplia init --yes
- run: bunx looplia config provider preset CLAUDE_CODE_SUBSCRIPTION_SONNET
- run: bunx looplia run writing-kit --file content.md --no-streaming
FROM oven/bun:latest
ENV ANTHROPIC_API_KEY=""
RUN bunx looplia init --yes
CMD ["bunx", "looplia", "run", "writing-kit", "--file", "/data/content.md"]
Terminal window
docker run -e ANTHROPIC_API_KEY=sk-ant-... -v ./content:/data my-looplia
VariableTypeDescription
ANTHROPIC_API_KEYstringAnthropic API key
ZENMUX_API_KEYstringZenMux proxy API key
OPENROUTER_API_KEYstringOpenRouter API key
OLLAMA_API_KEYstringOllama API key (defaults to “ollama”)
CLAUDE_CODE_OAUTH_TOKENstringOAuth token authentication
LOOPLIA_AGENT_MODEL_MAINstringMain agent model override
LOOPLIA_AGENT_MODEL_EXECUTORstringExecutor model override
ANTHROPIC_DEFAULT_HAIKU_MODELstringHaiku tier model (SDK)
ANTHROPIC_DEFAULT_SONNET_MODELstringSonnet tier model (SDK)
ANTHROPIC_DEFAULT_OPUS_MODELstringOpus tier model (SDK)
LOOPLIA_DEVbooleanEnable development mode
LOOPLIA_DEV_ROOTpathDevelopment source path
LOOPLIA_HOMEpathOverride workspace path (~/.looplia)
LOOPLIA_DEBUGbooleanEnable debug logging
LOOPLIA_OUTPUT_DIRpathDefault output directory for run command