All Plannotator environment variables and their defaults.

Core variables

VariableDefaultDescription
PLANNOTATOR_REMOTEauto-detectSet to 1 or true to force remote mode. Uses fixed port and skips browser auto-open.
PLANNOTATOR_PORTrandom (local) / 19432 (remote)Fixed server port. When not set, local sessions use a random port; remote sessions default to 19432.
PLANNOTATOR_BROWSERsystem defaultCustom browser to open the UI in. macOS: app name or path. Linux/Windows: executable path. Can also be a script. Takes priority over BROWSER. Also settable per-invocation with --browser.
BROWSER(none)Standard env var for specifying a browser. VS Code sets this automatically in devcontainers. Used as fallback when PLANNOTATOR_BROWSER is not set.
PLANNOTATOR_SHAREenabledSet to disabled to turn off sharing. Hides share UI and import options.
PLANNOTATOR_SHARE_URLhttps://share.plannotator.aiBase URL for share links. Set this when self-hosting the share portal.
PLANNOTATOR_PLAN_TIMEOUT_SECONDS345600OpenCode only. submit_plan wait timeout in seconds. Set 0 to disable timeout.

Paste service variables

VariableDefaultDescription
PLANNOTATOR_PASTE_URLhttps://plannotator-paste.plannotator.workers.devBase URL of the paste service API. Set this when self-hosting the paste service.

Self-hosted paste service

When running your own paste service binary, these variables configure it:

VariableDefaultDescription
PASTE_PORT19433Server port
PASTE_DATA_DIR~/.plannotator/pastesFilesystem storage directory
PASTE_TTL_DAYS7Paste expiration in days
PASTE_MAX_SIZE524288Max payload size in bytes (512KB)
PASTE_ALLOWED_ORIGINShttps://share.plannotator.ai,http://localhost:3001CORS allowed origins (comma-separated)

Install script variables

VariableDefaultDescription
CLAUDE_CONFIG_DIR~/.claudeCustom Claude Code config directory. The install script places hooks here instead of the default location.

Remote mode behavior

When PLANNOTATOR_REMOTE=1 or SSH is detected:

  • Server binds to PLANNOTATOR_PORT (default 19432) instead of a random port
  • Browser auto-open is skipped
  • The URL is printed to stderr for manual access

Legacy SSH detection

These environment variables are still detected for backwards compatibility:

VariableDescription
SSH_TTYSet by SSH when a TTY is allocated
SSH_CONNECTIONSet by SSH with connection details

If either is present, Plannotator enables remote mode automatically. Prefer PLANNOTATOR_REMOTE=1 for explicit control.

Port resolution order

  1. PLANNOTATOR_PORT environment variable (if valid integer 1-65535)
  2. 19432 if in remote mode
  3. 0 (random) if in local mode

Custom browser examples

# macOS: open in Chrome
export PLANNOTATOR_BROWSER="Google Chrome"

# macOS: open in specific app
export PLANNOTATOR_BROWSER="/Applications/Firefox.app"

# Linux: open in Firefox
export PLANNOTATOR_BROWSER="/usr/bin/firefox"

# Custom script for remote URL handling
export PLANNOTATOR_BROWSER="/path/to/my-open-script.sh"

Built by