{"slug": "show-hn-enju-humans-ai-agents-and-compute-as-peers-on-one-workflow-graph", "title": "Show HN: Enju – humans, AI agents, and compute as peers on one workflow graph", "summary": "Enju is a new workflow system that treats humans, AI agents, and deterministic compute as peers on a single directed acyclic graph (DAG). The system allows any of these \"citizens\" to claim and execute tasks such as answering, reviewing, voting, or computing, with the graph remaining live so tasks can spawn subtasks during a run. Enju ships as a single binary with MCP, CLI, and web UI support, using git commits for attribution and audit trails.", "body_md": "**Enju is a workflow system where humans, AI agents, and deterministic compute work the same DAG as peers.** The unit of work is a **task** — something any of them can `answer`\n\n, `review`\n\n, `vote`\n\non, or `compute`\n\n. The graph is *live*: a task can spawn more tasks while a run is in flight, so a review that returns `request_changes`\n\ndrops a revision task back into the graph with its feedback already attached, and the work cycles until it's approved.\n\nWhat makes this work is where the lines are drawn. Review and voting are ordinary task actions, not out-of-band approvals — human judgement enters the graph as a recorded decision with the same standing as an agent's output. The coordinator is **output-neutral**: it tracks task state and decisions, never the content work produces. Every result is a git commit, so **attribution and audit fall out of git history** with nothing extra to wire up, and a plain git remote is the only thing moving content between machines. Enju ships as a single binary that speaks MCP, a CLI, and a web UI.\n\n*A real Enju workflow — a PRISMA systematic review — where deterministic compute (teal), AI agents (blue), and human review gates (orange) are peers on one graph.Any citizen can claim from this graph in parallel, each on its own model and tokens.*\n\nA workflow is a DAG of tasks, written as YAML and committed to your repo. Here an agent drafts a report and a human gates it — two tasks, two different kinds of citizen, one graph:\n\n```\nname: My First Workflow\n\nagents:\n  - name: writer\n    handler: claude\n    model: claude-sonnet-4-6\n\ntasks:\n  - id: write_report\n    action: answer            # an agent (or a human) produces work\n    assign_to: writer\n    writes: [report.md]\n    prompt: Write a short report on solar-energy adoption to report.md.\n\n  - id: human_review\n    action: review            # a human gate, equal standing in the graph\n    reviews: write_report      # approve · request_changes · reject\n    prompt: Approve if accurate; request_changes sends it back with feedback.\nenju go enju.yaml --auto-agents\n```\n\nThe agent claims `write_report`\n\n, runs its model, and commits `report.md`\n\n; `human_review`\n\nthen waits in your inbox. Every step is a commit on the run's branch. → full walkthrough in the [quickstart](/tamerh/enju/blob/main/docs/getting-started/quickstart.md).\n\nThe **coordinator** holds the task DAG and its lifecycle (`pending → ready → claimed → running → review → done`\n\n, with a revise loop) plus the state and events databases — but no produced content. Each citizen runs a **fat client** on their own machine exposing MCP/CLI/Web UI, forking agent daemons and committing to a local git clone. Multiple citizens work the **same DAG** as peers — and each runs its **own model on its own tokens**, so the compute and API cost is shared across whoever joins the run. **Remote git** holds everything produced and is the only cross-machine transport.\n\nOne primitive, interchangeable executors: a task's `action`\n\nselects whether a human, an LLM agent, or a script runs it — all the same kind of node. Edges carry typed data, `for_each`\n\nfans a task (or a whole run) out into parallel iterations, and a `review`\n\nverdict can approve, fail, or cycle the work back with feedback — every attempt kept as a commit.\n\n```\ncurl -fsSL https://raw.githubusercontent.com/tamerh/enju/main/install.sh | sh\n```\n\nInstalls `enju`\n\nto `~/.local/bin/enju`\n\n(no sudo). Add it to your `PATH`\n\nif it isn't already:\n\n```\necho 'export PATH=\"$HOME/.local/bin:$PATH\"' >> ~/.bashrc   # or ~/.zshrc\n```\n\nVerify with `enju --version`\n\n.\n\n**Other platforms or specific versions:** download a binary from the [releases page](https://github.com/tamerh/enju/releases) and put it on your `PATH`\n\n.\n\nThree reference workflows — clone, install, run:\n\n— build a Mustache template engine from spec. Six Sonnet agents gated by[mustache-engine-enju](https://github.com/tamerh/mustache-engine-enju)`request_changes`\n\nloops; 136/136 conformance tests pass.— PRISMA systematic review of FMT-for-rCDI RCTs. Four Sonnet agents + two human review gates produce a 14-RCT synthesis.[prisma-review-enju](https://github.com/tamerh/prisma-review-enju)— ONT phage-genome assembly. Thirteen containerized compute tasks across two machines, git as transport.[nanopore-assembly-enju](https://github.com/tamerh/nanopore-assembly-enju)\n\nSee [docs/](/tamerh/enju/blob/main/docs) — [getting started](/tamerh/enju/blob/main/docs/getting-started), [guides](/tamerh/enju/blob/main/docs/guides), [reference](/tamerh/enju/blob/main/docs/reference), or [how it works](/tamerh/enju/blob/main/docs/how-it-works.md).\n\nFor the design and motivation, see the preprint: [sugi.bio/enju](https://sugi.bio/enju).\n\nMIT — see [LICENSE](/tamerh/enju/blob/main/LICENSE).", "url": "https://wpnews.pro/news/show-hn-enju-humans-ai-agents-and-compute-as-peers-on-one-workflow-graph", "canonical_source": "https://github.com/tamerh/enju", "published_at": "2026-05-27 13:49:27+00:00", "updated_at": "2026-05-27 14:16:37.314337+00:00", "lang": "en", "topics": ["ai-agents", "machine-learning", "ai-tools", "ai-infrastructure", "ai-research"], "entities": ["Enju", "PRISMA", "MCP"], "alternates": {"html": "https://wpnews.pro/news/show-hn-enju-humans-ai-agents-and-compute-as-peers-on-one-workflow-graph", "markdown": "https://wpnews.pro/news/show-hn-enju-humans-ai-agents-and-compute-as-peers-on-one-workflow-graph.md", "text": "https://wpnews.pro/news/show-hn-enju-humans-ai-agents-and-compute-as-peers-on-one-workflow-graph.txt", "jsonld": "https://wpnews.pro/news/show-hn-enju-humans-ai-agents-and-compute-as-peers-on-one-workflow-graph.jsonld"}}