Run your AI coding agents from your phone.
Sesori is the mobile cockpit for your AI coding sessions — OpenCode, OpenAI Codex CLI, Cursor, Claude Code, Hermes Agent, Pi, and Oh My Pi.
Leave your laptop. Take the session.
Get started · Docs · How it works · Architecture · Security · Contribute
Install in 3 steps
1. Download the Sesori app
Requires iOS 15 or later, or Android 8.0 or later.
2. Install the Bridge CLI on your machine
The Bridge is a small source-available command-line tool that connects the app to your AI coding assistants — the full list is below.
macOS / Linux:
curl -fsSL https://sesori.com/install.sh | bash
Windows (PowerShell):
irm https://sesori.com/install.ps1 | iex
Prefer npm or bun? You can also bootstrap the Bridge with npx @sesori/bridge or bunx @sesori/bridge. It installs the same managed runtime under the hood.
3. Start the Bridge
sesori-bridge
Sign in with the same account on your phone and your machine. The two pair automatically over the encrypted relay, even on different networks.
Full walkthrough: prerequisites, OpenCode setup, headless VM instructions, and troubleshooting are in docs/GETTING_STARTED.md.
What you can do
| Feature | What it means |
|---|---|
| Browse projects & sessions | See your projects and active sessions across every supported assistant, right on your phone. |
| Keep agents moving | Answer questions, approve steps, and stop or restart tasks without returning to your desk. |
| Review code and PR status | Read diffs and keep tabs on pull requests without opening your laptop. |
| Voice or type | Talk to your assistant naturally or use the keyboard — whatever works in the moment. |
| Real-time notifications | Get pinged the moment your AI needs you back or a long-running task finishes. |
| End-to-end encrypted | Your code, prompts, and responses stay between your phone and your machine. |
How it works
A lightweight Bridge runs on your laptop alongside your AI coding assistant. It connects to a relay server over WebSocket, and your phone connects to the same relay. The relay routes encrypted traffic between them — it never sees your application data.
graph LR
OC["AI Assistant<br/>on your machine"] -- "Local transport" --> B["Bridge CLI<br/>your laptop"]
B -- "WSS · E2E encrypted" --> R["Relay Server<br/>cloud router"]
R -- "WSS · E2E encrypted" --> M["Sesori App<br/>your phone"]
Your laptop and phone perform an ephemeral X25519 key exchange, then encrypt every message with XChaCha20-Poly1305. The relay only routes opaque binary frames.
Dive deeper: docs/HOW_IT_WORKS.md
Why you can trust it
- End-to-end encryption. All application data between your phone and laptop is encrypted with XChaCha20-Poly1305.
- Ephemeral key exchange. Each connection uses a fresh X25519 Diffie-Hellman keypair; the relay never holds the room key.
- Local-first. Your source code, prompts, and AI responses stay on your machine. We only store the account and routing metadata needed to pair your devices. Push notification previews may include a short snippet of an event; see docs/SECURITY.md for details.
- Source-available bridge. The Bridge and the client protocol are in this repo. You can audit the code that runs on your machine.
- Source-available license. Released under the Functional Source License, Version 1.1, Apache 2.0 Future License (
FSL-1.1-ALv2).
Security details: docs/SECURITY.md
Supported AI assistants
| Assistant | Integration |
|---|---|
| OpenCode | Deep native integration with a bridge-managed runtime. |
| OpenAI Codex CLI | Native integration over Codex's local protocol. |
| Cursor | ACP-based integration. |
| Claude Code | Native stream-json integration. |
| Hermes Agent | ACP-based integration with Nous Research's coding agent. |
| Pi | Native JSONL RPC integration. |
| Oh My Pi | ACP-based integration. |
Every integration ships enabled by default — pick your assistant when you start a session, and run several at once on the same Bridge.
Pi notes
- Trust model: Sesori always launches Pi with
--approve— project-local Pi settings, extensions, skills, and prompt templates are trusted and applied without prompts. Only open projects whose code you trust. - Install: the Bridge can install a pinned Pi release for you, or it uses a
suitable
pifrom your PATH. Point--pi-bin <path>at a specific binary to make it authoritative (managed install is then disabled). - Profile: your normal Pi data and configuration are used —
PI_CODING_AGENT_DIR, session directories, and provider credentials are inherited, never replaced with a Sesori-only profile. - Login: provider login happens locally via Pi's
/login; there is no phone-driven provider login. - Terminal handoff: terminal-created sessions can be continued from Sesori, but exit the terminal Pi first. Running the same session concurrently from a terminal and Sesori is unsupported.
Oh My Pi notes
- Approval policy: Sesori inherits your OMP
tools.approvalMode. The defaultyolomode asks nothing; configure a stricter mode locally to get standard approval prompts. - Install: the Bridge can install a pinned OMP release, or it uses a
suitable
ompfrom your PATH. Point--omp-bin <path>at a specific binary to make it authoritative (managed install is then disabled). - Profile: your normal OMP profile, models, plugins, and credentials are
used —
OMP_PROFILE, legacyPI_PROFILE, and XDG roots are inherited. - Login: provider login happens locally; there is no phone-driven provider login.
- Protocol scope: Sesori talks to OMP over standard ACP (
omp acp). OMP-specific features outside ACP — host tools, subagent frames, terminal handoff frames — are not available from Sesori. Parent/child session lineage is not shown because ACP session listings do not expose it. - Terminal handoff: as with Pi, exit a terminal OMP session before continuing it from Sesori.
Hermes Agent notes
- Version: requires Hermes Agent 0.20.0 or later.
- Install: Sesori never installs or updates Hermes. It uses the
hermesCLI from your PATH; point--hermes-bin <path>at a specific binary to make it authoritative. - Model & login: pick your model and provider, and log in, with the Hermes CLI itself — Sesori inherits that configuration and never handles provider credentials.
- Sessions: sessions you start from Sesori are always visible, and other persisted ACP sessions can be imported explicitly. Ordinary Hermes CLI/TUI sessions are not discovered automatically.
- Deletion: deleting a Hermes session removes Sesori's copy of it; Hermes keeps its own record until upstream offers a delete API.
Repository overview
sesori_apps_monorepo/
├── bridge/ # Pure Dart workspace — Bridge CLI + backend plugins
├── client/ # Flutter workspace — mobile & desktop shells
├── shared/ # Cross-product crypto & protocol primitives
└── docs/ # Deep-dive guides
bridge/appis the headless CLI that runs on your laptop.bridge/sesori_plugin_*packages implement support for each AI assistant backend.client/appis the Flutter mobile shell.client/desktopis the in-development desktop companion.shared/sesori_sharedholds the encryption primitives and wire types used by both sides.
Full architecture: repo structure, dependency graph, and layered design are in docs/ARCHITECTURE.md.
Built for developers
- Plugin system. New AI assistant backends live in their own plugin package without touching the mobile app or core bridge.
- Headless bridge. The Bridge is usable without a GUI, ideal for remote machines, VMs, and server setups.
- Cross-platform. Mobile apps run on iOS and Android. Bridge CLI runs on macOS, Linux, and Windows.
- Encrypted by default. No optional VPN, no tunnel setup, no exposed ports on your laptop.
For where the project is headed, see docs/VISION.md and docs/ROADMAP.md.
Want to hack on it? See docs/CONTRIBUTING.md.
License & support
This repository is source-available under the Functional Source License, Version 1.1, Apache 2.0 Future License (FSL-1.1-ALv2).
- Docs: docs.sesori.com
- Discord: discord.gg/5KBC8dV9uR
- Email: hello@sesori.com
- Issues: GitHub Issues
Download for iOS · Download for Android · Read the Quickstart