Extend It
Write Go, TypeScript, or Python against the engine — workflow SDKs, custom strategies, connector providers, and receipt verification.
Everything here involves writing code that Ductor calls, or that calls Ductor's primitives directly. Two shapes: define durable workflows in your codebase and let the engine call back into them, or extend the engine itself through its declared extension points.
Workflow SDKs
Define durable, replayable workflows in Go, TypeScript, or Python, hosted at a bridge endpoint.
Execution primitives
Step, Sleep, WaitForEvent, WaitForSignal, Invoke — and how memoised replay works.
Extension points
How strategies, enrichers, middleware, connectors, and listeners plug in without forking.
Engine extensions
The eight extension types, how to ship them, and the spec.yaml that declares compatibility.
Writing a specific extension
Building an action provider
ProviderSpec, RegisterFromSpec, an action's Execute function, and its schemas.
Writing a certified strategy
Implement the Strategy interface, register it, add tunable params, declare a contract.
Verify a receipt
Prove what happened and what it cost — offline, against published keys, without calling Ductor.
Bridge protocol
The signed HTTP protocol between Ductor and your SDK — opcodes, HMAC signing, endpoints.
Before you write anything
Read Understand it first — particularly the durability model. Extensions that fight the single-writer coordinator are the most common way to introduce a correctness bug that only appears under load.