VoltAgent

Framework · Last verified 2026-09-30 · Install verified 2026-09-30

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

VoltAgent key facts. Data as of 2026-10-01.
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

  • Agent class with instructions, tools, memory and a model given either as a provider object or a provider/model string, called through generateText() / streamText(). (source)
  • Supervisor agents: listing subAgents adds a delegate_task tool that can target one or several sub-agents in one call; onHandoffComplete can bail() to return a sub-agent's answer directly. (source)
  • createWorkflowChain() workflows with steps such as andThen, andAgent, andAll, andRace, andWhen and andForEach. (source)
  • Workflow suspend() / resume with typed resume schemas, restart from the last persisted checkpoint, and replay from a chosen step. (source)
  • Memory with 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-server to expose agents, tools and prompts. (source)
  • @voltagent/a2a-server publishes 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

MCP, A2A and AG-UI support for VoltAgent. See the full matrix.
ProtocolSupportNote
MCP Yes evidence
checked 2026-09-30
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
checked 2026-09-30
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
checked 2026-09-30
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

Install verified 2026-09-30 (temp dir, Node v22.22.3, macOS arm64: local npm i @voltagent/core (no -g) ok, node -e "import('@voltagent/core').then(m=>console.log(typeof m.Agent))" ok, @voltagent/core 2.11.0. This is the core package from the documented manual setup; the interactive npm create voltagent-app@latest scaffolder was not run. Packages came from the registry.npmmirror.com mirror, so the version is the one that mirror served on this date. Install and import check only; not a functional test.). What this means

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_KEY must be in .env if it was skipped during create-voltagent-app.
  • 2.x aligns with AI SDK v6: upgrade ai to ^6 and @ai-sdk/* providers to ^3 alongside @voltagent/*; generateObject / streamObject are deprecated in favour of generateText / streamText with structured output.
  • Memory defaults to an in-memory adapter, and A2AServer keeps tasks in memory unless you supply a task store.
  • The dev server listens on port 3141 by default.

Official quickstart

Pros

  • One delegate_task call can send the same task to several sub-agents, and results come back as a list. (source)
  • onHandoffComplete with bail() 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 A2AServer keeps 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 / streamObject calls. (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

Something wrong or out of date, or do you maintain VoltAgent and want this page removed? Report a correction or request removal.