OpenCompanion finds these on your PATH and in common install folders. How much it can do depends on the
CLI.
It never installs one. The CLIs screen shows the install command, and you run it yourself.
Claude Codechecked with 2.1
Starts sessions, watches them, and answers their permission prompts from the desktop or your phone.
Codex CLIchecked with 0.153
Starts and watches sessions. Its permission prompts are answered in its own terminal.
OCOpenCodechecked with 1.18
Starts and watches sessions. A headless run turns its prompts down by itself.
CCSCCSchecked with 8.10
Starts Claude Code with one of your CCS profiles, with Approve and Deny. API and CLIProxy profiles run
without hooks.
PiPichecked with 0.87
Never asks for permission. In Plan mode it only reads and searches.
ompompchecked with 18.3
A Pi fork on Bun. It asks before a tool its mode does not allow, and OpenCompanion does not flag that
prompt yet.
Gemini CLInot tested
Found and listed with its version. A terminal start is wired up but has never run against the real CLI.
Your own terminalread-only
Sessions you started outside OpenCompanion show up too. Every CLI here except Gemini CLI also shows its
transcript.
2
Knows when a session needs you
Claude Code and CCS permission prompts arrive as Waiting for you, with Approve and Deny on the desktop
and on your phone. Codex CLI, OpenCode and omp prompts are answered in their own terminal.
A CLI's opening dialogs, like a folder trust question, are flagged and never answered for you.
Ask meEvery permission prompt comes to you as Waiting for you.
PlanThe CLI reads and plans, and changes nothing.
AutoThe CLI approves routine actions itself.
BypassNo permission checks. Chat cards that start on their own never use it.
You pick a mode for each session. OpenCompanion turns it into each CLI's own flags, listed in the
README.
3
Answer from your phone
Phone access is off until you turn it on. Then the phone talks to your computer over your own Wi-Fi, with
no account and no server in between.
OpenCompanionConnected
To your desktop · 192.168.1.24
Sessions
Claude Code wants to run a commandeksis.io · asked just now
Bashnpm install
ApproveDeny
Running
Fix the failing testsCodex CLI · ai-remoteRunning
SessionsChatAutomations
Turn on phone accessIn Settings, under Phone access. It listens on port 8765 unless you
pick another one.
Scan the codeJoin the same Wi-Fi, then scan the QR code with the phone's camera, or open
the address shown and type the 6-digit code. A code works once and expires after 2 minutes.
Name the phoneIt shows your sessions right away. Settings lists it under Paired devices,
where you can remove it.
Add it to the home screenOptional. It then opens like an app whenever your computer is
reachable.
The connection is plain HTTP. On a network you do not trust, or away from home, use a VPN with HTTPS,
such as Tailscale.
A paired phone can watch and start sessions, answer prompts, plan in Chat and edit automations,
including starting a CLI in Bypass mode. Remove a phone you no longer use.
Shell tabs and the Files, Changes and Branch tabs stay on the desktop. File contents never reach the
phone.
On iPhone, the Home Screen app keeps its own storage, so pair it once more by typing the code.
The phone shows notifications while its page is open. Web Push is not built yet.
4
Everything else in the window
Chat, shells, files and schedules sit beside the sessions, so the terminal you watch and the work you
check stay in one place.
Chat planner
Turns one request into a card for each session. It runs a CLI headless with read-only access to your
project folders, or any OpenAI-compatible endpoint such as Ollama. Type @ to name a folder.
Automations
Every day, some days, every few minutes or hours, or a cron expression, in local time. A run missed
while the app was closed runs once when it opens, marked Late.
A shell under every CLI
A session's terminal runs in PowerShell or bash. When the CLI exits, type its name to start it again
with the session's flags.
Tabs and splits
Open shells as tabs, up to four terminals in one tab. Drag a terminal onto any side of another to
split it.
Files, Changes and Branch
Search the folder by name or text, read files with syntax colors for about 40 languages, and read each
diff.
Session control
Stop a headless session or send it a follow-up. All sessions has search and filters, and every session
shows its CPU and memory.
Notifications
Choose them per CLI and per project folder. On Windows, and on Linux when the notification server
supports it, clicking one opens its session.
Skills
Compares the skill folders of each CLI and shows which skill is missing or different, with a command
you copy and run.
Tray
Sessions and automations keep running after you close the window, and OpenCompanion can start in the
tray when you sign in.
Settings
Day or Dusk theme, English or Indonesian, text size, how long finished sessions are kept, and a custom
path for each CLI.
Where your data goes
No account, no cloud server, no telemetry.
Stays on this computer
Sessions, events, Chat, automations and your settings, in one SQLite file in the app data folder: %APPDATA%\dev.opencompanion.app on Windows, ~/Library/Application
Support/dev.opencompanion.app on macOS, ~/.local/share/dev.opencompanion.app on Linux.
Terminal logs, and the hook files for Claude Code sessions, in the same folder. Shell tabs are never
saved: their output lives in memory until you close the tab.
Images you paste into a terminal, in the system temp folder under opencompanion-paste, until you or the system clear it.
Paired phones, stored only as SHA-256 hashes of their tokens.
The CLIs' own files. OpenCompanion reads their history and skill folders, and never writes to them. The
Files, Changes and Branch tabs run your own git, and only Switch branch changes anything.
Leaves it, and where to
Each CLI talks to its own provider with your login and your quota, the same as in your terminal.
The Chat planner sends your message, recent turns, the installed CLIs, folder paths, current sessions
and your automations to the CLI it runs, or to the endpoint you set.
The phone page and its updates go to your paired phones, over your own network, only while phone access
is on.
Known limits
Read these before you install, so none of them surprises you later.
Approve/Deny works for Claude Code and CCS only. Codex CLI, OpenCode and omp prompts are answered in
their own terminal.
A successful headless Codex CLI run has not been observed yet. On the development machine Codex could
not sign in, so its events are parsed from its documentation.
Gemini CLI is detected, but no Gemini session has been run yet. It has no headless mode and cannot
plan in Chat.
CCS, Pi and omp have their flags covered by tests, but no session with a real provider has been run
through OpenCompanion yet.
Windows 11 is tested by hand every day, and Linux end to end in Docker on Ubuntu 24.04. macOS builds
and passes its tests in CI, but nobody has opened the window on a Mac yet.
On macOS, clicking a notification does not open its session.
Automations run only while OpenCompanion is open or in the tray. A run missed while it was closed runs
once, late, when it opens again.
The installers are not code-signed yet, so the first start asks once: on Windows choose More info,
then Run anyway; on macOS open System Settings › Privacy & Security and choose Open Anyway.
Or build it yourself
OpenCompanion is a Tauri 2 app. Instead of downloading an installer, you can build it from source in four
commands.
You need
Windows 11, a Linux desktop with WebKitGTK 4.1, or macOS (tested in CI only).
Rust (stable), with the MSVC toolchain on Windows, and the Tauri 2 prerequisites for your system.
Bun, and Node.js (LTS) to run the tests.
At least one supported CLI, installed and signed in.
git clone https://github.com/yusupsupriyadi/opencompanion.git
cd opencompanion
bun install
bun run tauri build
The installer lands in src-tauri/target/release/bundle: .msi and .exe on Windows, .deb,
.rpm and AppImage on Linux, .app and .dmg on macOS. For a window with hot reload, run bun run tauri
dev instead. To run the checks or send a change, read CONTRIBUTING.md.