Skip to content

v0.9.3 — Async Daemon

Choose a tag to compare

@nikhilsoman nikhilsoman released this 23 Jun 17:25
a5908cf

What's new in v0.9.3

synlynk is now always-on. Agents can pull context without invoking the CLI each time.

synlynk daemon

synlynk daemon start               # fork-daemonize, write .synlynk/daemon.pid
synlynk daemon stop
synlynk daemon status              # running/stopped + queue depth + HTTP URL
synlynk daemon restart
synlynk daemon --install-service   # register with launchd / systemd / crontab
synlynk daemon --uninstall-service

HTTP API — localhost:27471

Method Path Description
GET /context Current context.md
GET /status Uptime, queue depth, pid
GET /jobs All jobs (filter with ?status=)
GET /jobs/<id> Single job + log tail
POST /dispatch Enqueue a job
GET /stories Story list
GET /stories/<id> Single story
GET /capability Capability ratings
GET /sentinel Active sentinel alerts
POST /checkpoint Force context regeneration

Persistent job queue

  • daemon_jobs table in state.db — survives restarts
  • Priority 1–10, dependency chains via depends_on JSON array
  • Zombie-safe process reaping via os.waitpid(WNOHANG)
  • Per-job commit — crash mid-dispatch never produces duplicate runs

Service installation

  • macOS: launchd plist → ~/Library/LaunchAgents/com.synlynk.daemon.plist
  • Linux: systemd user unit → ~/.config/systemd/user/synlynk-daemon.service
  • Fallback: @reboot crontab entry

432 tests passing. Full changelog: CHANGELOG.md