Orbitos-island
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Local-first AI agent monitor for Linux — Tauri + Rust + React
Orbitos Island
The ambient cockpit for AI coding agents on Linux.
Orbitos Island is a Linux-native desktop companion that lives in your system tray, watches your AI coding agents, and gives you instant control — without leaving your terminal flow.
Inspired by Vibe Island and Open Island, but open source, Linux-first, and 100% local.
Features
- Ambient UI — Compact floating bar shows live agent activity. Hover to expand. No context switch.
- Permission Overlay — When an agent needs approval, a HUD pops up instantly. Approve or deny in one click.
- Terminal Jump — One click to focus the exact tmux/zellij/kitty/ghostty/wezterm/Konsole pane where your agent is running, with automatic X11/Wayland fallback.
- Session Timeline — Full event history per agent: tokens, duration, model, errors.
- Command Palette — Search sessions by agent, project, or command. Focus any session instantly.
- Analytics — Token usage, session duration, cost estimates, agent activity graphs.
- Audio Notifications — System sound alerts for permission requests, task errors, and completions via PipeWire/PulseAudio/ALSA.
- Notifications — Smart Linux-native notifications with priority (permission > error > complete > activity).
- Tray Icon — Quick glance at active sessions, start/stop services.
Supported Agents
| Agent | Permission Support | Status |
|---|---|---|
| Claude Code | ✅ | ✅ |
| OpenCode | ✅ | ✅ |
| Codex CLI | ❌ | ✅ |
| Aider | ❌ | ✅ |
| Gemini CLI | ✅ | ✅ |
| Antigravity | ❌ | ✅ |
| Cursor | ✅ | ✅ |
| GitHub Copilot | ❌ | ✅ |
| DeepSeek | ✅ | ✅ |
Adding a new agent? Write a plugin →
Supported Terminals
| Terminal | Jump to Session |
|---|---|
| tmux | ✅ (session/window/pane via IPC) |
| zellij | ✅ (session/tab/pane via IPC) |
| Kitty | ✅ (window focus via kitty @) |
| Ghostty | ✅ (pane focus via CLI) |
| WezTerm | ✅ (pane focus via wezterm cli) |
| Konsole | ✅ (via D-Bus) |
Fallback chain: Terminal-specific IPC → X11 (xdotool → wmctrl) → Wayland (swaymsg → qdbus → ydotool)
Jump detection uses process tree walking from the agent hook's parent PID through /proc to identify and store the exact terminal pane at session start — no re-detection on each jump.
Architecture
Orbitos Island utilizes a high-performance modular architecture. The core service runs as a background system daemon (agentosd), communication is handled locally via Unix Sockets using a lightweight CLI tool (agentos-hook), and telemetry is rendered in a beautiful floating cockpit (Orbitos Desktop).
AI Agents (Claude, OpenCode, Codex, …)
│
▼
agentos-hook (ultra-light CLI hook, calls daemon)
│
▼
┌──────────────────────────────────────┐
│ agentosd (Daemon) │
│ │
│ ┌─────────┐ ┌──────────┐ │
│ │ Plugins │→ │ EventBus │ │
│ └─────────┘ └────┬─────┘ │
│ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Session │ │ SQLite │ │
│ │ State │ │ Store │ │
│ └──────────┘ └──────────┘ │
│ │ │
│ ┌──────────┐ ┌──────────┐ │
│ │Notificat.│ │Terminal │ │
│ │Dispatcher│ │Jump+Det │ │
│ └──────────┘ └──────────┘ │
└────────────────┬─────────────────────┘
│ Unix Socket IPC
▼
┌──────────────────────────────────────┐
│ Orbitos Island (Tauri + React) │
│ │
│ Floating Bar │ Overlay HUD │
│ Timeline │ Command Palette │
│ Analytics │ Tray Icon │
└──────────────────────────────────────┘
Quick Start
Prerequisites
- Rust 1.75+
- Node.js 18+
- npm
Build & Run
Clone the repository
git clone https://github.com/jomvick/Orbitos-island.git cd Orbitos-islandCompile and test the workspace (Rust daemon)
cargo build --workspace cargo test --workspaceStart the core background daemon
# Runs agentosd with debug logging cargo run --bin agentosd -- --verboseLaunch the Orbitos Island desktop cockpit
cd apps/desktop npm install npm run tauri dev
Alternatively, you can start all services simultaneously with a single command:
./start.sh
Auto-Detect & Install
To discover installed agent instances on your system and configure their hooks:
cargo run --bin agentosd -- --discover
This commands will scan for compatible agents (like Claude Code and OpenCode) and print structured details, letting the desktop UI trigger auto-configuration seamlessly.
Manual Hook Installation
If you prefer to configure triggers manually:
./scripts/install-hooks.sh
agentos-hook --event '{"type":"session_start","agent":"opencode","session_id":"abc"}'
Project Structure
agentos/
├── daemon-core/ # Shared domain logic (Rust)
│ ├── agents/ # Plugin traits + registries
│ ├── events/ # Local EventBus broadcaster
│ ├── state/ # Session state machines & transitions
│ ├── notifications/ # Priority-based notification manager
│ └── terminals/ # Terminal detection + jumper (tmux, kitty, Ghostty, WezTerm, zellij, Konsole, X11/Wayland fallback)
│
├── core/
│ ├── daemon/ # agentosd main binary crate
│ ├── ipc/ # Unix socket protocols
│ └── storage/ # SQLite analytics & logs stores
│
├── plugins/ # Normalizers for agent output formats
│ ├── opencode/
│ ├── claude/
│ ├── codex/
│ ├── aider/
│ └── ... (and more)
│
├── hooks/ # agentos-hook CLI source crate
├── apps/desktop/ # Tauri v2 Desktop app (React + TypeScript)
├── packages/ # Shared schema definitions
├── docs/ # Developer guides & API docs
└── scripts/ # Launch & deployment helper scripts
Tech Stack
| Layer | Technology |
|---|---|
| Core Backend | Rust, Tokio, Serde |
| Local IPC | Unix Sockets (length-prefixed JSON) |
| Local Storage | SQLite (rusqlite) |
| Desktop Shell | Tauri v2 |
| Frontend UI | React, TypeScript, TailwindCSS |
| State Engine | Zustand, TanStack Query |
| Sound / Alerts | notify-rust, pw-play / paplay / aplay |
Why Orbitos Island?
- Linux native — Built specifically to run on desktop environments like KDE, GNOME, and Wayland. No Electron bloat.
- 100% local — Zero tracking, zero telemetry, zero accounts. Your credentials and code never leave your machine.
- Agent-agnostic — Easily add support for any existing or custom AI agent via lightweight plugins.
- Ambient presence — Stays completely out of your way until you need it, integrating as a floating desktop HUD.
- Terminal-first — Focuses the exact tmux/zellij terminal pane where the agent is waiting.
- Open Source — MIT licensed. Hack it, improve it, share it.
Active Roadmap & Issues
Each item links to its GitHub Issue with full technical specs. Status reflects the actual codebase state, not aspirations.
Completed:
- Daemon IPC protocol — Serde-tagged discriminated unions (
IpcMessage,IpcCommand,IpcStatus), Unix socket codec, normalizer plugins, session state machine, SQLite persistence. - 9 AI agent integrations — Claude, OpenCode, Codex, Aider, Gemini, Antigravity, Cursor, Copilot, DeepSeek. Each has a normalizer plugin in
plugins/. - Floating bar + overlay HUD — Tauri v2 translucent window, FloatingBar (priority pill + hover panel + cockpit), Overlay (Permission/Question/Review tabs), Dashboard (sessions + analytics).
- System Sound Alerts (Issue #7) —
pw-play/paplay/aplayauto-detection, embedded WAV assets, Tauriplay_soundcommand invoked onpermission_requested,session_failed,session_completedevents. - Plan Review Overlay (Issue #6) —
PlanDiffViewrenders unified diffs with color-coded add/remove/hunk lines, per-file expand/collapse cards, plan proposal steps. Overlay has "Permission" and "Review Changes" tabs. - Agent Auto-Discovery (Issue #8) —
agentosd --discoverscans PATH for 9 agents, auto-installs hooks for Claude/OpenCode, creates shell wrappers in~/.local/share/agentos/bin/, injects PATH into shell configs.DiscoveryWizardUI component in Settings > Plugins invokesdiscover_agentsIPC, shows live detection status per agent, one-click "Install Hooks" buttons. - Native Terminal Focus Jump (Issue #14) — Process tree walk from hook PPID via
/proc, pane targeting for tmux/zellij/kitty/Ghostty/WezTerm/Konsole, X11/Wayland fallback dispatcher (xdotool→wmctrl→swaymsg→ydotool). - Timeline Filters & Pagination (Issue #9) — Backend SQL supports
OFFSET+ dynamicWHEREfilters (agent, phase/event_kind). Frontend Timeline rewired toinvoke("get_timeline", { limit, offset, agent, phase })with agent/phase dropdowns and "Load More" pagination button. - Type IPC payload with discriminated union (Issue #19) —
daemon_client.rsemitsdata_typetag ("session"|"event"), TypeScriptDaemonEventDatadiscriminated union in shared-schema, allas anycasts removed,useDaemonConnection.tsdispatches ondata_typeinstead of duck-typing. - Replace bare unwrap() with expect() (Issue #17) —
lib.rsTauri entry points useexpect()with descriptive messages.clippy.tomldisallowsOption::unwrapandResult::unwrap. - Retry in agentos-hook sender (Issue #18) —
sender.rssend_event()retries once with 50ms delay before failing, preventing dropped events on transient daemon startup. - Wayland Layer-Shell Overlay Positioning (Issue #15) — Compositor detection (Sway/Hyprland/River/KDE/GNOME), per-compositor overlay rules via native CLI tools (
swaymsg,hyprctl,riverctl,kwriteconfig),set_ignore_cursor_eventswired to Tauri API, always-on-top without focus steal on Wayland.
Planned:
- Vibe Island Feature Parity (Issue #10) — SSH tunneling for remote sessions, daily token quotas with hard limits, smart action triggers (auto-approve trusted commands, auto-reject dangerous ones).
- Fluid HUD Orb Animations (Issue #11) — Liquid shape-shifting SVG orb that morphs based on agent cognitive state (idle → thinking → waiting → done). Requires lottie/SVG animation engine and phase-to-shape mapping.
- Global System-wide Shortcuts (Issue #12) — Needs
tauri-plugin-global-shortcutintegration. Currently only local DOMkeydownlisteners (Escape, Alt+A, 1-9 for question answers) — these only work when the Tauri window has focus. Global shortcuts must work regardless of focus. - Daemon Auto-Spawning & Watchdog (Issue #13) — Daemon has internal watchdogs (PID watcher, stale session orphaning). Missing: Tauri
setup()must detect ifagentosdsocket exists, spawn it as a child process if not, and restart on crash. Currentlydaemon_client.rsretries 10× then gives up — no spawn logic. - API Token Pricing & Budget Thresholds (Issue #16) — Per-model price tables (
input_cost_per_1k,output_cost_per_1k), session cost accumulation, hard notification when daily/monthly budget exceeded, analytics charts.
Technical Debt:
See remaining open issues at github.com/jomvick/Orbitos-island/issues.
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found