Roadmap
🟠 Status: alpha (0.1.x). APIs may shift between minor versions. Don’t run business-critical traffic on it yet — but please run staging and tell us what breaks.
Shipped (0.1.x)
Section titled “Shipped (0.1.x)”- ✅ Connector-shaped DSL. Block↔Tool,
visibility, declared outputs,kind: 'wait'. - ✅ EditOp patch surface. Skip-don’t-reject, structured reasons,
If-Matchoptimistic concurrency. - ✅ Durable runtime. Postgres-backed via vendored
@thodare/openworkflow; replay, retries, signal-driven waits. - ✅ HTTP control plane. Hono app, workflows / runs / schedules / webhooks, run introspection.
- ✅ Auth. better-auth + organizations + apiKey, fail-closed,
per-
(org, principal)rate limit. - ✅ CLI.
thodare login / token / env / whoami / logout / key. - ✅ Auto-org on signup. No more
no_active_organization401 on the first request. - ✅ Persistent schedule claim.
SELECT … FOR UPDATErow lock for multi-process tickers. - ✅ First-run admin bootstrap.
THODARE_BOOTSTRAP=1+ signed one-time link. - ✅ Vendored openworkflow.
@thodare/openworkflowfor version pinning + patch capability. - ✅ Workspace strict-tsconfig. All packages compile under
@tsconfig/strictest + @tsconfig/node22.
Next up (0.2.x targets)
Section titled “Next up (0.2.x targets)”- 🚧
thodare workflowcommands.list / get / run / logsso the CLI is a real client, not just a key issuer. - 🚧 Production scheduler. A separate process that ticks on a real interval. Cleaner than pg_cron + auth-key-for-tick.
- 🚧 Org deletion hooks. Cascading cleanup of workflows / schedules / keys when an org is deleted (or refusing the delete while non-empty).
- 🚧 Cloudflare Workers backend. Durable Objects → step persistence, no separate worker pod.
- 🚧 Connector marketplace primitives. Publish + consume signed connector packages.
- 🚧 Streaming run logs. SSE / websocket on
/api/runs/:runId/stream.
Considered, deferred
Section titled “Considered, deferred”- ❌ Built-in OTel instrumentation. Hooks-based abstraction
(
withTracing) instead — wire your own. - ❌ A no-code dashboard. Build it on top; we ship the surface a UI builds on.
- ❌ A fire-and-forget queue. Use a queue for that.
- ❌ Code-execution sandboxing. No
code_executeblock in the default catalog. If you ship one, isolate it yourself.
How to influence
Section titled “How to influence”- Open an issue: github.com/asyncdotengineering/thodare/issues
- File a PR: see Contributing
- For private security reports:
security@thodare.dev