OrbyNode is the self-hosted control plane for coding agents. It runs persistent terminal agents, owns their PTYs, files, tasks, Git workflows, services and machine state in one daemon, and reconnects your browser without interrupting the work.
The browser and desktop shell are replaceable clients. The daemon is the runtime. Closing a client never kills an agent.
| Capability | Why it matters |
|---|---|
| Persistent PTY runtime | Real terminals survive disconnects, UI restarts and network changes. |
| Realtime control plane | One authenticated multiplexed WebSocket with snapshots, replay and bounded queues. |
| Agent awareness | Detect Claude, Codex, Gemini, OpenCode and Hermes state, approvals and failures. |
| Files and Git | Inspect, edit and review changes without leaving the control plane. |
| Tasks and worktrees | Isolate agents per task and keep merge flows under review. |
| Services and previews | Discover local ports and proxy development previews safely. |
| Multi-user RBAC | Owner, admin, operator, developer and viewer roles with project membership. |
| Remote nodes | Pair machines with expiring secrets and aggregate agents across hosts. |
| Observability | Host, session, token/context and workflow signals with an Attention Center. |
| APIs and workflows | Versioned /api/v1, MCP-style tools, webhooks and configuration-driven orchestration. |
Requirements: Rust 1.85+, Bun 1.1+, Node 20+ for CI compatibility.
git clone https://github.com/PotenFYR-Studios/OrbyNode.git
cd OrbyNode
(cd web && bun install && bun run build)
cargo run --release -p orbynode-daemon
Open http://127.0.0.1:7676, complete first-run setup, and create the first Owner.
The daemon binds 127.0.0.1 by default. Non-loopback binding is opt-in and must be paired with authentication and HTTPS or a trusted overlay.
Browser / PWA / Tauri shell
|
HTTP(S) + WebSocket
v
OrbyNode daemon
/ | \
PTYs SQLite Realtime bus
| | |
Agents durable snapshots,
tasks state replay, events
| Crate | Role |
|---|---|
orbynode-core |
Small shared configuration and path types. |
orbynode-terminal |
Real PTY lifecycle and bounded output fan-out. |
orbynode-realtime |
Event bus, sequences, replay, subscriptions and backpressure. |
orbynode-database |
SQLite with WAL, migrations and durable repositories. |
orbynode-auth |
Argon2id, sessions, throttling and RBAC primitives. |
orbynode-agents |
Agent detection and Attention Center. |
orbynode-files |
Root-contained files, Git and worktrees. |
orbynode-services |
Port discovery, service metadata and process snapshots. |
orbynode-nodes |
Remote-node identity, pairing, heartbeat and revocation. |
orbynode-notifications |
Browser events and generic webhooks. |
orbynode-workflows |
Configuration-driven pipeline execution. |
orbynode-api |
Axum routes, auth middleware, gateway and embedded UI. |
The web client uses Vite + React + TypeScript + Bun + Magic UI. Next.js and other meta-frameworks are not used.
(cd web && bun install) # install frontend dependencies
cargo build # build backend
scripts/check.sh # run every required gate
Run the daemon with live frontend assets:
(cd web && bun run build)
ORBYNODE_STATIC_DIR=web/dist cargo run -p orbynode-daemon
Automated release builds target Linux x86_64 and ARM64, macOS Intel and Apple Silicon, and Windows x86_64 and ARM64. Artifacts include locked daemon builds, SHA-256 checksums, SBOM inventory and Cosign signatures.
Local release subset:
scripts/release.sh <rust-target-triple>
See docs/v1-readiness.md for remaining clean-machine installer and upgrade gates.
Contributions are welcome. Keep changes milestone-scoped, add ADRs for substantial architecture, and run the full check suite before opening a pull request.
Terminal access is remote-code-execution capability. Do not open public issues for exploitable flaws; follow the confidential process in SECURITY.md.
OrbyNode is distributed under Apache-2.0 with the Commons Clause. You may use, modify and build around it, but you may not sell the software itself as a paid product. See LICENSE.