druks

druk /drʊk/ the thunder dragon

Autonomous code delivery, from ticket to pull request.

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.

Agent work does not fit inside a request.

Processes restart, deploys happen, and people take time. Druks records every completed operation, so recovery resumes from the last checkpoint instead of starting over.

One durable run Postgres-backed checkpoints
first process
load context recorded
gate reply recorded
agent call interrupted
publish not reached
process restarts
recovery
reuse result same value
reuse reply same answer
retry call operation boundary
continue next operation

Checkpointed

Completed durable operations are reused. An interrupted operation may run again.

On your time

Typed gates park the workflow and resume the same durable run after a validated answer.

Isolated

Durable state lives outside the ephemeral host that runs each agent process.

Included with Druks

Meet Build.

The Build extension turns tickets into pull requests: durable stages and isolated agents in one run from intake to merge.

build / durable run
runtime agent work human gate
control plane agent execution
tracker ticket work item received recorded
druks scope structured brief checkpoint saved
planning agent plan typed execution plan human approval
coding agent implement repository changes isolated sandbox
review agent review adversarial pass review gate
GitHub pull request reviewable change human merge
ticket Work item picked up from the tracker durable run / started

Six systems, one durable run.

Druks supplies the runtime that keeps every run durable, reactive, observable, and operable — Build runs on all six.

Durable workflows

Checkpointed operations survive restarts. Queues, schedules, cancellation, and typed gates handle work that outlives a request.

Isolated agent runtime

Dispatch Claude or Codex through harnesses into Drukbox sandboxes, with validated outputs and recorded transcripts.

Built-in webhooks and signals

Authenticate and normalize provider deliveries, deduplicate keyed retries, then publish at-least-once signals to extension subscribers.

Notifications and gates

Park a durable run, notify its people, validate the reply, and resume exactly where the run was parked.

Events and read models

Compose run status, timelines, artifacts, current gates, and extension summaries into point-in-time reads and SSE.

Settings and diagnostics

Declare typed settings, inspect runs in the operator dashboard, manage schedules and harness controls, and run extension-specific doctor checks.

Build is the first Druks extension. Write yours.

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
druks-night-watch installed package
# 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."
distribution installed extension registered
01

Create an extension

uv run druks create extension night_watch
02

Install to register

Entry-point discovery loads the package when Druks boots.

03

Boot with everything wired

API routes, prefixed tables, typed settings, and dashboard pages arrive namespaced to your extension — no glue code.

Get started.

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)