A multi-agent orchestration platform for AI CLI tools like Claude Code and Kiro CLI.
plexusone-app/
├── apps/
│ ├── desktop/ # macOS app (Swift + SwiftTerm)
│ ├── flutter/ # iOS/Android/web/macOS companion (Flutter)
│ └── ios/ # Native iOS/iPadOS companion (Swift + SwiftTerm)
├── services/
│ └── tuiparser/ # WebSocket bridge for mobile streaming (Go)
└── docs/
├── guides/ # User and developer guides
├── design/ # Architecture and decision records
├── specs/ # PRD, TRD, feature specs, roadmaps
└── releases/ # Release notes and changelog
Native macOS terminal multiplexer built with Swift and SwiftTerm.
- Multi-window, multi-pane grid layout
- Attach/detach to tmux sessions
- Pop-out sessions to dedicated windows
- Pane terminal - a plain shell below a pane's coding session, opened in the folder the session works in; shown or hidden from the pane header, resizable, with a default height set in Settings
- Input detection for AI assistant prompts (Claude, Kiro, etc.)
- PTY wrapper detection - warns if a session is running behind a shell-autocomplete PTY shim (Kiro CLI, Fig, Amazon Q) known to freeze terminal panes
- Claude Sessions window (
⇧⌘S) - lists Claude Code sessions with their tmux session, subject, repositories, last activity, and whether each ended normally or in a crash, restart, or closed terminal; resumes the ones you pick into tmux sessions you name - Waiting alerts - a notification and Dock badge when a Claude session needs you (for example at a permission prompt);
⌘Jjumps to the next one - Pane headers show each pane's Claude session name and whether it is waiting
- Restoring at launch recreates missing tmux sessions by resuming the Claude session that last ran in each, so a crash or restart is one step to recover from
- Optional Claude Code hook that records sessions and their tmux names even while the app is closed
- Trackpad scrolls tmux history (tmux mouse mode per attached session; hold Shift to drag-select)
- Keyboard pane navigation (
⌘]/⌘[), attach (⌥⌘A), and detach (⇧⌘A) - Visual focus indicator for active pane
- Session state persistence
Download: Releases
Install: Open the .dmg and drag PlexusOne Desktop to Applications. Release builds are ad-hoc signed but not notarized, so on first launch macOS shows "Apple could not verify ... free of malware". Open System Settings → Privacy & Security, scroll to the message about PlexusOne Desktop, and click Open Anyway; the prompt does not recur. (Alternatively, from Terminal: xattr -dr com.apple.quarantine "/Applications/PlexusOne Desktop.app".)
Build & Run:
cd apps/desktop
swift build
open "PlexusOne Desktop.app"Cross-platform companion app for monitoring and interacting with agents remotely.
- Terminal-styled output view
- Session tabs
- Quick action buttons (Yes/No/Always)
- Virtual D-pad for menu navigation
- WebSocket connection to TUI Parser, with an optional token and
wss://
Build & Run:
cd apps/flutter
flutter pub get
flutter runNative iOS/iPadOS companion app using SwiftTerm (same terminal library as Desktop). Connects to TUI Parser with an optional token.
Build & Run:
cd apps/ios
xcodebuild -project PlexusOneiOS.xcodeproj \
-scheme PlexusOneiOS \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
buildGo service that bridges tmux sessions to mobile clients over WebSocket.
- Attaches to tmux sessions via PTY
- Streams terminal output
- Accepts input/keystrokes from mobile
- Pattern detection for TUI prompts (planned)
Build & Run:
cd services/tuiparser
go build -o bin/tuiparser ./cmd/tuiparser
./bin/tuiparser --port 9600Debug console: http://localhost:9600
By default it listens on 127.0.0.1 only. Any client that connects can type
into your tmux sessions, so listening on the network (--host 0.0.0.0)
requires a token, which clients send as Authorization: Bearer <token> or
?token=<token>:
export TUIPARSER_TOKEN=$(openssl rand -hex 32)
./bin/tuiparser --host 0.0.0.0 --port 9600For access away from your desk, prefer Tailscale or an SSH tunnel to exposing the port. See Connecting to Desktop.
┌───────────────────────────────────────────────────┐
│ macOS │
│ │
│ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ tmux │ │ TUI Parser (Go) │ │
│ │ sessions │◄───►│ WebSocket server :9600 │ │
│ └─────────────┘ └───────────┬─────────────┘ │
│ ▲ │ │
│ │ │ │
│ ┌──────┴──────┐ │ │
│ │ PlexusOne │ │ │
│ │ Desktop │ │ │
│ └─────────────┘ │ │
└──────────────────────────────────┼────────────────┘
│ WebSocket (LAN)
┌─────────▼────────┐
│ PlexusOne Mobile │
│ (Flutter or iOS) │
└──────────────────┘
Other tools for running several coding agents side by side:
| Project | Built with | Focus |
|---|---|---|
| cmux | Swift, Ghostty-based macOS terminal | Vertical tabs and notifications for AI coding agents |
| Agent Deck | Go, terminal UI | One session manager for Claude, Gemini, OpenCode, Codex, and others |
| workmux | Rust, tmux | Git worktrees paired with tmux windows for parallel development |
| herdr | Rust | A background server keeps agent terminals running; after a restart it restores the layout and resumes supported agent sessions |
| Agent of Empires | Rust, terminal and web UI | Managing several agents from a terminal UI or a browser, including on mobile |
| dmux | tmux | Git worktrees and parallel agent tasks |
PlexusOne keeps your existing tmux sessions as the backend: a native macOS grid of SwiftTerm panes, a mobile companion over WebSocket, and a Claude Sessions window that finds and restores sessions lost to a crash or restart.
- Changelog
- Product Requirements
- Technical Requirements
- Mobile App PRD
- AgentPair Integration
- AgentSentinel Integration
- Voice Note Feature
- macOS 14+
- Xcode 16+ (for Swift development)
- Go 1.22+
- Flutter 3.x
- tmux
-
Start tmux sessions:
tmux new-session -d -s agent1 tmux new-session -d -s agent2
-
Run TUI Parser:
cd services/tuiparser && ./bin/tuiparser
-
Run Desktop App:
cd apps/desktop && open "PlexusOne Desktop.app"
-
Run Mobile App (same WiFi network):
cd apps/flutter && flutter run
MIT - See LICENSE

