VO

VoltAgent

⭐ 300•TypeScript•Agent Framework

TypeScript AI agent framework with observability-first design: OpenTelemetry tracing, evaluation hooks, and session management built in.

TypeScriptObservabilityOpenTelemetryEvaluationMulti-Provider

Overview

VoltAgent is an open-source TypeScript AI agent framework focused on observability-first development. While most agent frameworks prioritize developer ergonomics, VoltAgent's distinguishing bet is that production agents are fundamentally observability problems — so it ships OpenTelemetry-native tracing, prompt/version tracking, evaluation hooks, and session management as first-class primitives. Every agent step produces a span ready for Jaeger, Grafana, or Datadog. Evaluators score steps with custom rubrics (rule-based or LLM-as-judge). Supports OpenAI, Anthropic, Gemini, Groq, and Ollama.

Features

  • ✓OpenTelemetry-native tracing for every agent step
  • ✓Prompt/version tracking attached to every trace
  • ✓Evaluation hooks with rule-based and LLM-as-judge evaluators
  • ✓First-class session management
  • ✓Tool registry declared once, used everywhere
  • ✓Multi-provider: OpenAI, Anthropic, Gemini, Groq, Ollama
  • ✓TypeScript-first with end-to-end type safety

Installation

npm install @voltagent/core @voltagent/telemetry

Pros

  • +Observability as a first-class primitive
  • +OpenTelemetry-native
  • +Built-in evaluation hooks
  • +Session management
  • +TypeScript-first
  • +Multi-provider

Cons

  • −Young project, small contributor base
  • −TypeScript-only, no Python SDK
  • −Telemetry defaults to local OTLP
  • −No built-in long-term memory
  • −No graph primitives

Alternatives

Documentation

VoltAgent

Overview

VoltAgent is an open-source TypeScript AI agent framework focused on observability-first development. While most agent frameworks prioritize developer ergonomics, VoltAgent's distinguishing bet is that production agents are fundamentally observability problems — so it ships tracing, metrics, evaluation hooks, and session management as first-class primitives rather than bolt-on integrations.

The project gained 32 points on Hacker News and targets teams who have outgrown the "console.log" era of agent development. VoltAgent supports LangChain, OpenAI, Anthropic, and any compatible provider, but the framework's identity is defined by its observability layer.

Features

  • OpenTelemetry-native tracing: every agent step produces a span, ready for Jaeger, Grafana, or Datadog
  • Prompt/version tracking: prompts are versioned, hashed, and attached to every trace
  • Evaluation hooks: score any step with custom evaluators (rule-based or LLM-as-judge)
  • Session management: first-class sessions with automatic conversation history
  • Tool registry: declare tools once, use them in any agent
  • Multi-provider: OpenAI, Anthropic, Google Gemini, Groq, Ollama
  • TypeScript-first: end-to-end type safety from prompt to response

Installation

# npm
npm install @voltagent/core @voltagent/telemetry

# pnpm
pnpm add @voltagent/core @voltagent/telemetry

# yarn
yarn add @voltagent/core @voltagent/telemetry

Quick Start

import { VoltAgent, OpenAIProvider } from "@voltagent/core";

const agent = new VoltAgent({
  name: "research-agent",
  provider: new OpenAIProvider({ model: "gpt-4o" }),
  systemPrompt: "You are a research assistant.",
  tools: [
    {
      name: "search_web",
      description: "Search the web",
      execute: async ({ query }) => webSearch(query)
    }
  ]
});

const response = await agent.invoke("What is MCP?");
console.log(response.content);

Tracing Setup

import { OpenTelemetryTelemetry } from "@voltagent/telemetry";

const telemetry = new OpenTelemetryTelemetry({
  exporter: new OTLPExporter({
    endpoint: "http://localhost:4318/v1/traces"
  }),
  serviceName: "research-service"
});

const agent = new VoltAgent({
  name: "research-agent",
  provider: new OpenAIProvider({ model: "gpt-4o" }),
  telemetry,
});

Each agent invocation produces a trace with:

  • LLM call spans (model, tokens, latency)
  • Tool execution spans (input, output, error)
  • Step spans (prompt, response, tool calls)
  • Resource attributes (agent name, version, session ID)

Evaluation

import { Evaluator } from "@voltagent/core";

const hallucinationEvaluator = new Evaluator({
  name: "hallucination-check",
  type: "llm-judge",
  judgeModel: "gpt-4",
  rubric: "Score 1-5 on factual accuracy. Penalize unsupported claims.",
  threshold: 3
});

const agent = new VoltAgent({
  name: "research-agent",
  provider: new OpenAIProvider({ model: "gpt-4o" }),
  evaluators: [hallucinationEvaluator]
});

Sessions

const session = await agent.createSession({ id: "user-42" });

const response = await session.invoke({
  messages: [
    { role: "user", content: "Who am I?" }
  ]
});
// Response includes session context, trace ID, and token usage

Pros

  • ✅ Observability as a first-class primitive: no separate integration required
  • ✅ OpenTelemetry-native: works with any OTLP backend, not just vendor telemetry
  • ✅ Built-in evaluation hooks: LLM-as-judge and rule-based evaluators out of the box
  • ✅ Session management: conversation history handled for you
  • ✅ TypeScript-first: full type safety from prompt to response
  • ✅ Multi-provider: same agent interface across OpenAI, Anthropic, Gemini, Groq

Cons

  • ❌ Young project: ~300 GitHub stars, small contributor base
  • ❌ TypeScript-only: no Python SDK
  • ❌ Telemetry defaults to local OTLP: production backends (Datadog, New Relic) require manual config
  • ❌ No built-in memory: long-term memory is delegated to external systems (Mem0, Zep, etc.)
  • ❌ No graph primitives: multi-step orchestration is imperative, not declarative

When to Use

Use VoltAgent when:

  • You need production observability from day one (tracing, metrics, evaluation)
  • You're TypeScript-first and want end-to-end type safety
  • Your team is already on OpenTelemetry — VoltAgent plugs in without new infrastructure
  • You need LLM-as-judge evaluation integrated with your runtime

Prefer alternatives when:

  • You need Python — use MCP-Agent or Pydantic AI
  • You need graph-based orchestration — use LangGraph
  • You need enterprise-grade deployment — use LangGraph Platform or Databricks

Resources