Vercel has released eve, an open-source framework for building, running, and scaling agents. The project is published as the npm package eve, licensed under Apache-2.0.
It is essential to know what an agent will do before you start building it. The plumbing an agent requires to be run should not be assembled.
Vercel runs and builds its agents using eve. Vercel has more than 100 production agents, according to a Vercel Post.
What is Eve?
The eve framework is designed to be a durable, filesystem-first backend agent. A directory is created on your disk. The contract is in the directory.
Each file is a description of a part of the agent. The tree will show you what the agent does and is. The tree also shows the agent’s location and whether it is acting on its own.
It is only two files that can run the smallest agent. Two files are required to run the smallest agent. One sets the model.
// agent/agent.ts
import { defineAgent } from "eve";
export default defineAgent({
model: "anthropic/claude-opus-4.8",
});
The model is one line, and provider fallbacks are supported through AI Gateway. The instructions.md file becomes the system prompt that eve puts in front of every model call.
An agent is a directory
Vercel’s core idea is that agents have a shape. Each team rebuilt the same structure in order to satisfy the same requirements. eve turns this shape into a frame.
Here is the contract: Path Role Format agent.ts The model it runs on, plus runtime config TypeScript instructions.md Who it is; prefixed to every model call. Markdown tools/ What can be done by the tool. Filename becomes its name. Here is the contract:
| Path | Role | Format |
|---|---|---|
agent.ts |
The model it runs on, plus runtime config | TypeScript |
instructions.md |
Who it is, prepended to every model call | Markdown |
tools/ |
What it can do; filename becomes the tool name | TypeScript |
skills/ |
What it knows; loaded only when the topic comes up | Markdown |
connections/ |
Secure links to MCP servers and OpenAPI APIs | TypeScript |
sandbox/ |
Optional override of the agent’s sandbox; seeds workspace files | Directory |
subagents/ |
Specialist child agents it delegates to | Directory |
channels/ |
Where it lives, like Slack or HTTP | TypeScript |
schedules/ |
When it acts on its own, on a cron | TypeScript |
lib/ |
Shared authored code used across the agent | TypeScript |
You add a tool, skill, channel, or schedule by adding a file. The eve build process wires these in. No boilerplate is required to register the tools.
One TypeScript file with the Zod schema is a tool. The file name and its location in the tree are used to define it.
// agent/tools/run_sql.ts
import { defineTool } from "eve/tools";
import { z } from "zod";
export default defineTool({
description: "Run a read-only SQL query.",
inputSchema: z.object({ sql: z.string() }),
needsApproval: ({ toolInput }) => estimateScanGb(toolInput.sql) > 50,
async execute({ sql }) { /* ... */ },
});
What ships in the box
Vercel describes eve as ‘batteries included.’ Six production capabilities come with the framework:
- Durable execution: Every conversation is a durable workflow, with each step checkpointed. The session is paused, can survive a crash, or be deployed, and then resumed where it left off. It is based on Workflow SDK, an open-source SDK.
- Sandboxed compute: Agent-generated code is treated as untrusted. Each agent has its own sandbox to run shell commands, scripts and read and write files. Backend adapter running locally on Docker or microsandbox.
- Human-in-the-loop approvals: Any action can be set to require approval. It can be set to wait for as long as needed without any computation. Once approved, Eve will continue where it was left.
- Secure connections: A connection is a file pointing at an MCP server or an OpenAPI-compatible API. eve handles authentication and never lets the model see URLs or credentials. Agents are able to connect at launch with Slack. GitHub. Snowflake. Salesforce. Notion.
- Channels: The same agent serves every surface. HTTP API by default is enabled for Slack Teams, Discord Telegram Twilio GitHub Linear. The channel that is currently active can be handed off to the next.
- Tracing and evals: Every run produces a trace using standard OpenTelemetry spans. Export to Braintrust or Honeycomb. They are test suites that you can run locally, or send to CI.
Use cases, with real examples
Vercel published six agents it runs internally on eve:
- d0, the data analyst: Its most-used internal tool, handling more than 30,000 questions a month. The scope of each query depends on who is asking it.
- Lead Agent, the autonomous SDR: It works every new lead and follows up on its own. Vercel claims that it is maintained by just one engineer part-time and costs around $5,000 per year.
- Athena, the sales cockpit: RevOps built it in six weeks without engineers. This tool answers questions about pipelines from Snowflake or Salesforce using plain English.
- Vertex, the support engineer: It handles tickets across the help center, docs, and Slack. Vercel claims to solve 92% of the tickets by itself and escalate the remainder.
- draft0, the content agent: It runs a review pipeline that catches glaring issues before a human editor sees the piece.
- V, the routing agent: Tasks go to V in Slack first. V assigns each task to an agent who can best answer the question.
Interactive Simulation
‘;
term.insertAdjacentHTML(‘beforeend’, html);
term.scrollTop = term.scrollHeight;
var box = term.querySelector(‘.approval’);
box.querySelector(‘.ap-yes’).addEventListener(‘click’, function () {
box.outerHTML = ‘
approval granted’ + ck() +
‘Resumed from the exact step it paused on
‘;
var j = 0;
(function adv() {
if (j ‘ + run.declined + ‘

