Common gotchas. The full operator runbook for a fresh install /
upgrade is in GETTING_STARTED.md; this
page collects the recurring "it doesn't work" cases.
openprogram providers lists the credentials on file; openprogram providers discover scans for external CLI logins (Claude Code, Codex, Gemini CLI) to adopt. Common causes:
- forgot
openprogram providers login <provider>(or the login of the matching external CLI) - API key set in a different shell than the one running the worker
- token expired — log in again;
openprogram providers doctordiagnoses credential expiry / refresh / conflicts
pip install dir not on PATH. Two options:
# call the module directly
python3 -m openprogram <args>
# or add the user-base bin to PATH (idempotent)
echo 'export PATH="$(python3 -m site --user-base)/bin:$PATH"' >> ~/.zshrcSet one of these env vars before starting the worker:
export OPENPROGRAM_WEB_PORT=8101 # frontend (defaults to 18100)
export OPENPROGRAM_BACKEND_PORT=8102 # FastAPI (defaults to 18109)Or persist the preference: openprogram ports --backend 8102 --frontend 8101.
For working on GUI-Agent-Harness / Research-Agent-Harness side-by-side with OpenProgram:
pip install -e "$OPENPROGRAM_DIR" # always first
pip install -e "$GUI_HARNESS_DIR" # depends on openprogram
pip install -e "$RESEARCH_HARNESS_DIR"openprogram/functions/agentics/{GUI,Research}-Agent-Harness
are symlinks — recreate if a repo moves:
cd openprogram/functions/agentics
rm -f GUI-Agent-Harness && ln -s "$GUI_HARNESS_DIR" GUI-Agent-Harness
rm -f Research-Agent-Harness && ln -s "$RESEARCH_HARNESS_DIR" Research-Agent-Harnesspip install -e writes absolute paths — rerun it from the new
location if you rename a parent folder.
openprogram doctor runs a fast end-to-end check: the
Python/Node/git toolchain, skills and plugins loading, provider
credentials, MCP servers, disk cache, and whether the worker is
listening on :18109. openprogram rescue goes beyond diagnosis
and prints the fix commands directly. Read their output before
raising an issue.
The package isn't installed in the active Python. Either run the installer
(clone OpenProgram + ./scripts/install.sh) or activate the venv where it is
installed.
A handful of tests are explicitly skipped on bare CI runners
because they need a configured provider in $HOME. The skip
list lives in the test files themselves — search for
pytest.mark.skipif. Dev machines with credentials see the
full suite.