Vocion vs. LangGraph
LangGraph vs Vocion for production agents: a dated, sourced table on HITL, registry, versioning, durability, observability, hosting, license.
Last verified
LangGraph is an open-source library for building agent applications as graphs
of nodes with durable state. It is the control-flow layer: you define the
graph, it persists state through a checkpointer, and interrupt() pauses a
run until you resume it with Command(resume=...)
(https://docs.langchain.com/oss/python/langgraph/interrupts). What it
deliberately does not include is the operating layer around a fleet of
agents — a catalog of agent definitions under version control, a review queue
a non-engineer can work through, per-action approval thresholds, or an audit
row linking an output to the configuration that produced it. Vocion is an
open-source agent workforce platform that supplies that operating layer:
agents and workflows authored as YAML in git, applied to Postgres, and run by
a workflow runner with approval gates (docs/entities/workflow.md,
docs/workspace.md in vocion-core).
This page compares the two on the axes an operations read of a LangGraph
prototype actually runs into: human-in-the-loop, registry, versioning,
durability, and hosting. Several rows go to LangGraph, and they stay in — a
comparison a LangGraph engineer would call unfair is worse than no
comparison. Last verified 2026-09-08, against @vocion/core v2.37.0.
When LangGraph is the right answer
Plainly: when you want custom control flow in Python, you already have a LangChain stack, you are iterating on the graph shape daily, or you need the larger ecosystem — more integrations, more Stack Overflow answers, more engineers who already know the API. LangGraph's community and surface area are both larger than Vocion's, and that is not a close call. If the team is one or two engineers running one agent, adding an operating layer on top of that graph is very likely more process than the job needs.
Capability comparison table
| Capability | LangGraph | Vocion |
|---|---|---|
| Control flow | Graph of nodes and edges, defined in code | Named steps in a workflow.yaml manifest, run by WorkflowService.runLoop |
| Human-in-the-loop primitive | interrupt() inside a node, resumed with Command(resume=...) (interrupts docs) | approve / ask step types that pause a run in a review queue (docs/entities/workflow.md) |
| State persistence | A checkpointer (in-memory for dev; "In production, this should be a persistent checkpointer" — interrupts docs) | workflow_run rows in Postgres persist step state (docs/guides/self-hosting.md) |
| Agent registry | Not documented as a first-party concept in the OSS library's graph/state model (graph API docs) as of 2026-09-08 | Agents are an authored entity (agents/<slug>.md) applied to a database table with an owner |
| Config versioning / audit | Not documented for the OSS library; versioning is described for LangGraph Platform assistants, a separate hosted product (platform docs) | Every workspace:apply records a workspace_version row (git SHA, diff, applied_by); every tool_call stamps workspace_sha (docs/workspace.md) |
| Review surface for a non-engineer | None documented in the OSS library; LangGraph Studio is a developer debugging UI, not a reviewer queue | GET /api/v1/reviews, POST /api/v1/reviews/decide — a write API a non-engineer client can be built against (README.md) |
| Per-action approval thresholds | Not a first-party concept; you would gate this yourself inside a node | trust.yaml: autoApproveAbove per action, off by default (docs/entities/trust.md) |
| MCP support | Documented (MCP docs) | MCP over HTTP and local stdio (README.md) |
| Hosting | Self-host the library, or use LangGraph Platform, the vendor's hosted product (deployment options) | Self-hosted only; no first-party hosted offering |
| Ecosystem / integrations | Large — the LangChain integration catalog, tutorials, and community are bigger than Vocion's on every axis | Fifteen first-party connectors (packages/core/src/libs/sources/), no third-party plugin marketplace comparable in size |
| License | MIT (LICENSE) | MPL-2.0 plus a commercial license |
Human-in-the-loop: interrupt() vs a review queue
Both are real, and neither is a workaround for the other. interrupt()
pauses one graph run for one caller, waiting on Command(resume=...) in the
same process or a resumed session — it is a per-run primitive, and the docs
are explicit that production use needs a persistent checkpointer behind it.
Vocion's approve and ask steps pause a workflow run inside a shared
review queue that any authorized caller can list, filter, and act on over
HTTP (GET /api/v1/reviews) — a multi-agent, multi-item work surface rather
than a single paused function call. Neither the LangGraph docs nor Vocion's
own API list a webhook or SSE channel for the queue: a client polls
GET /api/v1/reviews for pending items and calls POST /api/v1/reviews/decide to act on one. If a caller needs to know the instant
an item lands, that caller is polling, on either stack.
Where agent definitions live
In LangGraph, an agent is code: the graph, its nodes, and any prompts live
wherever the Python or JS project puts them, versioned the way the rest of
the codebase is versioned. In Vocion, an agent is a file
(agents/<slug>.md, plus its supporting workflows/ and skills/) in a
workspace repo, applied to the database with workspace:apply, which is what
produces the workspace_version audit row. The practical difference: a
Vocion agent change is reviewable in a PR by someone who does not read
Python, and it is traceable after the fact from a specific output back to the
exact workspace_sha that produced it (docs/workspace.md).
Temporal, on either stack
LangGraph's own durability is the checkpointer described above — state
persists across a resume, but LangGraph does not run on Temporal itself.
Vocion's workflow steps persist to Postgres directly
(docs/guides/self-hosting.md calls this "in-process durable
step runner"); Temporal is part of the Vocion stack for schedules and source
syncs (docs/object-model.md), not (yet) for workflow step durability —
Temporal-backed workflow durability is listed as forthcoming work in the
self-hosting guide.
Keeping LangGraph and adding the operating layer
There is a documented path for bringing your own agent runtime into Vocion —
see bring your own agent runtime.
packages/agent-runtime exposes one HTTP contract (POST /invocations
streaming SSE, GET /ping) that a compiled agent definition can be sent to,
hostable anywhere including AWS Bedrock AgentCore (packages/agent-runtime/ README.md). Whether a LangGraph graph specifically can be dropped behind
that contract with no changes is not documented — treat it as "you would
wire the contract yourself," not as a supported integration today.
Licensing and hosting
LangGraph the library is MIT-licensed; LangGraph Platform is the vendor's
hosted product, with deployment options documented at the link above.
@vocion/core is MPL-2.0 plus a commercial license, is not published to npm,
and is self-hosted — clone the repo and run it (README.md). Neither project
has a hosted free tier documented as of this date; verify pricing directly
before quoting it to a reader.
Which to pick
Pick LangGraph alone if you are one or two engineers, need custom control
flow, want the larger ecosystem, or your only reviewers are engineers who are
fine reading interrupt() state in a debugger. Pick Vocion if the people
approving agent actions are not engineers, if you need an audit trail from an
output back to the configuration that produced it, or if you want the agent
roster itself under version control rather than embedded in application
code. Pick both if you have an existing LangGraph investment and want a
review queue and versioning layered on top of it — that path exists in
principle (packages/agent-runtime) but is not a documented, supported
integration today.
Related
- Workflows — the
approve/askstep types referenced above. - The review queue over HTTP — the full
/api/v1/reviewssurface. - Bring your own agent runtime — the HTTP contract for hosting an existing agent inside Vocion.
Read the Vocion workflow entity reference or clone vocion-core and run a workflow with an approve step to see the review queue firsthand.