cd /news/ai-agents/show-hn-a2flow-a-workflow-engine-bui… · home › topics › ai-agents › article
[ARTICLE · art-162514] src=kaitoy.github.io ↗ pub= topic=ai-agents verified=true sentiment=· neutral

Show HN: A2Flow – A workflow engine built around "Agent as Workflow"

A2Flow, a chat-driven workflow engine built on the "Agent as Workflow" model, was posted to Show HN, turning ITSM-style procedures into agent-planned task graphs that pause for designated human approvers before any state-changing tool call executes. The engine reads Agent Skills stored as SKILL.md files in Git repositories, registers the resulting DAG in a single call with cycle detection, and enforces two gates: nothing runs until a human publishes the design, and no mutating tool call proceeds until the designated approver responds — anyone else receives a 403. A2Flow binds only the MCP tools each task needs at plan time, runs every MCP server it starts in its own bubblewrap sandbox, defaults to Gemini with OpenAI and Anthropic models available via LiteLLM, and streams AG-UI events from a FastAPI backend into a chat UI that renders A2UI forms and approval controls inline.

read4 min views1 publishedNov 2, 2026

A2Flow is a chat-driven workflow engine. It rebuilds ITSM-style workflows — service requests, change execution, announcements — around an AI agent: it plans the work as a task graph, s for the humans who must sign off, and executes the rest. The plan is kept as a workflow, so the next run follows the same steps.

Classic workflow engines are repeatable but rigid: fixed forms, ticket queues, handoffs between people, and mostly waiting. A chat with an AI agent is the opposite: flexible, but the plan it made is gone when the session ends, and nobody signed off on it. A2Flow keeps the procedure and the approvals from the first, the conversation from the second, and hands everything in between to the agent.

Process as software: repeatable, but rigid — fixed forms, fixed states, humans as glue.

Process as improvisation: flexible, but never the same twice.

An SOP you run together with the AI: as flexible as a chat, as repeatable as a procedure.

SKILL.md file in a Git repository Every run passes the same two gates: nothing runs until a human has published the design, and no tool call that changes something goes through until the designated approver has said yes.

In a design session it reads the Agent Skill, breaks your prompt into task templates with explicit dependencies, and registers the whole DAG in one call — cycle detection included. Adjust it by chat or by hand; nothing runs yet.

Publishing the workflow is the approval of the plan — a run starts from it with nothing to confirm. Tool calls that change something gate on a designated approver: Approve / Reject / Return controls render right in the chat, listing exactly the calls they authorize, and only that person can resolve them — anyone else gets a 403.

Press Run and the agent starts at once in the run's own workflow session. Tasks move pending → in_progress → completed in dependency order, calling only the MCP tools bound to the current task, and the agent asks its questions through forms drawn right into the chat.

A workflow session is a shared chat. The applicant, the approver, and the agent all post into the same thread — no side channels, no “any update on my ticket?”

Runs a published workflow. Answers the agent's questions — in the forms it draws into the chat — and watches the tasks progress in the same thread.

Gets a notification, opens the session, and decides right in the chat — with a comment. Only the designated approver can resolve an approval.

Plans the task graph, requests approvals at the right moments, executes each step per the Skill, and reports progress as it goes.

Approval requests and session completions land in each user's notification bell and deep-link straight into the relevant conversation.

Who approved, what they wrote, and exactly when — persisted on the approval record and browsable in the admin console.

Procedures live as SKILL.md files in Git repositories, cloned on first run. Version them, review them, read them — like any other code.

The task graph the agent drafts from a Skill is published as a workflow — a real DAG, dependencies enforced, cycles rejected — and every run walks the same graph, rendered as a sortable table or an auto-laid-out graph that updates as the agent works.

Before a destructive step, the agent requests approval from a specific user and s. Approve / Reject / Return buttons appear in the chat — for that user only.

Register MCP servers, and the agent binds only the tools each task needs at plan time. At run time, a task can call nothing but its own tools — and every server A2Flow starts runs in its own bubblewrap sandbox.

Through the A2UI protocol the agent renders buttons, forms, and cards inline — and your clicks flow back into the run as tool results.

Gemini by default; OpenAI and Anthropic models via LiteLLM. Swapping providers is one environment variable.

The chat UI streams AG-UI events from a FastAPI backend, and the agent draws A2UI surfaces into the chat. Agent Skills come from Git, tools come from MCP servers, and one relational database holds it all.

The whole stack — PostgreSQL, backend, frontend — comes up with Docker Compose. Bring a Google API key and you're two commands away from your first workflow.

$ git clone https://github.com/kaitoy/a2flow.git && cd a2flow$ echo GOOGLE_API_KEY=your_google_api_key_here > .env$ docker compose up --build# open http://localhost:3000
── more in #ai-agents 4 stories · sorted by recency
── more on @a2flow 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-a2flow-a-wor…] indexed:0 read:4min 2026-11-02 · —