Is Vercel eve ready for production agents?

  • Isaac
    Isaac
    AI Systems Engineer

eve is Vercel's open-source, filesystem-first framework for durable AI agents, and it is still in beta. We run 2 agents of our own on it in production and have built more on it for clients. One is the grounded assistant on monogram.io, and the other is Atlas, the agent inside our internal tools app. It fits a TypeScript team that wants sessions, approvals, schedules and evals without building them, provided you can run Node 24 and upgrade deliberately. What follows is what we learned building both.

What is Vercel eve, and how is it different from the AI SDK?

eve is a runtime and a set of conventions for agents; the model calls underneath still use the AI SDK's model layer. eve's own self-hosting guide tells you to install an AI SDK provider package when you call a provider directly. An eve agent is a directory. One file holds the model config, a markdown file holds the instructions, and each tool is its own TypeScript file. eve compiles that directory into an app whose sessions stream output and resume after cold starts, deploys or long pauses.

The monogram.io assistant shows the split. Its agent is a single defineAgent call naming anthropic/claude-haiku-4.5 as the model, with GPT-5 mini and Gemini 2.5 Flash as ordered fallbacks through Vercel AI Gateway. Its retrieval code sits beside it and calls the AI SDK directly, using embed for the query and rerank for the candidates. eve owns the conversation, and the AI SDK owns the individual model calls.

Do you have to deploy eve on Vercel?

No. Vercel's docs say agent files compile into an app that runs locally or on Vercel, and eve's self-hosting guide runs the same agent as a Node service with eve build and eve start. Off Vercel, you choose where workflow state and sandbox sessions live, and run state defaults to a local directory you must mount on persistent storage. The guide also says not to rely on Vercel OIDC as your only production authenticator. On Vercel, the same app picks up Vercel Workflows for session state, Vercel Sandbox for code execution, AI Gateway for model routing and Vercel Connect for third-party credentials.

Both of our agents run on Vercel. The assistant authenticates to AI Gateway with Vercel OIDC rather than a provider API key. Atlas joins Slack through a Vercel Connect connector, which holds the Slack credentials for it.

Can you add eve to an existing Next.js app?

Yes, through withEve, as long as the app can run on Node 24. Atlas is mounted into the Next.js app it serves with withEve, so the agent answers same-origin and the app's chat widget talks to it over the browser's existing sign-in.

The monogram.io assistant took a different route. We kept the agent as its own deployment rather than mounting it in the site with withEve. The assistant ships as 2 Vercel projects in one Turborepo, so the agent deploys on its own schedule.

How do human-in-the-loop approvals work in eve?

A tool declared with approval: always() parks the session until a person answers, then resumes it. Sessions are durable, so a parked session resumes even after a long pause.

Atlas uses this for public replies. When a scan finds a forum thread worth answering, Atlas calls a draft_reply tool carrying that flag. Slack shows a card with the thread title, a short summary, the quoted draft and Atlas's rationale, with approve and deny buttons. Approving records the text and the thread link. It does not post; posting stays a human action.

One constraint shaped the design. Atlas's scans are dispatched from an eve schedule, and a schedule written in markdown has no channel, so a tool that needs approval fails instead of waiting. Scheduled work that may need an approval uses the handler form of defineSchedule, which hands the work to a channel where the session can wait for a person.

How do schedules work when each customer needs their own?

On Vercel, eve turns every defineSchedule into a Vercel Cron Job at build time, which makes a cadence a deploy-time decision. That is the wrong shape for work that belongs to a tenant.

Atlas has exactly one authored schedule. It is a dispatcher that wakes every minute, claims due schedule rows under an atomic lease, and runs each row as its own Atlas session carrying that tenant's identity. Adding, pausing or retiming a schedule is a row, not a deploy. The cost is a cron invocation every minute whether or not anything is due, which we accepted so any row can carry its own cron. eve documents this dispatcher pattern itself, and Vercel also offers an experimental defineDynamicSchedules API behind a feature flag.

How do you test an eve agent?

eve ships an eval runner that can run against a local dev server or a deployed URL. The monogram.io assistant carries 23 eve evals, with 8 for grounding, 2 for scope, 7 for security, 5 for tool use and 1 smoke test. The judge is openai/gpt-5-mini, deliberately a different model family from the Claude model under test, so it grades independently. One security eval hides a fake system override inside the grounding block and checks that the reply ignores it.

How do you lock down an eve agent that faces the public?

eve agents ship with harness tools for shell, filesystem and web access, and a public marketing-site bot needs none of them. We disabled every harness tool that touches the shell, the filesystem or the web, one disableTool() file each, and wrote 4 tools of our own, including one that reads a page of monogram.io on request.

How does eve compare with LangGraph and Mastra?

LangGraph has you author an agent as an explicit graph of nodes, edges and typed state, which suits workflows where every branch has to be visible to an auditor. Mastra is a TypeScript framework that deploys anywhere Node runs, and one third-party comparison calls it the more mature option. eve organizes an agent around sessions, turns and files, and its managed features come from Vercel services, though it can be self-hosted.

Both of our agents live in Next.js projects on Vercel and route every model call through AI Gateway, which is the setup eve's managed path is built for. We have shipped on LangGraph too: the Quicknode Builder's Guide runs a five-node LangGraph workflow on Cloudflare Workers that researches Web3 tools, writes structured profiles with GPT-4o and checks each one before it publishes. That pipeline branches and has steps that are allowed to fail, which is what a graph is for; an agent that holds a conversation and calls tools inside a Vercel app is what eve is for.

When not to use eve

eve is the right tool for us, and it has real edges.

  • It is in beta. Vercel says the APIs may change before general availability, so plan for changes between releases.
  • Node 24 is a hard floor. eve requires Node 24 or later, so check your runtime before you mount it.
  • Failures inside waitUntil can vanish. Under eve dev in September 2026, a rejected promise handed to a schedule's waitUntil was swallowed silently: a tick failed and printed nothing. Our dispatcher catches and logs its own errors.

FAQ

Is eve open source?

Yes. Vercel describes eve as an open-source framework, and the package is published on npm as eve.

Which models can an eve agent use?

eve resolves model strings through AI Gateway, so any model in the Gateway catalog can be named, and off the Gateway you can pass an AI SDK provider model instead. Our assistant runs Claude Haiku 4.5 with GPT-5 mini and Gemini 2.5 Flash behind it on different providers.

Does eve replace the AI SDK?

No. eve uses AI SDK models and provider packages, and our retrieval code calls AI SDK functions directly beside the agent.

Who can help us build on eve?

We design and build production agents for clients. See our agentic AI services, the M8 case study for the assistant, or contact us.

Further reading: eve on Vercel, eve self-hosting guide, eve with Next.js.