← All features

Daemon Mode

Keep GNO fresh without the web UI

Run GNO as a headless long-running watcher and resident MCP gateway. The service keeps watching while local models load on first use and unload after an idle period (five minutes by default, set with warmModelTtl). Later semantic requests reload them; keyword search does not need a model. Editor saves and folder deletes are picked up without rescanning untouched files.

Use cases
Always-fresh agent memory
Background indexing for large vaults
Local automation without a browser session

What it gives you

  • Continuous indexing without opening the browser
  • Editor saves and folder deletes are picked up without rescanning untouched files
  • Reuses the same watch, sync, and embed runtime as gno serve
  • Stateful Streamable HTTP MCP at 127.0.0.1:3000/mcp
  • Saved Capsules are rechecked for freshness after indexing, without calling a model
  • Several MCP clients can share the daemon and its loaded models; each session stays isolated
  • Native --detach self-backgrounding, with no nohup, launchd, or systemd unit
  • --status and --stop for first-class lifecycle control
  • Persistent watch, sync, embed, and MCP service that unloads idle models
  • If the model process fails, the request returns an error; send it again, because GNO does not retry it
  • Shutdown finishes accepted work within a time limit; pending embeddings resume on the next run
  • Background indexing gives way to CLI writes, so a CLI write while the daemon runs reports BUSY at worst, never database is locked
  • A failing background embed pass backs off (30s, 60s, 120s, 240s) and parks after 5 failures in a row
  • --status lists background issues: a failing, parked, or overrunning embed pass, or a resident that does not answer within 500ms
  • --stop works even while another process is writing to the database
  • Supports --no-sync-on-start for watcher-only startup
  • Works with offline and manual download policy

Try it yourself

Representative commands and entry points. Full reference lives in the documentation.

gno daemon
gno daemon --no-sync-on-start
gno daemon --detach --log-file /tmp/gd.log
gno daemon --status
gno daemon --stop

Keep reading

Related features and docs.