Skip to main content
Decorative dot pattern background
Build · Observe · Automate · Ship
AI Agents
AI Agent Engineering Platform for development, observability, evaluation, and deployment in one place.
Core
Open Source TypeScript Framework

Everything you need to build production-ready AI agents in TypeScript.

MemoryRAGGuardrailsToolsMCPVoiceWorkflowand more...
import { VoltAgent, Agent } from "@voltagent/core";
import { honoServer } from "@voltagent/server-hono";
import { openai } from "@ai-sdk/openai";

const agent = new Agent({
name: "my-voltagent-app",
instructions: "A helpful assistant that answers questions",
model: openai("gpt-4o-mini"),
});

new VoltAgent({
agents: { agent },
server: honoServer(),
});
VoltOps Console
Cloud / Self-Hosted Platform

Enterprise-grade platform to take AI agents from development to production.

Create production-ready AI agents in minutes with type-safe TypeScript APIsDocs
framework preview
import { openai } from "@ai-sdk/openai";
import { Agent, VoltAgent, createTriggers } from "@voltagent/core";
import { createPinoLogger } from "@voltagent/logger";
import { honoServer } from "@voltagent/server-hono";
import { weatherTool } from "./tools/weather";

const logger = createPinoLogger({ name: "with-slack", level: "info" });

const slackAgent = new Agent({
name: "slack-agent",
instructions: "You are a Slack assistant.",
tools: [weatherTool],
model: openai("gpt-4o-mini"),
});

new VoltAgent({
agents: { slackAgent },
server: honoServer(),
logger,
triggers: createTriggers((on) => {
on.slack.messagePosted(async ({ payload, agents }) => {
const event = (payload as SlackMessagePayload | undefined) ?? {};
const channelId = event.channel;
const threadTs = event.thread_ts ?? event.ts;
const text = event.text ?? "";
const userId = event.user ?? "unknown-user";

if (!channelId || !text) {
logger.warn("Missing channel or text in Slack payload");
return;
}

await agents.slackAgent.generateText(
`Slack channel: ${channelId}\n` +
`Thread: ${threadTs ?? "new thread"}\n` +
`User: <@${userId}>\n` +
`Message: ${text}\n` +
`If the user asks for weather, call getWeather.`
);
});
}),
});