Architecture
How Plexus is built: a Tauri desktop app with a Vue UI and a Rust backend that wraps the Claude Code CLI, runs git natively and keeps your code local.
Plexus is a native Tauri desktop app that wraps the real Claude Code CLI: a Vue frontend for the interface, and a Rust backend that runs the terminals, git and file work on your machine.
Native, not a browser tab
Plexus ships as a Tauri desktop app: a lightweight Vue UI driving a Rust backend. The backend owns everything slow or system-level — PTY terminals, git operations, file IO, and provider calls — so the interface stays responsive while agents and shells run underneath it. You install a signed build, not a web app; see Install.
Choosing Tauri over Electron was deliberate. An Electron app bundles its own copy of Chromium and runs the app's logic in JavaScript on a single main thread — so its memory footprint is heavy from the start and tends to creep up as features pile on, and the more you ask of it at once (many live sessions, terminals, and git operations in parallel) the more that one thread becomes the bottleneck. It's felt most on modest or older hardware. Plexus instead pairs a lightweight system-webview UI with a multithreaded Rust backend, keeping the heavy, concurrent work off the UI thread so the app stays fast as your session count climbs.
Local-first by design
Plexus never sends your code, your sessions, your diffs or your credentials anywhere, and there is no server-side copy of any of them. Plexus drives the claude CLI that you already have on your PATH, so it runs on your Claude subscription rather than calling a hosted API behind your back. The only ways any of it reaches us are ones you start yourself: attaching a screenshot or a diagnostic log to a report — see Feedback — or turning on cross-device sync.
There is an optional Plexus account, and an optional plan you can buy on top of it. An account holds who you are, your organizations and the machines you signed in from. A plan adds one thing on top: cross-device sync, which copies your settings and the names of your workspaces and projects to your account so they follow you between machines. It is off until you turn it on, one dialog shows you every value that would leave before the first byte does, and it still never carries a session, a worktree, a diff, a path on your disk or a key. Everything else in the app behaves identically whether you have an account, a plan, both or neither.
Only the active session is mounted
Plexus can run many sessions in parallel, but it only mounts the UI for the one you're looking at. Idle sessions stay warm in the background — their agent and worktree are alive and processing — so switching between them is instant and nothing loses its place. See Concepts for how sessions, worktrees, and projects fit together.
The window at a glance
The app is one window with a few fixed regions:
| Region | What lives there |
|---|---|
| App bar | The Plexus mark, the workspace switcher, the Dashboard / Sessions views, one + for a new session, the density control, the Settings button and a light ⇄ dark theme toggle (all three theme modes live in Settings → Appearance) |
| Context bar | A full-width band under the app bar naming where you are — project, then session, then the agent's state — and carrying the tools that act on it |
| Left tree | Projects and their sessions, plus the Dashboard and archived items |
| Center | The active session — a tabbed view: Agent, Review, Explorer, Git |
| Bottom | A collapsible terminal panel rooted in the session's worktree |
Switch tabs with ⌘1–⌘4, toggle the terminal with ⌘J, and toggle the dashboard with ⌘0.
What the backend handles
- Terminals — each session and scratch shell runs in a real PTY, so interactive tools and TUIs work exactly as they would in your own terminal.
- Git — worktrees, branches, diffs, rebase, merge, and squash are native git operations, not reimplementations. See Worktrees.
- Providers — Plexus launches and supervises the
claudeprocess for each session and streams its output to the UI.
The result is a thin client over fast native plumbing: the UI is just a view, and the work happens close to your filesystem.