AI AGENT ENGINEERING PLATFORM

Build, run, and observe production AI agents — without the framework tax.

An open-source, TypeScript-native framework for building durable AI agents. Composable tools, typed memory, full observability — all in one SDK.

$ npx create-voltagent-app@latest my-agent
support-triage · gpt-4o · v0.18 LIVE
U
Customer says order #4821 hasn't arrived. Can you check and refund if it's lost?
Looking up order #4821 — last scan was 6 days ago in transit. I'll mark it lost and issue a refund.
toolsearch_kb("order=4821") · 142ms ✓ 200
toolcreate_ticket(type="refund", amount=42.90) · 89ms ✓ 200
17k+ ★ on GitHub 240+ integrations 1.2M weekly downloads Apache 2.0
EVERYTHING YOU NEED

The agent runtime, made boring.

Voltagent gives you typed primitives for the four hard parts of agent engineering — tools, memory, control-flow, and observability — without locking you into a vendor.

Typed tools.

Define tool schemas in TypeScript. Zod-validated inputs, typed outputs, automatic retry semantics.

core@voltagent/core

Durable memory.

Long-term store with vector + SQL semantics. Sessions, threads, and replayable state — no Redis to babysit.

@voltagent/memory

Observable by default.

Every tool call, prompt, and decision lands in a trace tree. Diff agent versions across runs.

@voltagent/trace

Composable control-flow.

Sequential, parallel, and loop primitives. Branch on tool output without writing custom orchestration.

graph()

Model-agnostic.

OpenAI, Anthropic, Google, local Ollama — swap providers in one line. Token accounting included.

@voltagent/ai

Production safe.

Rate limits, cost budgets, prompt-injection guards, audit logging — every concern your security team will ask.

@voltagent/guard
FIVE-LINE AGENT

Define an agent. Hand it tools. Run it.

No decorators. No magic. The agent is a plain TypeScript value — composable, testable, deployable.

  • Define tools with Zod schemas — validated at runtime.
  • Pick any model: OpenAI, Anthropic, local Ollama.
  • Trace every step automatically — no instrumentation.
Read the quickstart →
agent.ts
import { defineAgent, tool } from "@voltagent/core";
import { z } from "zod";

const searchKb = tool({
  name: "search_kb",
  input: z.object({ query: z.string() }),
  run: async ({ query }) => kb.search(query),
});

export const support = defineAgent({
  model: "gpt-4o",
  tools: [searchKb],
  system: "You triage customer support tickets.",
});

// run it
const trace = await support.run("order #4821 lost");
console.log(trace.steps);
PRICING

Open-source forever. Cloud when you need it.

OSS

Free · Apache 2.0

Self-host every primitive on your own infra. Forever, no asterisks.

  • Full SDK
  • CLI + local tracer
  • Community support
Star on GitHub →

Enterprise

Custom · annual

BYOC, SOC 2, dedicated capacity, and on-call agent engineers.

  • VPC deployment
  • SSO + audit log retention
  • SOC 2 Type II
  • Designated engineer
Talk to sales →
DESIGN SYSTEM REFERENCE

Tokens, by Voltagent.

Near-black canvas, one electric-green accent, hairline-bordered cards, Inter + SF Mono. The brand reads as documentation that decided to also sell something.

READ THE FULL DESIGN.MD →

Color

grouped & named

Brand

primary#00d992
primary-soft#2fd6a1
primary-deep#10b981

Surface

canvas#101010
canvas-soft#1a1a1a
hairline#3d3a39
hairline-soft#b8b3b0

Text

ink-strong#ffffff
ink#f2f2f2
body#bdbdbd
mute#8b949e

Type

inter + sf-mono
display-xl60 / -0.65 AI agent runtime.
display-lg36 / -0.9 Section headline.
display-md24 / -0.6 Card title display.
eyebrow-mono14 / 2.52 UPPERCASE EYEBROW
body-lg18 / 0 Lead paragraph at 1.625 line-height — long-form developer prose.
body-md16 / 0 Default body type — Inter weight 400.
code13 / 0 await agent.run("ship it")
caption12 / 0 Fine print at 12px / weight 400.

Radius

6px buttons · 8px cards
none · 0
xs · 4
sm · 6
md · 8
pill

Components

working matrix
PILLS & CHIPS
LIVE beta @voltagent/core npx voltagent
TEXT INPUT
FEATURE CARD

Card chrome · 8px radius.

1px hairline border on the dark canvas. No shadow.

CODE MOCKUP
hello.ts
const agent = defineAgent({ model: "gpt-4o" });
const trace = await agent.run("hello, voltage");
View DESIGN.md