AUTO-GENERATED by
bun run docs:env. Do not edit by hand — regenerate after changing theEnvSchemainsrc/config/env.ts.
Every variable recognised by protoWorkstacean is declared in the zod EnvSchema in src/config/env.ts. The schema is .strict(): at boot, parseEnv() rejects unknown schema-shaped keys. All declared vars are optional strings — the system degrades gracefully when an integration is unconfigured.
Summary
- 61 variables declared in
EnvSchema - 0 required (no
.optional()); the rest are optional - 34 variable(s) read via
process.envat runtime but not inEnvSchema(see Read directly (not in EnvSchema))
Core / runtime
| Variable | Required? | Description |
|---|---|---|
DATA_DIR | optional | — |
DEBUG | optional | Set to "1" or "true" for verbose debug logging. |
DISABLE_EVENT_VIEWER | optional | — |
ENABLED_PLUGINS | optional | — |
PORT | optional | Used by EventViewerPlugin when it manages its own port. |
TZ | optional | Timezone for cron schedule evaluation. |
WORKSPACE_DIR | optional | — |
WORKSTACEAN_API_KEY | optional | — |
WORKSTACEAN_BASE_URL | optional | Public URL of workstacean API — used by A2A push-notification webhooks (e.g. http://workstacean:3000). |
WORKSTACEAN_HTTP_PORT | optional | — |
WORKSTACEAN_INTERNAL_HOST | optional | Docker-network hostname to advertise in the A2A agent card when WORKSTACEAN_PUBLIC_BASE_URL is unset. Defaults to workstacean. |
WORKSTACEAN_PUBLIC_BASE_URL | optional | Canonical externally-reachable base URL advertised in the A2A agent card (e.g. https://ava.proto-labs.ai). When set, the card's url becomes ${WORKSTACEAN_PUBLIC_BASE_URL}/a2a. |
WORKSTACEAN_PUBLIC_URL | optional | — |
WORKSTACEAN_URL | optional | — |
LLM gateway
| Variable | Required? | Description |
|---|---|---|
ANTHROPIC_API_KEY | optional | — |
LLM_GATEWAY_URL | optional | — |
OPENAI_API_KEY | optional | — |
Router
| Variable | Required? | Description |
|---|---|---|
DISABLE_ROUTER | optional | — |
ROUTER_DEFAULT_SKILL | optional | — |
ROUTER_DM_DEFAULT_AGENT | optional | — |
ROUTER_DM_DEFAULT_SKILL | optional | — |
Observability (Langfuse)
| Variable | Required? | Description |
|---|---|---|
LANGFUSE_BASE_URL | optional | Alternative alias for LANGFUSE_HOST (legacy). |
LANGFUSE_HOST | optional | Primary Langfuse host — used by LangfuseLogger and ConversationTracer. |
LANGFUSE_PUBLIC_KEY | optional | — |
LANGFUSE_SECRET_KEY | optional | — |
A2A / protoMaker
| Variable | Required? | Description |
|---|---|---|
AVA_API_KEY | optional | — |
AVA_BASE_URL | optional | — |
Discord
| Variable | Required? | Description |
|---|---|---|
DISCORD_BOT_TOKEN | optional | — |
DISCORD_BUDGET_WEBHOOK_URL | optional | — |
DISCORD_CEREMONY_WEBHOOK_URL | optional | — |
DISCORD_DIGEST_CHANNEL | optional | — |
DISCORD_GOALS_WEBHOOK_URL | optional | — |
DISCORD_GUILD_ID | optional | — |
DISCORD_OPS_WEBHOOK_URL | optional | — |
DISCORD_WEBHOOK_ALERTS | optional | General-purpose alert webhook (world-engine-alert, fallback). |
DISCORD_WELCOME_CHANNEL | optional | — |
DM_CONVERSATION_TIMEOUT_MS | optional | Idle timeout (ms) before a DM conversation session expires (default: 15 min). |
DM_DEBOUNCE_MS | optional | Sliding-window debounce (ms) for batching rapid-fire DMs (default: 3000). |
MAILBOX_TTL_MS | optional | TTL (ms) for pending mailbox messages before they're swept (default: 10 min). |
GitHub
| Variable | Required? | Description |
|---|---|---|
GITHUB_APP_ID | optional | GitHub App credentials — the agent's reviews/comments/issue-closes post as the App's bot identity. |
GITHUB_APP_PRIVATE_KEY | optional | — |
GITHUB_TOKEN | optional | — |
GITHUB_WEBHOOK_PORT | optional | — |
GITHUB_WEBHOOK_SECRET | optional | — |
Linear
| Variable | Required? | Description |
|---|---|---|
LINEAR_API_KEY | optional | — |
LINEAR_AVA_CLIENT_ID | optional | — |
LINEAR_AVA_CLIENT_SECRET | optional | — |
LINEAR_AVA_REDIRECT_URI | optional | — |
LINEAR_AVA_SCOPES | optional | Comma-separated OAuth scopes. Default covers read/write + agent app actor. |
LINEAR_WEBHOOK_PORT | optional | — |
LINEAR_WEBHOOK_SECRET | optional | — |
Google Workspace
| Variable | Required? | Description |
|---|---|---|
GOOGLE_CLIENT_ID | optional | — |
GOOGLE_CLIENT_SECRET | optional | — |
GOOGLE_REFRESH_TOKEN | optional | — |
Vector memory
| Variable | Required? | Description |
|---|---|---|
QDRANT_URL | optional | — |
QDRANT_VECTOR_SIZE | optional | — |
REDIS_URL | optional | — |
Signal
| Variable | Required? | Description |
|---|---|---|
SIGNAL_NUMBER | optional | — |
SIGNAL_URL | optional | — |
Other
| Variable | Required? | Description |
|---|---|---|
EMBED_MODEL | optional | — |
PR_REMEDIATOR_AUTO_MERGE | optional | — |
Read directly (not in EnvSchema)
These variables are read via process.env somewhere in src/ or lib/ but are not declared in EnvSchema. Because the schema is .strict(), they bypass boot-time validation — they work, but they're outside the typed contract. Either add them to EnvSchema or treat this list as the known contract gap.
| Variable | Read at |
|---|---|
A2A_CHAT_REPLY_TIMEOUT_MS | src/api/ava-tools.ts |
A2A_INPUT_REQUIRED_TTL_MS | src/api/human-input.ts |
A2A_STREAM_HEARTBEAT_MS | src/api/a2a-server.ts |
AGENT_RUN_BUDGET_MS | src/executor/executors/deep-agent-executor.ts |
CLAWPATCH_CHECKOUT_ROOT | lib/checkout-cache.ts |
CLAWPATCH_REPO_PATH_MAP | src/api/clawpatch.ts |
CLAWPATCH_STATE_ROOT | src/api/clawpatch.ts |
CREATE_ISSUE_DEDUP_DISABLED | src/api/github.ts |
CREATE_ISSUE_DEDUP_WINDOW_MS | src/api/github.ts |
DEEP_AGENT_CHAT_POLL_INTERVAL_MS | src/executor/executors/deep-agent-executor.ts |
DISCORD_AGENT_OPS_CHANNEL | src/api/ava-tools.ts, src/plugins/skill-broker-plugin.ts |
LINEAR_PROTO_BRIDGE_LABEL | lib/plugins/linear-proto-bridge.ts |
LLM_GATEWAY_TIMEOUT_MS | src/executor/executors/deep-agent-executor.ts |
LLM_MAX_RETRIES | src/executor/executors/deep-agent-executor.ts |
LOGGER_EVENTS_RETENTION_MS | lib/plugins/logger.ts |
MEMORY_HARVEST_MAX_AGE_DAYS | src/agent-runtime/agent-runtime-plugin.ts |
MEMORY_HARVEST_SWEEP_HOURS | src/agent-runtime/agent-runtime-plugin.ts |
MEMORY_SUMMARY_MODEL | src/agent-runtime/agent-runtime-plugin.ts |
OPENAI_BASE_URL | src/agent-runtime/agent-runtime-plugin.ts, src/executor/executors/deep-agent-executor.ts, src/services/embeddings/gateway-embed.ts |
PROJECT_REGISTRY_URL | src/plugins/project-registry.ts |
PROTOLABS_AGENTS_JSON | src/plugins/skill-broker-plugin.ts |
QUINN_DISCORD_TOKEN | lib/types/channels.ts |
RESEARCH_EMBED_DIM | src/knowledge/research-store.ts |
RESEARCH_EMBED_MODEL | src/services/embeddings/gateway-embed.ts |
RESEARCH_FEED_CHANNEL_ID | src/executor/executors/deep-agent-executor.ts |
SEARXNG_URL | src/executor/executors/deep-agent-executor.ts |
WORKSTACEAN_AGENT_BOT_LOGINS | lib/plugins/github.ts |
WORKSTACEAN_DISPATCH_DROP_ESCALATION_COOLDOWN_MS | src/plugins/dispatch-drop-escalator-plugin.ts |
WORKSTACEAN_DISPATCH_DROP_THRESHOLD | src/plugins/dispatch-drop-escalator-plugin.ts |
WORKSTACEAN_DISPATCH_DROP_WINDOW_MS | src/plugins/dispatch-drop-escalator-plugin.ts |
WORKSTACEAN_FLEET_ALERT_COOLDOWN_MS | src/plugins/fleet-alerts-evaluator-plugin.ts |
WORKSTACEAN_FLEET_DAILY_BUDGET_USD | src/plugins/fleet-alerts-evaluator-plugin.ts |
WORKSTACEAN_FLEET_FAILURE_RATE_THRESHOLD | src/plugins/fleet-alerts-evaluator-plugin.ts |
WORKSTACEAN_INTERNAL_BASE_URL | src/executor/skill-dispatcher-plugin.ts |