Skip to content

Environment Variables

Environment variables provide configuration and credentials for automation and server deployment scenarios.

ANTHROPIC_API_KEY / CRAFT_ANTHROPIC_API_KEY

Section titled “ANTHROPIC_API_KEY / CRAFT_ANTHROPIC_API_KEY”

Provide an Anthropic API key without storing it locally. Both names are supported; CRAFT_ANTHROPIC_API_KEY takes precedence if both are set.

Terminal window
export ANTHROPIC_API_KEY="sk-ant-api03-..."
craft -p "Check my tasks"

Provide a Claude OAuth token (for Claude Pro/Max subscriptions) without storing it locally.

Terminal window
export CRAFT_CLAUDE_OAUTH_TOKEN="your-oauth-token"

Override the API endpoint URL. This is set automatically by Craft Agents when you configure a non-Anthropic provider (OpenRouter, Vercel AI Gateway, Ollama, or custom endpoint) via the UI.

Terminal window
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"

You can also set this manually to route all API calls through a custom endpoint:

Terminal window
# Use OpenRouter
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
# Use local Ollama
export ANTHROPIC_BASE_URL="http://localhost:11434"

When using AWS Bedrock with authType: "environment", the subprocess inherits standard AWS environment variables from your shell:

Terminal window
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="..."
export AWS_SESSION_TOKEN="..." # optional, for STS temporary credentials
export AWS_REGION="us-east-1" # or set awsRegion in the connection config
export AWS_PROFILE="my-profile" # use a named profile from ~/.aws/credentials

These follow the standard AWS SDK credential chain~/.aws/credentials, SSO sessions, IAM roles, and instance profiles all work.

Override the default configuration directory. By default, Craft Agents stores configuration in ~/.craft-agent/.

Terminal window
export CRAFT_CONFIG_DIR="/custom/path/to/config"

This affects the location of:

  • config.json
  • preferences.json
  • credentials.enc
  • Workspace configurations

Enable or disable local MCP server support (stdio subprocess servers).

Terminal window
export CRAFT_LOCAL_MCP_ENABLED="false"
ValueBehavior
"true"Enable local MCP servers (default when not set)
Any other valueDisable local MCP servers

This can also be configured per-workspace in the workspace settings.

Enable debug logging for troubleshooting. When set, additional diagnostic information is written to the log file.

Terminal window
export CRAFT_DEBUG="true"

These configure the remote server when running in standalone or embedded mode.

Bearer token for server authentication. Required for both server and client.

Terminal window
export CRAFT_SERVER_TOKEN=$(openssl rand -hex 32)

Server URL for client connections. Set this on the client side to connect to a remote server.

Terminal window
export CRAFT_SERVER_URL=wss://your-server:9100

Bind address for the server. Defaults to 127.0.0.1 (localhost only). Set to 0.0.0.0 to accept remote connections.

Terminal window
export CRAFT_RPC_HOST=0.0.0.0

Server port. Defaults to 9100.

Terminal window
export CRAFT_RPC_PORT=9100

PEM certificate and private key files for TLS. Required for remote connections (wss://). Can be omitted for localhost development.

Terminal window
export CRAFT_RPC_TLS_CERT=/path/to/cert.pem
export CRAFT_RPC_TLS_KEY=/path/to/key.pem

Optional PEM CA chain file for custom certificate authorities.

Terminal window
export CRAFT_RPC_TLS_CA=/path/to/ca.pem

These variables are primarily used for development and multi-instance scenarios.

Override the Vite dev server port. Automatically set when running from numbered instance folders.

Terminal window
export CRAFT_VITE_PORT="5173"

Override the application display name. Useful for distinguishing multiple instances.

Terminal window
export CRAFT_APP_NAME="Craft Agents [Dev]"

Instance identifier for multi-instance support. When set, adds a badge to the dock icon.

Terminal window
export CRAFT_INSTANCE_NUMBER="1"

Custom deep link URL scheme. Default is craftagents.

Terminal window
export CRAFT_DEEPLINK_SCHEME="craftagents1"

URL of the Vite development server. Used internally during development.

Terminal window
export VITE_DEV_SERVER_URL="http://localhost:5173"

For API credentials, the lookup order is:

  1. CRAFT_ANTHROPIC_API_KEY or ANTHROPIC_API_KEY environment variable
  2. CRAFT_CLAUDE_OAUTH_TOKEN environment variable (for OAuth)
  3. Stored credential in ~/.craft-agent/credentials.enc
  4. Interactive prompt (if running interactively)

For API base URL:

  1. ANTHROPIC_BASE_URL environment variable
  2. Connection base URL (configured in LLM connections)
  3. Default (https://api.anthropic.com)

For model selection:

  1. LLM connection default model (if set)
  2. App-level model defaults (per provider)
  3. System default (Claude Sonnet)

For configuration directory:

  1. CRAFT_CONFIG_DIR environment variable
  2. Default ~/.craft-agent/
#!/bin/bash
export ANTHROPIC_API_KEY="${SECRETS_ANTHROPIC_KEY}"
craft -w "Work" -p "Generate release notes from recent commits"
ENV ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
ENV CRAFT_CONFIG_DIR=/app/config
CMD ["craft", "-w", "default", "-p", "..."]

Use a different API key for one command:

Terminal window
ANTHROPIC_API_KEY="sk-ant-different-key" craft -p "Quick check"
Terminal window
export CRAFT_CONFIG_DIR="/home/user/.config/craft-agent"
craft -p "Using custom config location"

Secure alternatives:

Terminal window
# Read from file
export ANTHROPIC_API_KEY=$(cat ~/.secrets/anthropic-key)
# Read from secret manager
export ANTHROPIC_API_KEY=$(aws secretsmanager get-secret-value --secret-id anthropic-key --query SecretString --output text)
# Use .env file (not committed to git)
source .env && craft -p "..."