# Extend It (/docs/tracks/code)



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.

<Cards>
  <Card title="Workflow SDKs" href="/docs/sdks">
    Define durable, replayable workflows in Go, TypeScript, or Python, hosted at a bridge endpoint.
  </Card>

  <Card title="Execution primitives" href="/docs/sdks/workflow-primitives">
    Step, Sleep, WaitForEvent, WaitForSignal, Invoke — and how memoised replay works.
  </Card>

  <Card title="Extension points" href="/docs/architecture/extension-points">
    How strategies, enrichers, middleware, connectors, and listeners plug in without forking.
  </Card>

  <Card title="Engine extensions" href="/docs/sdks/extensions">
    The eight extension types, how to ship them, and the spec.yaml that declares compatibility.
  </Card>
</Cards>

## Writing a specific extension [#writing-a-specific-extension]

<Cards>
  <Card title="Building an action provider" href="/docs/connectors/building-a-provider">
    ProviderSpec, RegisterFromSpec, an action's Execute function, and its schemas.
  </Card>

  <Card title="Writing a certified strategy" href="/docs/strategies/writing-a-custom-strategy">
    Implement the Strategy interface, register it, add tunable params, declare a contract.
  </Card>

  <Card title="Verify a receipt" href="/docs/guides/verify-a-receipt">
    Prove what happened and what it cost — offline, against published keys, without calling Ductor.
  </Card>

  <Card title="Bridge protocol" href="/docs/sdks/bridge-protocol">
    The signed HTTP protocol between Ductor and your SDK — opcodes, HMAC signing, endpoints.
  </Card>
</Cards>

## Before you write anything [#before-you-write-anything]

Read [Understand it](/docs/tracks/explainer) 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.
