Skip to main content

Configuration Reference

VaultysClaw is configured entirely through environment variables. Both the control plane and agent controller read from .env.local (development) or process environment variables (production / Docker).

Control plane

Set in packages/control-plane/.env.local:

Server

VariableDefaultDescription
PORT3000HTTP server port
HOSTNAMElocalhostBind address
NODE_ENVdevelopmentdevelopment or production
WS_PORT8080WebSocket hub port

Authentication

VariableRequiredDescription
NEXTAUTH_URLYesFull public URL of the control plane, e.g. https://vaultysclaw.acme.com
NEXTAUTH_SECRETYesRandom secret for signing NextAuth sessions. Generate with openssl rand -base64 32

Database

VariableDefaultDescription
DATABASE_URLsqlite:./data/vaultysclaw.dbSQLite database file path

VaultysId

VariableDefaultDescription
VAULTYS_ID_PATH./.vaultys/control-plane.idPath to the control plane's identity file. Created automatically on first run. Back this up.

OAuth providers (optional)

Enable social login by configuring one or more OAuth providers:

# GitHub
GITHUB_ID=your-github-oauth-app-id
GITHUB_SECRET=your-github-oauth-app-secret

# Google
GOOGLE_ID=your-google-client-id
GOOGLE_SECRET=your-google-client-secret

Integrations

Some integrations are configured entirely through the control plane UI and stored encrypted in the database — no environment variables are involved. The server uses its VaultysId to encrypt credentials at rest.

IntegrationSettings pathWhat is stored
File storage (S3 / filesystem)Settings → Integrations → File StorageS3 endpoint, bucket, region, access key ID, secret access key
Docling (PDF/DOCX conversion)Settings → Integrations → DoclingDocling server URL and discovered API version

Changing either of these takes effect immediately without a server restart.

LiteLLM integration (optional)

Connect the control plane to a LiteLLM proxy to enable the model registry, per-realm virtual keys, and automatic LLM config push. See the LLM Routing guide for a full walkthrough.

VariableDefaultDescription
LITELLM_BASE_URLBase URL of the LiteLLM proxy, e.g. http://litellm:4000
LITELLM_MASTER_KEYLiteLLM master key used to register models and generate virtual keys.

If either variable is absent, LiteLLM sync calls are silently skipped — the model registry UI is still available but models are not registered with a proxy.

Logging

VariableDefaultDescription
LOG_LEVELinfoPino log level: trace, debug, info, warn, error

Agent controller

Set in packages/agent-controller/.env.local:

Identity

VariableDefaultDescription
AGENT_NAMEagent-1Human-readable display name for this agent
AGENT_VAULTYS_ID_PATH./.vaultys/agent.idPath to the agent's identity file. Created automatically. Back this up.

Control plane connection

VariableDefaultDescription
CONTROL_PLANE_URLhttp://localhost:3000HTTP URL of the control plane
CONTROL_PLANE_WS_HOSTlocalhostWebSocket hub hostname
CONTROL_PLANE_WS_PORT8080WebSocket hub port

HTTP server

VariableDefaultDescription
AGENT_PORT3001Agent's local HTTP server port (health checks)

LLM configuration

VariableRequiredDescription
LLM_PROVIDERYesopenai, anthropic, google, ollama, or openai-compatible
LLM_MODELYesModel name, e.g. gpt-4o, claude-sonnet-4-5, gemini-2.0-flash, llama3.2
LLM_API_KEYConditionalAPI key (not required for Ollama)
LLM_BASE_URLConditionalBase URL for ollama or openai-compatible providers
LLM_SYSTEM_PROMPTNoCustom system prompt prepended to all conversations
LLM_MAX_TOKENS4096Maximum tokens per LLM response
LLM_PRICE_INPUTNoPrice per million input tokens (for cost tracking)
LLM_PRICE_OUTPUTNoPrice per million output tokens

Provider examples

# OpenAI
LLM_PROVIDER=openai
LLM_MODEL=gpt-4o
LLM_API_KEY=sk-proj-...

# Anthropic Claude
LLM_PROVIDER=anthropic
LLM_MODEL=claude-sonnet-4-5
LLM_API_KEY=sk-ant-...

# Google Gemini
LLM_PROVIDER=google
LLM_MODEL=gemini-2.0-flash
LLM_API_KEY=AI...

# Ollama (local, no key)
# Use the bare host — VaultysClaw appends /v1 automatically
LLM_PROVIDER=ollama
LLM_MODEL=llama3.2
LLM_BASE_URL=http://localhost:11434

# Groq (OpenAI-compatible)
LLM_PROVIDER=openai-compatible
LLM_MODEL=llama-3.3-70b-versatile
LLM_API_KEY=gsk_...
LLM_BASE_URL=https://api.groq.com/openai/v1

# LM Studio (local)
LLM_PROVIDER=openai-compatible
LLM_MODEL=local-model
LLM_BASE_URL=http://localhost:1234/v1

Capabilities

VariableDefaultDescription
AGENT_CAPABILITIES""Comma-separated list of requested capabilities. Admin approval is still required.

Example:

AGENT_CAPABILITIES=file_access,api_call,internet_access

File operations

VariableDefaultDescription
AGENT_WORKSPACE_ROOTCurrent working directoryRoot directory for file_access operations

Skills (custom tools)

VariableDefaultDescription
SKILLS_DIR~/.vaultysclaw/skillsDirectory containing custom skill definitions
SKILLS_WATCHfalseHot-reload skills when files change

Tool approval

VariableDefaultDescription
APPROVAL_TIMEOUT_MS600000How long (ms) the agent waits for admin approval of a tool before timing out

Logging

VariableDefaultDescription
LOG_LEVELinfoPino log level
NODE_ENVdevelopmentAffects log format (pretty in dev, JSON in prod)

Docker Compose

A reference docker-compose.yml is provided in the docker/ directory:

cp docker/.env.docker.example docker/.env
# Edit docker/.env with your values
docker compose -f docker/docker-compose.yml up

Key variables in the Docker env file mirror the above, prefixed by service name for clarity.


Security checklist

Before going to production, verify:

  • NEXTAUTH_SECRET is a cryptographically random string (≥ 32 bytes)
  • VAULTYS_ID_PATH and AGENT_VAULTYS_ID_PATH files are backed up securely
  • LLM API keys and LITELLM_MASTER_KEY are stored in a secrets manager, not in .env files committed to git
  • .vaultys/ directories are in .gitignore
  • NODE_ENV=production is set on all services
  • NEXTAUTH_URL matches the actual public URL (required for OAuth redirect)