7 releases
Uses new Rust 2024
| 0.3.3 | May 11, 2026 |
|---|---|
| 0.3.2 | May 11, 2026 |
| 0.2.4 | Apr 27, 2026 |
| 0.1.2 |
|
#184 in Debugging
1MB
28K
SLoC
Situational awareness for AI agents.
Table of Contents
- What is Daemon8?
- Install
- Getting Started
- Features
- MCP Tools
- HTTP API
- CLI Reference
- Architecture
- Contributing
- License
- Contact
What is Daemon8?
Daemon8 is a local process that gives AI agents access to runtime data. Console errors, network failures, device logs, and application traces land in one observation stream as code is being edited and executed. A built-in librarian index catalogs local context so agents can look up what they need without leaving their workflow.
The daemon runs on your machine. All features are opt-in via the CLI. Runtime data and curated memory stay local.
v0.3 alpha — in active development. Show support by starring, trying it out, and submitting issues.
Install
curl -fsSL https://daemon8.ai/install.sh | bash
Windows (PowerShell):
irm https://daemon8.ai/install.ps1 | iex
Or install from source:
cargo install daemon8
Pin a specific version with DAEMON8_VERSION=v0.3.3 before the curl command.
The installer downloads the binary, verifies its SHA-256 checksum, installs it, and runs daemon8 setup to show current state.
Warning
macOS: first launch may trigger an "unidentified developer" Gatekeeper prompt and request Background Items and App Management permissions. Both are expected until signed release binaries ship.
Getting Started
daemon8 install # register as a system service
daemon8 init # create .daemon8.toml in the current project
daemon8 setup apply # register runtime sources and configure AI providers
daemon8 features opens an interactive menu for enabling hooks and project scaffolding.
For best results, add daemon8 instructions to your AI context file (~/.claude/CLAUDE.md, ~/.gemini/GEMINI.md, or ~/.codex/AGENTS.md) telling the agent to use daemon8 for debugging, note-taking, and agent communication.
Verify the daemon is running:
daemon8 status
daemon8 doctor
Features
The observation stream is always on. Everything else is opt-in via the CLI (daemon8 features).
Observation Stream
All runtime signals live-stream into one feed: application logs, browser console output, network failures, device logs, CLI hook telemetry, and agent-emitted notes. The SSE endpoint (/api/stream) supports Last-Event-ID replay; subscribe_observations pushes real-time alerts directly into agent sessions.
daemon8 tail # live-stream observations
daemon8 query --kinds log,exception --limit 20 # query stored observations
Ingestion endpoints accept observations over HTTP (POST /ingest), UDP (port 8889), and Unix socket.
curl -X POST http://localhost:8888/ingest -H 'Content-Type: application/json' -d '{"kind":"log","severity":"info","app":"my-api","data":{"message":"deploy complete"}}'
Browser Actions
Connect the daemon to Chrome DevTools Protocol to observe console output, network requests, JS exceptions, and lifecycle events. Run JavaScript, capture screenshots, inject CSS, and inspect storage.
Enable: call the connect_browser MCP tool, or:
daemon8 browser connect
CLI Hooks
Stream what your agent does. Hooks capture tool calls, file edits, and command runs as observations -- giving agents cause-and-effect context across their own actions.
Enable:
daemon8 setup apply --install-hooks local # project-level hooks
daemon8 setup apply --install-hooks global # machine-level hooks
Or manage hooks directly:
daemon8 hooks list
daemon8 hooks update
daemon8 hooks repair
Lenses
A lens is a focused filter that buffers matching observations into a ring buffer (up to 1000 rows). Set a lens before making a change, then query to see only what matched.
Lenses are always available. No setup required.
daemon8 lens set --kinds exception --severity-min warn
daemon8 lens status
daemon8 lens clear
Checkpoints and Debug Sessions
Bookmark the stream before a change, then query only what happened after.
# via MCP: create_checkpoint, then query_observations with since_checkpoint
Debug sessions group checkpoints, observations, and a resolution summary into one investigation. Sessions are always available through MCP tools (start_debug_session, create_checkpoint, resolve_debug_session).
Memory
Save verified fixes, error signatures, patterns, and decisions to a local memory table. Query by kind, tags, project, or text. Tag hash:<error_hash> links error signatures with their fix summaries.
Memory is always available. No setup required.
daemon8 memory export --kind pattern --project my-app
Librarian Index
A graph-based catalog on SurrealDB for looking up local and remote context. Agents index docs, source templates, fixes, and projects as nodes with typed edges (has_source, documented_by, fixes, supersedes, child_of). Lookup-only by design -- agents query the catalog, they don't generate from it.
Enable: available when SurrealDB store is configured (default with daemon8 serve).
# via MCP: librarian_index, librarian_lookup, librarian_forget
File Sources
Tail log files and parse them into structured observations. Eight built-in parsers: JSON, syslog, monolog, logfmt, CLF, line, grok, and auto-detect.
Enable: add [sources.*] entries to .daemon8.toml:
[sources.api-logs]
path = "/var/log/my-api/app.log"
parser = "auto"
tags = ["api"]
Device Monitoring (ADB)
Stream logcat from Android devices connected via ADB.
Enable: set [adb] enabled = true in ~/.config/daemon8/config.toml:
[adb]
enabled = true
MCP Tools
29 MCP tools grouped by capability. Every tool returns the standard envelope ({result, daemon8, error}) -- see daemon8_help(topic="envelope"). Destructive and apply-style operations require explicit confirmation flags.
Observation
| Tool | Purpose |
|---|---|
query_observations |
Filter the observation stream by kind, severity, origin, text, tags, correlation id, or checkpoint. |
status |
Health snapshot: error rate, source counts, observation count, version. |
list_connections |
Active sources plus browser connection state. |
subscribe_observations |
Register a real-time alert filter. Matching observations push as MCP notifications. |
ingest_observation |
Record an observation from inside an agent loop. |
Debug Session
| Tool | Purpose |
|---|---|
start_debug_session |
Open an investigation. Required prereq for checkpoints and resolution. |
create_checkpoint |
Bookmark the stream inside an active session; pair with since_checkpoint. |
resolve_debug_session |
Close on success with a rich SessionSummary memory (root_cause, fix_diff, commands, related errors). |
end_debug_session |
Close without a fix; writes a thin SessionSummary so the row never silently disappears. |
list_debug_sessions |
Enumerate sessions, optionally filtered by status. |
Action
| Tool | Purpose |
|---|---|
connect_browser |
Attach the daemon to a Chrome DevTools Protocol endpoint. |
issue_command |
Eval JS, screenshot, CSS inject, storage inspect/set/clear, navigate, set viewport, network throttle, list/new/close tabs. |
Lens
| Tool | Purpose |
|---|---|
set_lens |
Create a focused filter that buffers matches into a ring buffer (max 1000). |
lens_status |
Inspect the active lens filter and buffer depth. |
clear_lens |
Remove the active lens. |
Memory
| Tool | Purpose |
|---|---|
save_memory |
Store a pattern, decision, error_signature, session_summary, or user_flagged memory. |
query_memory |
Search by kind, tags, project, or text. Tag hash:<x> joins error signatures with their fix summaries. |
forget_memory |
Delete by id; requires confirm=true. |
Setup
| Tool | Purpose |
|---|---|
setup_status |
Report current setup state for the project at cwd. |
setup_plan |
Compute the action plan that setup_apply would run. |
setup_apply |
Apply the plan to the project; requires yes=true. |
Hooks
| Tool | Purpose |
|---|---|
hooks_list |
Enumerate installed daemon8 CLI hooks across providers and scopes. |
hooks_remove |
Uninstall daemon8 hook entries from a provider/scope. |
hooks_update |
Reinstall (force) -- fixes drift after binary moves or spec changes. |
hooks_repair |
Detect drift across all providers and reinstall only what's stale. |
Librarian
| Tool | Purpose |
|---|---|
librarian_index |
Catalog a node (doc, source_template, fix, project) with tags and edges. |
librarian_lookup |
Query the catalog by kind, tags, project, or text. |
librarian_forget |
Remove a node; requires confirm=true. |
Help
| Tool | Purpose |
|---|---|
daemon8_help |
Narrative protocol docs by topic (debug_session, checkpoint, setup, hooks, lens, librarian, memory, observations, envelope). |
HTTP API
Observation, browser, lens, and memory routes for non-MCP clients. Most routes return JSON; /api/stream is SSE and /health returns plain text.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/observe |
Query observations (same filters as query_observations). |
| GET | /api/checkpoint |
Current checkpoint id. |
| GET | /api/summary |
Runtime summary (errors, connections, counts). |
| GET | /api/connections |
Active source and browser state. |
| POST | /api/connect |
Set Chrome DevTools endpoint. |
| GET | /api/stream |
Server-Sent Events stream with Last-Event-ID replay. |
| GET / PUT / DELETE | /api/lens |
Inspect, set, or clear the active lens. |
| POST | /api/browser/act |
Same action surface as issue_command. |
| GET / POST | /api/memory |
Query or save curated memory rows. |
| POST | /api/memory/export |
Stream ordered memory export rows as NDJSON. |
Ingestion endpoints live alongside the API on the same port:
| Method | Path | Purpose |
|---|---|---|
| POST | /ingest |
Single observation. JSON body. |
| POST | /ingest/batch |
Array of observations. |
| GET | /health |
Health probe (returns 200 ok). |
A UDP listener accepts the same JSON shapes on port 8889 for fire-and-forget telemetry.
CLI Reference
| Command | Description |
|---|---|
daemon8 serve |
Start the daemon (default when no subcommand given). |
daemon8 status |
Show daemon health and status. |
daemon8 tail |
Stream observations in real-time. |
daemon8 query |
Query stored observations. |
daemon8 connections |
List active data source connections. |
daemon8 browser |
Browser DevTools commands. |
daemon8 lens |
Manage per-session observation lens. |
daemon8 memory |
Export memory query results to per-row Markdown files. |
daemon8 logs |
Show log file location or tail logs (--follow). |
daemon8 config |
Show or modify configuration. |
daemon8 completions |
Generate shell completions. |
daemon8 install |
Install as a system service. |
daemon8 uninstall |
Remove the system service. |
daemon8 setup |
Inspect, plan, or apply guided setup. |
daemon8 channel |
Real-time alert relay for MCP clients (experimental). |
daemon8 doctor |
Diagnose configuration and environment (--fix to auto-repair). |
daemon8 init |
Scaffold a .daemon8.toml in the current project. |
daemon8 hooks |
Manage daemon8 CLI hooks across providers (list | remove | update | repair). |
daemon8 features |
Interactive feature activation menu. |
Architecture
Sources (inputs) Agents (outputs)
----------------- ----------------
Browser (CDP) ---\ /-- Codex
Applications ----> daemon8 ----> Claude Code
Devices (ADB) ---/ [localhost:8888] \--> Gemini CLI
CLI hooks --/
Sources push observations into the daemon loop. Agents query, subscribe, and act through MCP (http://localhost:8888/mcp) or the parallel HTTP API.
Core crates in the Cargo workspace:
| Crate | Purpose |
|---|---|
daemon |
CLI binary, command dispatch, runtime wiring. |
types |
Shared types: Observation, Filter, severity, origin, and memory kind records. |
store |
SurrealDB backend for observations, curated memory, debug sessions, librarian catalog, and the LensManager ring buffer. |
api |
Axum HTTP routes: observe, stream, lens, memory, and browser actions. |
mcp |
MCP server: 29 tools across observe, debug-session, action, lens, memory, librarian, setup, hooks, help routers. |
ingest |
HTTP, UDP, and Unix socket ingest endpoints. |
chrome |
Chrome DevTools Protocol bridge over raw WebSocket. |
adb |
Android Debug Bridge transport for device logcat. |
parse |
Log parser trait with built-in format parsers (JSON, syslog, monolog, logfmt, CLF, grok, auto-detect). |
providers |
AI tool detection, hook management, and provider configuration. |
Contributing
Pull requests welcome. See CONTRIBUTING.md. Code of conduct: CODE_OF_CONDUCT.md.
License
Fair Core License 1.0 with Apache 2.0 Fallback (FCL-1.0-ALv2). Full rights for internal use, education, research, and professional services. Restricts competing use. Each release relicenses under Apache 2.0 two years after publication.
DAEMON8 is a trademark of Havy.tech, LLC.
Contact
- General / security: mail@daemon8.ai
- Discussion: GitHub Discussions
- Bugs / features: Issues
Copyright 2026 Havy.tech, LLC.
Dependencies
~87–145MB
~2.5M SLoC