Checkpointed
Completed durable operations are reused. An interrupted operation may run again.
druk /drʊk/ the thunder dragon
Druks is the self-hosted home for durable agent apps, running on the Claude and Codex subscriptions you already pay for. The Build extension ships out of the box: runs that never lose their place.
Processes restart, deploys happen, and people take time. Druks records every completed operation, so recovery resumes from the last checkpoint instead of starting over.
Completed durable operations are reused. An interrupted operation may run again.
Typed gates park the workflow and resume the same durable run after a validated answer.
Durable state lives outside the ephemeral host that runs each agent process.
Included with Druks
The Build extension turns tickets into pull requests: durable stages and isolated agents in one run from intake to merge.
Druks supplies the runtime that keeps every run durable, reactive, observable, and operable — Build runs on all six.
Checkpointed operations survive restarts. Queues, schedules, cancellation, and typed gates handle work that outlives a request.
Dispatch Claude or Codex through harnesses into Drukbox sandboxes, with validated outputs and recorded transcripts.
Authenticate and normalize provider deliveries, deduplicate keyed retries, then publish at-least-once signals to extension subscribers.
Park a durable run, notify its people, validate the reply, and resume exactly where the run was parked.
Compose run status, timelines, artifacts, current gates, and extension summaries into point-in-time reads and SSE.
Declare typed settings, inspect runs in the operator dashboard, manage schedules and harness controls, and run extension-specific doctor checks.
An extension is an independently packaged Python distribution built on the public author SDK — Druks supplies everything else: execution, recovery, and the operating surface.
Read the extension guide# pyproject.toml
[project.entry-points."druks.extensions"]
night_watch = "druks_night_watch.extension:NightWatch"
# extension.py
from druks.extensions import Extension
class NightWatch(Extension):
name = "night_watch"
icon = "telescope"
description = "Checks repositories after hours." uv run druks create extension night_watch Entry-point discovery loads the package when Druks boots.
API routes, prefixed tables, typed settings, and dashboard pages arrive namespaced to your extension — no glue code.
One command brings up the stack, and Build takes the next ticket from your tracker. When your domain needs an app of its own, the scaffold and the extension guide are waiting.
bash <(curl -fsSL https://raw.githubusercontent.com/czpython/druks/main/scripts/install.sh)