OpenBot
OpenBot
- openbot
Desktop app that hosts CLI agents. One SQLite database and no headless mode.
- Invoke
- no headless mode
- Models
- no listing
- MCP
- sqlite · openbot
- Agents file
- none stable
Access
- Get
getHarness("openbot") - CLI
harnesses paths openbot --json - Tryopenbot in the explorer
OpenBot is a desktop app by nightly-labs, not a CLI. It hosts Codex, Claude Code, Grok and other CLIs as persistent agents. There's no headless mode, so every run mode is refused. Ask for --version? You'd start the app instead. The registry reports null rather than probe.
Its state lives in Electron's userData directory. On Linux, that's ~/.config/OpenBot/, unless XDG_CONFIG_HOME moves it. The openbot.db database holds agents, conversations, routines and MCP servers. I like having one source of truth here. The servers live in projection_mcp_servers, and the registry can sync them. OpenBot reads the table whenever it starts an agent, so a sync needs no restart.
OpenBot reads your skills from ~/.agents/skills/. That's the folder Codex's skills sync uses, so syncing Codex covers OpenBot. It leaves out skills the hosted CLI already loads. Skills made in the app live in local-skills/ under userData, with an immutable directory for each revision.
Each agent has a workspace under ~/OpenBot/Agents/<agent-id>/. Its rules live in AGENTS.md at the workspace root. Older workspaces keep CLAUDE.md. There's no single user file for agents sync to update. The hosted CLI still reads its own user instructions.
OpenBot sets OPENBOT_AGENT_PROCESS=1 on every CLI it starts. A hosted CLI with its own marker takes precedence. Codex sets none, so a Codex agent detects as openbot. On Linux, an AppImage install can show a hollow dot in harnesses detect. The openbot command is on PATH only with the Nix package.
Capabilities and invocation
- mcp: yes
- vision: yes
- audio: no
- video: no
- tools: yes
- streaming: yes
No non-interactive invocation is recorded, so invoke() rejects before spawning anything and every invocation mode reports false.
Paths
Templates as the registry stores them. ~, ${HOME}, ${TMPDIR} and %VAR% expand in resolve(); entries tagged with a platform are dropped on the others. Open in the explorer to see them expanded for a home directory of your choice.
config
~/.config/OpenBot/Settings sit in openbot-*-v1.json files here. --user-data-dir moves the whole directory.
~/Library/Application Support/OpenBot/Settings sit in openbot-*-v1.json files here. --user-data-dir moves the whole directory.
%APPDATA%/OpenBot/Settings sit in openbot-*-v1.json files here. --user-data-dir moves the whole directory.
sessions
~/.config/OpenBot/openbot.dbAgents, conversations, routines and MCP servers, all in one SQLite database.
~/Library/Application Support/OpenBot/openbot.dbAgents, conversations, routines and MCP servers, all in one SQLite database.
%APPDATA%/OpenBot/openbot.dbAgents, conversations, routines and MCP servers, all in one SQLite database.
instructions
~/OpenBot/Agents/<agent-id>/AGENTS.mdEach agent's own rules, edited from its settings. An older workspace keeps CLAUDE.md.
skills
~/.agents/skills/The one folder it reads for your own skills, minus any the provider CLI already loads. Codex's skills sync links it.
~/.config/OpenBot/local-skills/Skills made inside the app, one immutable directory per revision.
~/Library/Application Support/OpenBot/local-skills/Skills made inside the app, one immutable directory per revision.
%APPDATA%/OpenBot/local-skills/Skills made inside the app, one immutable directory per revision.
Empty
commandspromptTemplateshookstempThat is not the same as the feature being missing.
Env overrides
Variables the harness reads to move a root. The path is the default while the variable is unset; resolve() applies a set one to temp.
XDG_CONFIG_HOME~/.configconfig · sessions · skills · linuxElectron's appData on Linux. --user-data-dir still wins.
MCP servers
~/.config/OpenBot/openbot.dbuser · sqlite · openbot · projection_mcp_servers~/Library/Application Support/OpenBot/openbot.dbuser · sqlite · openbot · projection_mcp_servers%APPDATA%/OpenBot/openbot.dbuser · sqlite · openbot · projection_mcp_servers
Detection
envVars
- OPENBOT_AGENT_PROCESS
projectMarkers
Persistence
- SQLite - openbot.db is the source of truth: an append-only event log plus projection tables. (official)
- JSON - Small preference and state files beside it. (official)
No stable user-scope instructions file, so syncAgentsFiles skips this harness.