SysDeck/web/mini-services/fester
Jeremy Anderson d25af0e307 SysDeck 4.1 - Standalone Edition: consolidates the day-to-day work of a Linux operations team in a single webui 2026-09-11 23:03:43 -04:00
..
LICENSE A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
README.md A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
api.ts SysDeck 4.1 - Standalone Edition: consolidates the day-to-day work of a Linux operations team in a single webui 2026-09-11 23:03:43 -04:00
autopsy.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
bun.lock A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
cause.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
clock.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
engine.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
events.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
fester.db SysDeck 4.1 - Standalone Edition: consolidates the day-to-day work of a Linux operations team in a single webui 2026-09-11 23:03:43 -04:00
fester.db-shm SysDeck 4.1 - Standalone Edition: consolidates the day-to-day work of a Linux operations team in a single webui 2026-09-11 23:03:43 -04:00
fester.db-wal SysDeck 4.1 - Standalone Edition: consolidates the day-to-day work of a Linux operations team in a single webui 2026-09-11 23:03:43 -04:00
index.ts SysDeck 4.1 - Standalone Edition: consolidates the day-to-day work of a Linux operations team in a single webui 2026-09-11 23:03:43 -04:00
nodes.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
package.json A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
scheduler.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
seed.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
store.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00
targets.ts A drop-in plugin for an existing Cockpit install — twenty-six domain modules behind one dashboard. 2026-09-10 20:41:25 -04:00

README.md

Fester — distributed DAG build orchestration

Fester is developed upstream as an independent repository. This copy is the vendored snapshot pre-integrated into the SysDeck master tarball — SysDeck ships with Fester wired in, no separate checkout required.

  • Version: 0.2.1 (versioned independently from SysDeck 0.2.0)
  • Runtime: Bun — bun install && bun run dev (hot reload)
  • Transport: REST + raw WebSocket on port 3010
  • Storage: SQLite timeline (fester.db, created and seeded on first boot)

Architecture

File Role
engine.ts PipelineEngine — DAG execution in topological waves, retries, CAS cache, BTC stamps, pause/step debugger
scheduler.ts Weighted node scoring (cpu / temp / policy / instability)
nodes.ts NodeStateRegistry + synthetic drift + the real local node
events.ts EventBus + FesterEvent schema
store.ts SQLite storage: builds / sessions / events / node states
autopsy.ts Failure autopsy + propagation analysis
cause.ts Causal graph builder
api.ts REST surface (mirrors the upstream route table)
clock.ts Engine tick loop
targets.ts Project/target catalog
seed.ts First-boot synthetic history (powers the replay views)

REST surface (abbreviated)

  • GET /api/health — service status
  • GET /api/builds, GET /api/builds/{id} — build list / detail
  • POST /api/build — start a build {project, targets[], noCache?, retries?}
  • POST /api/builds/{id}/cancel
  • GET /api/targets · /api/nodes · /api/metrics · /api/policy
  • GET /api/timeline[/{id}] · POST/GET /api/sessions
  • GET /api/autopsy/{build}/{action} · /api/cause/{build} · /api/debugger/{build}

WebSocket: connect to ws://host:3010/ (or through a gateway at /?XTransformPort=3010). Full broadcast by default; {"type":"subscribe","buildId":…} for a single-build stream; {"type":"debugger","buildId":…,"command":"pause|resume|step"} for the interactive debugger.

Integration points

  • SysDeck Web Edition — server-side proxy src/app/api/fester/route.ts plus the Fester sub-app (src/components/sysdeck/panels/festerPanel.tsx).
  • SysDeck Cockpit Edition — bridge helper bridge/fester.py talks to this service over REST (see the cockpit tree in the master tarball).