vercel/eve: The Filesystem-First Framework That Treats AI Agents Like Real Software

A deep dive into how `eve` uses directories, tools, channels, approvals, schedules, and sandboxes to turn agent behavior into something you can ship and operate.

8 to 10 min read View on GitHub More from vercel

A wooden cabinet labeled as an agent directory opens into drawers for instructions, tools, skills, and schedules. Small mechanical parts inside the drawers suggest typed capabilities, procedural memory, and runtime control. The scene explains the article's core idea: the filesystem is the agent interface.
`eve` turns a directory into the unit of deployment, not just a place to store code.
Key Takeaways

An agent is a directory

The simplest way to understand `eve` is to stop thinking about prompts. In this model, the agent lives in a folder, and the folder is the interface. `instructions.md` is always present, `tools/` defines executable capabilities, and `skills/` adds on-demand procedures the agent can load when the task calls for it.

That is a cleaner mental model than a pile of prompt templates and glue code. The developer edits files, reviews diffs, and reasons about behavior the same way they would in any other codebase.

The filesystem seeds runtime behavior, while identity, approval, and sandboxing shape what the agent is allowed to do.

Why this beats prompt spaghetti

`eve` is interesting because it makes agent behavior legible. If capability lives in a file, then capability can be searched, reviewed, versioned, and deleted. That is a big step up from prompt spaghetti, where the real logic often hides inside long strings and informal conventions.

QuestionPrompt-heavy agent stackeve
Where does behavior live?Scattered across prompts and glue codeIn conventional files and directories
How do you review changes?By reading long prompt diffsBy reading normal code and markdown diffs
How do you extend it?Add more orchestration around the promptAdd a tool, skill, or instruction file
How easy is it to operate?Hard to inspect after the factDesigned to be inspectable and composable

Core agent capabilities live in conventional locations, so projects are easier to inspect, extend, and operate.

Project README, Repository documentation · vercel/eve README
import { defineTool } from 'eve/tools'
import { z } from 'zod'

export const getWeather = defineTool({
  name: 'get_weather',
  description: 'Fetch current weather for a city',
  inputSchema: z.object({ city: z.string() }),
  needsApproval: true,
  async run({ city }) {
    return { city, forecast: 'sunny' }
  },
})

How defineTool and approvals keep agents safe

The tool layer is where `eve` stops being cute. Tools are typed, schema-validated, and can require human approval before they run. That matters because an agent that can call functions is useful, but an agent that can call functions safely is shippable.

The fixture code in the repo shows the shape clearly: a tool is not a free-form message to a model, it is an explicit contract with validation and a permission boundary. The model can request action, but it does not get to skip the gate.

A close-up view of a tool request moving through a stamped approval gate and into a sandboxed container. The left side shows a typed tool file, the center shows a human approval slip, and the right side shows isolated execution. The image explains how `eve` separates model intent from actual side effects.
Execution is gated. The model can ask, but the runtime decides when a tool actually runs.

The channel layer turns an agent into a service

Channels are the other half of the product story. `eveChannel` maps the agent to a real entry point, then ties that entry point to auth and principal identity. In plain terms, the agent knows who it is talking to, and that identity can travel through the workflow.

That is a different promise from a local CLI agent or a notebook demo. It means the agent can sit inside a web app, respond as a service, and keep its operational context aligned with the user session that triggered it.

CapabilityLocal agent scripteve channel layer
IdentityImplicit or manualMapped from auth into principal context
SurfaceTerminal or notebookWeb app or product surface
Access controlAd hocBuilt into the channel boundary
Operational roleOne-off runnerPersistent service endpoint

The filesystem is the authoring interface A typical eve agent has this structure: Read the documentation for the full project layout and guides.

Project README, Repository documentation · vercel/eve README

Durability is the actual differentiator

This is the section where `eve` earns its claim. The repo does not just point at tool calling. It points at schedules, subagents, sandbox metadata, and lifecycle state that suggest an agent can pause, resume, and coordinate across time.

That matters more than raw model cleverness. A durable agent is not a single response. It is a process that can wake up from a schedule, recover context, re-enter a channel, and continue with the same identity and constraints it had before.

Where `eve` sits in the agent framework landscape

The comparison that matters is not feature bingo. It is the organizing principle. LangGraph is graph-first. AutoGen is conversation-first. OpenAI Assistants is service-first. Vercel AI SDK is library-first. `eve` is filesystem-first.

ProjectPrimary abstractionBest fitOperational posture
LangGraphGraph of states and transitionsComplex orchestrationFlexible, but graph-centric
Vercel AI SDKLibrary for building AI appsWeb app developersLean and code-first
AutoGenMulti-agent conversationResearch and collaborationAgent-centric and experimental
OpenAI AssistantsManaged assistant serviceTeams that want hosted persistencePlatform-dependent
eveDirectory of agent filesDevelopers shipping durable agentsDeployable, inspectable, operational

That makes `eve` unusual, but also legible. If you already think in folders, modules, and deployable services, the abstraction lands immediately.

What the repo says about Vercel’s bet

The monorepo layout matters. Turborepo, framework adapters, fixtures, docs, linting via the modern `oxc` toolchain, and E2E evaluation all point to a serious platform bet. This is not a toy package dropped into the ecosystem for novelty.

The larger message is that agents are being treated as a first-class app primitive. Vercel seems to be asking a simple question: what if the thing you ship is not a prompt chain, but a software artifact with files, identity, permissions, and runtime hooks?