Orchestrating
ducksagents magically.
deepducks builds and maintains open-source primitives for deterministic, orchestrated multi-agent systems. Three lines of work:
- duckflux, a declarative YAML workflow DSL and runtime.
- A Scion fork with duckflux baked in as a first-class Hub entity (upstreamed via PR).
- OpenThreads, a unified ingress/egress layer for messaging platforms with native human-in-the-loop support.
A minimal, deterministic, runtime-agnostic workflow DSL. You describe what should happen and in what order; the runtime handles execution. No SDK, no boilerplate, no vendor lock-in.
Five participant types (exec, http, mcp, workflow, emit), a CEL expression layer for flow control, and a self-contained runner (quack) that ships as a standalone Bun-compiled binary.
Official links
- Website: duckflux.dev
- Docs: docs.duckflux.openvibes.tech
- Live editor: editor.duckflux.openvibes.tech
- Spec (v0.7): github.com/deepducks/spec (SPEC.md)
- Runtime (TS/Bun): github.com/deepducks/runtime-js
- npm:
@duckflux/core,@duckflux/runner,duckflux
Install quack
# macOS / Linux via Homebrew
brew install deepducks/tap/quack
# Debian / Ubuntu
curl -fsSL https://deepducks.github.io/apt-repo/install.sh | bash
# npm / npx
npx duckflux run workflow.duck.yamlScion runs long-lived interactive agents beautifully. What it lacked was a complementary primitive for deterministic, terminating flows. Our fork adds exactly that, and we proposed it upstream.
Fork: github.com/deepducks/scion Upstream PR: GoogleCloudPlatform/scion#176
WorkflowRun, a new Hub entity peer to Agent. YAML in, JSON out, container-executed under the same sandbox, auth, and telemetry as agents, but with a different lifecycle: ephemeral, auto-reaped, no PTY, no attach.
Highlights:
- New CLI surface:
scion workflow run | validate | list | get | logs | cancel. Works local (subprocess toquack) and--via-hub(ephemeral container from the default agent image). - Integrates with
scion schedule: cron-fired workflow runs. - Agents can invoke workflows from inside their own container via their JWT, opt-in per grove.
- Zero re-implementation: duckflux owns execution semantics, Scion owns orchestration, state, sandbox, and auth. Subprocess stdio is the whole contract.
- Additive: no breaking changes to existing agent, schedule, or grove surfaces. One forward-only schema migration.
- Tested: 39 integration scenarios across 5 bash suites, ~110 new unit tests.
The PR is backed by a position paper: LLMs Are Unreliable Routers. Orchestration Is Not an Inference Problem (Gondim, 2026). TL;DR: delegating orchestration decisions to LLM inference is fundamentally unreliable for production systems. Deterministic state machines, DAGs, and typed contracts exist precisely for this class of problem. Scion already had the Hub, the broker, the auth model. duckflux completes the picture by landing deterministic workflows as a peer primitive.
A web server that abstracts messaging platforms (Slack, Discord, Telegram, WhatsApp, and others) into a unified ingress/egress interface with native human-in-the-loop support. One adapter surface for bots, agents, and tooling to reach humans across channels without re-learning each vendor SDK.
Repo: github.com/deepducks/OpenThreads
The repo also doubles as a reference for an agentic development workflow (three Claude Code GitHub Actions that autonomously implement issues from a meta-issue plan, with a loop that closes via workflow_dispatch). Generic enough to reuse on other projects.
All projects MIT unless noted otherwise in the repo.