β οΈ Under Development β This is a personal R&D project. Not ready for production use.
A resident AI desktop agent for Linux. An orchestrator that bridges OS, applications, screen context, and automation through natural language.
Target environment: NixOS + Wayland (Hyprland)
Nerva aims to be an OS-level AI agent layer that understands the user's current context, orchestrates native capabilities, and delivers the shortest path to action.
- Launcher experience like Raycast / Alfred
- OS-level agent like Open Interpreter
- Designed to coexist with Wayland's security model
Launcher UI β Agent Runtime β Capability Bus β Skills β OS Integration
(thin) (LLM/planner) (policy/audit) (actions) (DBus/Wayland/PW)
See docs/architecture.md for details.
crates/
βββ nerva-core/ # CapabilityBus, ToolRegistry, PolicyEngine, Skill trait
βββ nerva-os/ # OS integration (process, clipboard, screenshot, wayland)
βββ nerva-skills/ # Built-in skill implementations + plugin loader
βββ nerva-daemon/ # nervad β resident daemon
βββ nerva-cli/ # nerva β CLI client
- Rust 1.85+
- Linux (Wayland recommended)
- Optional:
grim(screenshot),wl-paste(clipboard),hyprctl(window management),notify-send(notifications)
cargo build
cargo test# Terminal 1: Start the daemon
cargo run --bin nervad
# Terminal 2: Use the CLI
cargo run --bin nerva -- status
cargo run --bin nerva -- tools
cargo run --bin nerva -- exec launch_app --input '{"app": "firefox"}'
cargo run --bin nerva -- exec clipboard_read
cargo run --bin nerva -- exec list_windows
cargo run --bin nerva -- exec run_command_safe --input '{"cmd": "uname", "args": ["-a"]}'
cargo run --bin nerva -- log| Document | Description |
|---|---|
| Architecture | 5-layer architecture, crate structure, protocol |
| Roadmap | Development roadmap and non-goals |
| Design Decisions | Key decisions with rationale (Wayland, NixOS, risk tiers, etc.) |
| NixOS Integration | NixOS module structure, systemd service, flake design |
| Development Guide | VM setup, build instructions, testing strategy |
MIT