# For workflow authors

> Source: https://openwop.dev/for/workflow-authors/ · OpenWOP, the open-source protocol for multi-agent workflow orchestration.

You're building a product that runs multi-agent workflows. You want the durable, replayable, resumable parts handled by something other than your application code, and you don't want to be locked to one runtime. This page is the shortest path from here to a running workflow on an OpenWOP-compatible host.

## What you actually need to know

OpenWOP gives you a wire contract — REST endpoints to start runs, SSE streams to consume events, signed webhooks for durable delivery, and a typed run lifecycle that survives restarts. You write workflows declaratively (nodes + edges + typed channels + reducers) and submit them to any conformance-tested host. The host owns the runtime; your code owns the workflow shape.

You don't need to know how the host stores its event log, how it routes provider calls, or how it implements suspend/resume. Those are host concerns gated behind capability flags you can read from `GET /.well-known/openwop`.

## Read these three spec docs first

- [Run options &amp; lifecycle](https://openwop.dev/spec/v2/core/runs.html) — what a run actually is, the per-run policy inputs, and the state machine.
- [REST endpoints](https://openwop.dev/spec/v2/core/runs.html) — the canonical endpoint catalog (create, get, stream, interrupt, fork, etc.).
- [Stream modes](https://openwop.dev/spec/v2/core/events.html) — `values` / `updates` / `messages` / `debug` and how to pick the right one for your UI.

That's the minimum surface to author and submit a non-trivial workflow.

## Reach for these when you hit them

- [Interrupts](https://openwop.dev/spec/v2/core/interrupt.html) — when your workflow needs to pause for a human (clarification, approval, quorum, external event).
- [Webhooks](https://openwop.dev/spec/v2/core/webhooks.html) — when you need durable, signed delivery of run events to your backend.
- [Replay](https://openwop.dev/spec/v2/core/replay.html) — when you need to fork a run from a historical checkpoint (debugging, "what if" exploration, retroactive policy change).
- [Agent memory](https://openwop.dev/spec/v2/core/capabilities.html#memory) — when your supervisor agent needs to carry context across runs without leaking secrets or crossing tenant boundaries.

## Get to a running workflow

The fastest path: start the [v2 reference host](https://github.com/openwop/openwop-examples/tree/main/examples/hosts/v2-reference) (Node, about two minutes), create a run over HTTP, and watch its events stream back over SSE. The [ten-minute quickstart](https://openwop.dev/quickstart-10min/) walks the whole thing. The [quickstart](https://openwop.dev/quickstart/) then covers approvals, forks and webhooks.

## What you'll write yourself

- The workflow definition (graph + channels + reducers + nodes — declarative).
- The node implementations OR a manifest pointing at pre-published [node packs](https://openwop.dev/spec/v2/core/packs.html).
- Your client code — a thin wrapper over the REST endpoints; the TypeScript ([`@openwop/openwop`](https://www.npmjs.com/package/@openwop/openwop)), Python ([`openwop-client`](https://pypi.org/project/openwop-client/)) and Go SDKs in [`openwop/openwop-sdks`](https://github.com/openwop/openwop-sdks) cover the canonical methods.

## What you don't write

- A durable event log.
- A suspend/resume mechanism.
- A replay engine.
- An interrupt state machine.
- Provider routing and BYOK secret resolution.
- HMAC-signed webhook delivery.

Those are host responsibilities, defined normatively in the spec corpus and verified by the conformance suite.

## Next steps

| Action | Where |
|---|---|
| Run the quickstart | [OpenWOP in 10 minutes](https://openwop.dev/quickstart-10min/) |
| Try the live host | [app.openwop.dev](https://app.openwop.dev/) |
| Read the run lifecycle spec | [/spec/v2/core/runs.html](https://openwop.dev/spec/v2/core/runs.html) |
| Compare host implementations | [/conformance/](https://openwop.dev/conformance/) |
| Ask a question | [GitHub Issues](https://github.com/openwop/openwop/issues) |
