Skip to main content

Environment Variables

API Server

VariableRequiredDefaultDescription
DATABASE_URLYesPostgreSQL connection string
JWT_SECRETProductionopenlinear-dev-secret...JWT signing secret
FRONTEND_URLNohttp://localhost:3000Frontend URL for OAuth redirects
GITHUB_CLIENT_IDFor OAuthGitHub OAuth app client ID
GITHUB_CLIENT_SECRETFor OAuthGitHub OAuth app client secret

CLI / Desktop

VariableRequiredDescription
OPENLINEAR_GITHUB_CLIENT_SECRETFor browser flowGitHub OAuth client secret
OPENLINEAR_GITHUB_CALLBACK_HOSTNoCallback host (default: localhost)
OPENLINEAR_GITHUB_CALLBACK_PORTNoCallback port (default: 0 = random)
OPENLINEAR_GITHUB_CALLBACK_PATHNoCallback path (default: /callback)

Feature Flags

VariableTypeDefaultDescription
LOCAL_EXECUTION_ENABLEDbooleanfalseEnable local execution mode
SERVER_EXECUTION_ENABLEDbooleantrueEnable server execution mode
CANARY_PERCENTAGE0-1000Percentage of users on local execution
FORCE_LOCAL_EXECUTIONbooleanfalseForce local for all users
KILL_SWITCH_LOCAL_EXECUTIONbooleanfalseEmergency disable of local execution

Application Settings

Stored in the database (Settings model). Configurable via PATCH /api/settings.
SettingTypeDefaultDescription
parallelLimitint3Maximum concurrent task executions
maxBatchSizeint3Maximum tasks in a single batch
queueAutoApprovebooleanfalseAuto-approve next task in queue mode
stopOnFailurebooleanfalseStop batch execution on first failure
conflictBehaviorstringskipGit conflict handling: skip or fail

Tauri Configuration

The desktop app window is configured in apps/desktop/src-tauri/tauri.conf.json:
SettingValue
Product nameOpenLinear
Identifiercom.openlinear.app
Window size1200 x 800
DecorationsFrameless
Deep link schemeopenlinear://
Minimum macOS10.15
Bundle targetsDMG, App, AppImage, DEB

Ports

ServiceDefault Port
Desktop UI (dev)3000
Sidecar API3001
Landing site (dev)3002

Docker Compose

For local PostgreSQL development:
docker compose up -d
This starts a PostgreSQL instance. Set DATABASE_URL to the connection string from docker-compose.yml.

Turbo Pipeline

Build tasks are orchestrated by Turbo:
TaskDependenciesOutputs
build^build.next/**, dist/**
devnone (persistent)
lint^lint
test^build
typecheck^build