Configuration Reference

Outpost is configured through environment variables. Copy .env.example to .env and customize the values below.

Core Settings

VariableDescriptionDefault
DATABASE_URLPostgreSQL connection string
NODE_ENVEnvironment: development or productiondevelopment
PORTWeb app port3000
LOG_LEVELLogging verbosity: debug, info, warn, errorinfo

AI Configuration

VariableDescriptionDefault
ANTHROPIC_API_KEYAnthropic API key for Claude
AI_MODELClaude model to use for triage and responsesclaude-sonnet-4-6
PATHFINDER_MCP_URLPathfinder MCP server URL for knowledge base searchhttps://mcp.copilotkit.ai

Discord Bot

VariableDescriptionDefault
DISCORD_BOT_TOKENDiscord bot token from the Developer Portal
DISCORD_CLIENT_IDApplication ID for slash command registration
DISCORD_GUILD_IDServer ID (for guild-scoped commands in development)
DISCORD_SUPPORT_CHANNELChannel ID where support threads are created

GitHub App

VariableDescriptionDefault
GITHUB_APP_IDGitHub App ID
GITHUB_PRIVATE_KEYPEM-encoded private key (or path to .pem file)
GITHUB_WEBHOOK_SECRETWebhook secret for signature verification
GITHUB_APP_PORTPort for the webhook receiver3001

Slack Bot

VariableDescriptionDefault
SLACK_BOT_TOKENBot User OAuth Token (xoxb-...)
SLACK_APP_TOKENApp-Level Token for Socket Mode (xapp-...)
SLACK_SIGNING_SECRETSigning secret for verifying webhook requests
MONITORED_CHANNEL_IDSComma-separated Slack channel IDs to monitor— (all channels)
TEAM_MEMBER_IDSComma-separated Slack user IDs for team members (fast-path detection)

Teams Bot

VariableDescriptionDefault
TEAMS_APP_IDMicrosoft App ID from Azure Bot registration
TEAMS_APP_PASSWORDMicrosoft App Password (client secret)
TEAMS_TENANT_IDAzure AD Tenant ID (optional; omit for multi-tenant)
HEALTH_PORTPort for the health check endpoint3003

Linear Integration

VariableDescriptionDefault
LINEAR_API_KEYLinear API key for reading and writing issues
LINEAR_WEBHOOK_SECRETWebhook signing secret for verifying Linear payloads
LINEAR_TEAM_IDLinear team ID to sync issues with

See also: The Linear Integration page covers full setup instructions, status mapping, and identity mapping configuration.

HubSpot CRM

VariableDescriptionDefault
HUBSPOT_API_KEYHubSpot private app access token (scopes: crm.objects.companies.read, crm.objects.owners.read)

See also: The HubSpot CRM Integration page covers setup instructions, field mapping, and sync modes.

Authentication

VariableDescriptionDefault
AUTH_PROVIDERAuthentication provider: credentials, github, or oidccredentials
NEXT_PUBLIC_AUTH_PROVIDERClient-side auth provider hint (must match AUTH_PROVIDER)credentials
GITHUB_CLIENT_IDGitHub OAuth App client ID (required when AUTH_PROVIDER=github)
GITHUB_CLIENT_SECRETGitHub OAuth App client secret (required when AUTH_PROVIDER=github)
OIDC_ISSUEROIDC provider issuer URL (required when AUTH_PROVIDER=oidc)
OIDC_CLIENT_IDOIDC client ID (required when AUTH_PROVIDER=oidc)
OIDC_CLIENT_SECRETOIDC client secret (required when AUTH_PROVIDER=oidc)

Pluggable auth: Outpost defaults to credentials-based authentication (email + password). To use GitHub OAuth or an OIDC provider instead, set both AUTH_PROVIDER and NEXT_PUBLIC_AUTH_PROVIDER to the same value, then supply the corresponding client credentials above.

Email (Resend)

VariableDescriptionDefault
RESEND_API_KEYAPI key for Resend email delivery (used for team invitations, notifications, and template-based emails)
EMAIL_FROMSender address for outgoing emails[email protected]

Setup (First Run)

On first launch, Outpost detects an empty database and redirects to the setup wizard at /setup. The wizard creates the organization record and the first admin user account in three steps: organization details, admin credentials, and launch. No environment variables are required for the setup flow — it works out of the box with credentials auth. The database schema is automatically pushed on startup if needed.

SLA Targets

SLA targets are configured per priority level in the database through the admin dashboard. Default values when seeding:

PriorityFirst ResponseResolution
Critical15 minutes4 hours
High1 hour24 hours
Medium4 hours72 hours
Low24 hours1 week

Note: SLA targets can also be overridden per-account for enterprise customers with custom support agreements.

Routing Rules

Routing rules determine which agent or team handles a ticket. Rules are evaluated in priority order and can match on:

Routing rules are managed through the admin dashboard under Settings → Routing.

Job Queue

VariableDescriptionDefault
QUEUE_CONCURRENCYMax concurrent job workers5
QUEUE_POLL_INTERVALHow often to poll for new jobs (ms)1000
QUEUE_MAX_RETRIESMax retry attempts before dead-letter3
QUEUE_RETRY_DELAYBase delay between retries (ms, exponential backoff)5000