API and WebSockets
The daemon exposes a local HTTP API plus WebSocket log streaming.
Base URL
Use the address written to .husky/api.addr, or the configured API address.
Core endpoints
Status and jobs
GET /api/statusGET /api/jobsGET /api/jobs?tag=<tag>GET /api/jobs/:namePOST /api/jobs/:name/runPOST /api/jobs/:name/cancelPOST /api/jobs/pause?tag=<tag>POST /api/jobs/resume?tag=<tag>
Runs and logs
GET /api/runs/:idGET /api/runs/:id/logsGET /api/runs/:id/outputsGET /ws/logs/:run_id
Observability
GET /api/auditGET /api/tagsGET /api/dag
Daemon control
POST /api/daemon/stopPOST /api/daemon/reloadGET /api/daemon/info
Config and database views
GET /api/configGET /api/config/daemonPOST /api/config/validatePOST /api/config/saveGET /api/db/job_runsGET /api/db/run_logsGET /api/db/run_outputsGET /api/db/alertsGET /api/db/state
Example calls
curl -s http://127.0.0.1:8420/api/jobs | python3 -m json.tool
curl -s -X POST http://127.0.0.1:8420/api/jobs/ingest_users/run | python3 -m json.tool
curl -s http://127.0.0.1:8420/api/audit?trigger=manual | python3 -m json.tool
WebSocket log streaming
Connect to:
ws://127.0.0.1:8420/ws/logs/<run_id>
Behavior:
- historical lines are backfilled first
- new lines stream live
- the stream closes when the run reaches a terminal state
Auth and RBAC
When daemon auth is enabled, the API and WebSocket endpoints are protected by the configured auth middleware and RBAC rules.