Works with Claude Code, Codex CLI, OpenCode and three moreWorks with six AI coding CLIs

Meet OpenCompanion

Step away from the terminal. It tells you when a CLI needs you.

OpenCompanion on Product Hunt
OpenCompanion Sessions
eksis.io
ai-remote

Demo with example data

Overview2 sessions in OpenCompanion, 1 opened outside
Claude Code wants to run a commandWrite the API docs · ~/Project/eksis.io Waiting for you
Bashnpm install
Running in OpenCompanion1 running, 1 waiting
Opened outside OpenCompanion
OC OpenCode in psikotesOpenCode · interactive · ~/Project/psikotes Last entry 3 min ago Read-only

Built in the open

Every line of OpenCompanion is on GitHub under the MIT license. Read the code, report what breaks, or send a change.

One window for every CLI you run

Runs the CLIs you already use

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.

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.

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.

  1. Turn on phone accessIn Settings, under Phone access. It listens on port 8765 unless you pick another one.
  2. 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.
  3. Name the phoneIt shows your sessions right away. Settings lists it under Paired devices, where you can remove it.
  4. 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.

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.

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.