VoltAgent
TL;DR
VoltAgent is an MIT-licensed TypeScript agent framework maintained by the VoltAgent team, with supervisor and sub-agent teams, a chained workflow engine, pluggable memory and MCP support. Its separate VoltOps Console sells tracing, evals and deployment on free and paid plans. It suits TypeScript developers who want agents served from their own HTTP server.
Key facts
| Type | Framework |
|---|---|
| Languages / SDKs | TypeScript |
| License | MIT |
| Pricing model | Open core |
| Orchestration pattern | Supervisor |
| GitHub stars | 10,705 (as of 2026-10-01) |
| GitHub forks | 1,151 |
| Last push | 2026-09-28 |
| Latest release | @voltagent/core@2.11.0 |
| Repository | VoltAgent/voltagent |
| Website | voltagent.dev |
| Documentation | voltagent.dev |
| Last verified | 2026-09-30 |
Key features
Agentclass with instructions, tools, memory and a model given either as a provider object or aprovider/modelstring, called throughgenerateText()/streamText(). (source)- Supervisor agents: listing
subAgentsadds adelegate_tasktool that can target one or several sub-agents in one call;onHandoffCompletecanbail()to return a sub-agent's answer directly. (source) createWorkflowChain()workflows with steps such asandThen,andAgent,andAll,andRace,andWhenandandForEach. (source)- Workflow
suspend()/ resume with typed resume schemas, restart from the last persisted checkpoint, and replay from a chosen step. (source) Memorywith storage adapters (in-memory, LibSQL, Postgres, Supabase, Cloudflare D1 or VoltOps-hosted), plus optional semantic search and working memory. (source)- Per-tool
needsApproval(boolean or function) that stops execution until a user approves or denies the call. (source) - MCP client (
MCPConfiguration) over stdio, streamable HTTP or SSE, and@voltagent/mcp-serverto expose agents, tools and prompts. (source) @voltagent/a2a-serverpublishes agents as A2A endpoints with an agent card and JSON-RPC methods. (source)
Architecture and orchestration pattern
Pattern: Supervisor
A VoltAgent application registers agents and workflows on a VoltAgent instance, which serves them over HTTP through a server adapter such as @voltagent/server-hono. Agents run on the Vercel AI SDK; @voltagent/core 2.x declares ai 6.x as a peer dependency. Each agent is a model plus instructions, tools and optional memory.
Multi-agent coordination uses a supervisor. When an agent has subAgents, the framework adds a delegate_task tool and lists the sub-agents in the supervisor's system prompt. The supervisor's model picks the targets, the sub-agents run the task with their own tools, and results come back as an array for the supervisor to combine. Sub-agents can be supervisors themselves. Delegated messages are tagged so the supervisor's memory reads can leave them out.
Workflows are a separate, explicit path: a typed chain of steps that can call agents, branch, run in parallel or race, and pause with suspend(). Execution state is stored through a Memory adapter, which is what allows restart and replay. Conversation memory is keyed by user and conversation ID and defaults to an in-memory adapter unless LibSQL, Postgres or another adapter is configured.
Human in the loop
A tool created with needsApproval: true, or with a function that decides per call, is not executed when the model calls it. The agent returns a tool part in the approval-requested state; the application shows it to a user and sends back an approval or denial, for example through the AI SDK useChat helper. Approved tools run on the next step, and a denial is passed to the model. Workspace tool policies can switch approval on for file writes and deletes.
In workflows, a step calls suspend() with a reason and optional data, then reads resumeData (validated by a resumeSchema) when the run is resumed. Runs can also be suspended from outside through a suspend controller, cancelled from the stream handle, or restarted from their last checkpoint. In supervisor setups, the onHandoffComplete hook sees each sub-agent result before the supervisor does.
Protocols
| Protocol | Support | Note |
|---|---|---|
| MCP | Yes evidence | Client: MCPConfiguration connects agents to MCP servers over stdio, streamable HTTP or SSE; a separate @voltagent/mcp-server package exposes a VoltAgent project as an MCP server. |
| A2A | Yes evidence | Server side only: @voltagent/a2a-server serves an agent card at /.well-known/{serverId}/agent-card.json and handles message/send, message/stream, tasks/get and tasks/cancel; no A2A client for calling remote agents is documented. |
| AG-UI | Yes evidence | First-party @voltagent/ag-ui package registers VoltAgent agents as an AG-UI endpoint for CopilotKit React components. |
Best for
- TypeScript services that expose agents and workflows over their own HTTP server (shortlist)
- Keeping conversation memory in your own LibSQL or Postgres database (shortlist)
- Supervisor setups that fan a task out to several specialist sub-agents at once
- Workflows that wait for a manager's decision and resume with typed input
Not for
- Python or JVM codebases; the framework is TypeScript only
- Agents that need to call remote A2A agents, since only the A2A server side is documented
- Projects that cannot move to AI SDK v6 packages, which VoltAgent 2.x expects
Quickstart
npm create voltagent-app@latest import { Agent, VoltAgent, createTool } from "@voltagent/core";
import { honoServer } from "@voltagent/server-hono";
import { z } from "zod";
const refund = createTool({
name: "issueRefund",
description: "Refund an order",
parameters: z.object({ orderId: z.string() }),
needsApproval: true,
execute: async ({ orderId }) => ({ ok: true, orderId }),
});
const billing = new Agent({ name: "billing", purpose: "Handles refunds and invoices",
instructions: "Resolve billing requests.", model: "openai/gpt-4o-mini", tools: [refund] });
const triage = new Agent({ name: "triage", instructions: "Route requests to specialists.",
model: "openai/gpt-4o-mini", subAgents: [billing] });
new VoltAgent({ agents: { triage, billing }, server: honoServer() });
Common pitfalls
- The quick start asks for Node.js 20.19 or newer so the generated tsdown build resolves ESM correctly.
- A provider key such as
OPENAI_API_KEYmust be in.envif it was skipped duringcreate-voltagent-app. - 2.x aligns with AI SDK v6: upgrade
aito ^6 and@ai-sdk/*providers to ^3 alongside@voltagent/*;generateObject/streamObjectare deprecated in favour ofgenerateText/streamTextwith structured output. - Memory defaults to an in-memory adapter, and
A2AServerkeeps tasks in memory unless you supply a task store. - The dev server listens on port 3141 by default.
Pros
- One
delegate_taskcall can send the same task to several sub-agents, and results come back as a list. (source) onHandoffCompletewithbail()can end a supervisor turn with a sub-agent's output, skipping a second supervisor pass. (source)- Workflows can be restarted from the latest persisted checkpoint after a crash, and replayed from a specific step. (source)
- AG-UI support ships as a first-party package, so CopilotKit frontends connect without a community bridge. (source)
- The repository is MIT-licensed as a whole. (source)
Cons
- The docs label the Workflows API as preview and warn that breaking changes may follow. (source)
- A2A support is server-side only, and
A2AServerkeeps task state in memory unless you implement a task store. (source) - Upgrading to 2.x means moving AI SDK packages to v6 and replacing
generateObject/streamObjectcalls. (source) - Tracing, evals and deployment live in the separate VoltOps Console; its free Developer plan is limited to 250 traces a month, with paid plans above that. (source)
Alternatives
FAQ
Does VoltAgent support MCP?
Yes. MCPConfiguration connects agents to MCP servers over stdio, streamable HTTP or SSE, and @voltagent/mcp-server exposes a VoltAgent project to MCP clients.
Is VoltAgent free?
The framework is MIT-licensed. The VoltOps Console for observability, evals and deployment has a free Developer plan, paid plans and an Enterprise option with self-hosted deployment.
What language is VoltAgent?
TypeScript. The quick start asks for Node.js 20.19 or newer, and version 2.x expects AI SDK v6 packages.
Does VoltAgent support A2A and AG-UI?
It can serve agents over A2A through @voltagent/a2a-server; no A2A client is documented. For AG-UI, the @voltagent/ag-ui package connects agents to CopilotKit.
How do VoltAgent agents work together?
A supervisor agent lists subAgents and receives a delegate_task tool. Its model decides which sub-agents get a task and then combines their results.
Sources
- VoltAgent GitHub repository
- VoltAgent README
- VoltAgent LICENCE (MIT)
- VoltAgent releases
- @voltagent/core package.json
- VoltAgent docs
- Agents overview (docs)
- Sub-agents (docs)
- Tools and needsApproval (docs)
- Workflows overview (docs)
- Workflow suspend, resume and cancellation (docs)
- Memory overview (docs)
- MCP client (docs)
- MCP server (docs)
- A2A server (docs)
- CopilotKit / AG-UI integration (docs)
- Quick start (docs)
- Migration guide 1.x to 2.x (docs)
- Workspace security and tool policies (docs)
- VoltOps pricing
- VoltAgent homepage