OpenProgram Docs

Profiles#

This page explains how to run several independent OpenProgram instances side by side on one machine — the common case being a stable instance for daily use and a development instance for hacking on the code.

Profiles: isolated state directories#

By default all state (config / sessions / logs / memory) lives in ~/.openprogram/. With a profile it moves to ~/.openprogram-<name>/, and the two instances share no data:

openprogram --profile dev            # CLI global flag
OPENPROGRAM_PROFILE=dev openprogram  # or the env var — equivalent (the flag wins if both are set)

--profile is a global flag: put it before the subcommand and it applies to every subcommand — openprogram --profile dev sessions list, openprogram --profile dev restart, and so on.

Ports: one per instance#

Each instance listens on a single port (API, WebSocket, and the web UI together). The default is 18100. Three ways to change it:

# 1. Persist into that profile's config (recommended — no flags needed on later starts)
openprogram --profile dev ports --port 18200

# 2. Environment variable, override one run
OPENPROGRAM_WEB_PORT=18200 openprogram web

# 3. Command-line flag, this `openprogram web` invocation only
openprogram web --port 18200

ports writes into the current profile's config, so each profile remembers its own ports.

Example: stable + development pair#

The stable instance uses the default profile and default port; the development instance uses the dev profile on 18200:

# Stable instance (daily use)
openprogram web                        # http://localhost:18100

# Development instance: write the port into the dev profile (once)
openprogram --profile dev ports --port 18200

# From then on, start it like this
openprogram --profile dev web          # http://localhost:18200

Each instance has its own sessions, config, logs, and background worker; openprogram status reports on the default instance, openprogram --profile dev status on the development one.

Last updated · 2026-08-13