Skip to content

Environment Variables ​

All environment variables used by protoPen. Set these in your docker-compose.yml, .env file, or shell.

Secrets / Infisical ​

VariableRequiredDefaultDescription
INFISICAL_TOKENyes (prod)--Infisical service token for non-interactive secret fetching. Set via systemd override at ~/.config/systemd/user/protopen.service.d/infisical.conf.

All secrets auto-exported

start.sh exports every secret from the Infisical protoPen project (prod env) into the process environment. You do not need to manually set individual API keys — they are all fetched at startup. The variables below document what the code expects to find, but they are populated automatically from Infisical.

Infisical Secrets Inventory ​

Secrets stored in the Infisical protoPen project (f7d3c43d, prod environment):

Secret KeyDescription
ANTHROPIC_API_KEYAnthropic API key for LLM access
DISCORD_BOT_TOKENDiscord bot token for Gateway + REST API
DISCORD_ALERT_WEBHOOKDiscord webhook for publishing digests, security reports, and alerts (legacy alias: DISCORD_WEBHOOK_URL)
GITHUB_TOKENGitHub personal access token
LANGFUSE_PUBLIC_KEYLangfuse tracing public key
LANGFUSE_SECRET_KEYLangfuse tracing secret key
PROTOPEN_API_KEYAPI key for A2A endpoint authentication

Core ​

VariableRequiredDefaultDescription
AGENT_BACKENDnolanggraphAgent backend to use (langgraph)
SANDBOX_DIRno/sandboxRoot directory for the sandboxed workspace
INSTANCE_NAMEnoavaInstance name for multi-node identification and Discord digest branding

LLM / API Keys ​

VariableRequiredDefaultDescription
OPENAI_API_KEYyes--LiteLLM gateway master key
ANTHROPIC_API_KEYno--Direct Anthropic API key (optional)
OPENAI_API_KEYno--OpenAI-compatible API key (used for LiteLLM gateway access)

Observability ​

VariableRequiredDefaultDescription
LANGFUSE_PUBLIC_KEYno--Langfuse public key for tracing
LANGFUSE_SECRET_KEYno--Langfuse secret key for tracing
LANGFUSE_HOSTnohttp://host.docker.internal:3001Langfuse server URL
PROTOPEN_TRACE_TOOL_OUTPUT_MAXno50000Max chars of a tool result stored on its Langfuse span (full-fidelity; a safety bound on pathological payloads)

Integrations ​

VariableRequiredDefaultDescription
GITHUB_TOKENno--GitHub personal access token (higher API rate limits for trending tool)
DISCORD_BOT_TOKENno--Discord bot token for reading channel feeds and reacting to mentions
DISCORD_ALERT_WEBHOOKno--Discord webhook URL for publishing research digests, security alerts, and engagement reports as rich embeds. Preferred over the legacy DISCORD_WEBHOOK_URL. Managed via Infisical in prod.

External Tools ​

Some tools shell out to binaries installed outside protoPen's Python environment to avoid dependency conflicts. They resolve from PATH by default; these variables override the location.

VariableRequiredDefaultDescription
MAIGRET_BINnomaigret on PATHPath to the isolated maigret binary used by the maigret OSINT username tool. start.sh installs maigret into ~/.maigret-venv and sets this automatically; the Docker image installs it to /usr/local/bin/maigret.
HOLEHE_BINnoholehe on PATHPath to the isolated holehe binary (email→accounts OSINT). start.sh installs it into ~/.holehe-venv; the Docker image links it to /usr/local/bin/holehe.
PHONEINFOGA_BINnophoneinfoga on PATHPath to the pinned phoneinfoga binary (phone-number OSINT). start.sh installs it to ~/.local/bin/phoneinfoga; the Docker image to /usr/local/bin/phoneinfoga.
NUMVERIFY_API_KEYno--Enables PhoneInfoga's numverify scanner → carrier + line type on phone scans (free tier at apilayer.com, 100 req/mo). Without it, only the keyless local + googlesearch scanners run. PhoneInfoga reads this from the environment (inherited by the subprocess); add it to Infisical and restart. The scanner is auto-skipped when absent.

The OSINT binary paths are wired automatically — you only ever need to set NUMVERIFY_API_KEY (optional) for richer phone results.

A2A Authentication ​

VariableRequiredDefaultDescription
PROTOPEN_API_KEYno--API key for authenticating A2A requests. Checked via x-api-key header.

TIP

When PROTOPEN_API_KEY is not set, the A2A endpoint accepts unauthenticated requests. This is appropriate for a private Tailnet but not for public exposure.

WARNING

Never commit API keys to the repository. Use a .env file (git-ignored) or inject them via your deployment pipeline.

Part of the protoLabs autonomous development studio.