DEV Community

Ramu Narasinga
Ramu Narasinga

Posted on

Build durable agents with eve.

In this article, we review eve.dev. You will learn:

  1. What is Eve?

  2. Architecture

  3. Usage Example

What is Eve?

eve is a filesystem-first framework for durable backend agents on Vercel.

You author an agent as a directory on disk. The directory is the contract - markdown for the parts a human should read like a spec, TypeScript for the parts that benefit from real types and runtime behavior.

The framework is called eve. The published npm package is eve. The CLI binary is eve.

Directory structure can be as shown below:

my-agent/
├── package.json
├── tsconfig.json
└── agent/
    ├── agent.ts           # additive runtime config (model, name, build, compaction, )
    ├── instructions.md    # always-on instructions prompt
    ├── tools/             # typed executable integrations
    ├── skills/            # optional named procedures the model can load on demand
    ├── hooks/             # lifecycle and stream-event subscribers
    ├── channels/          # message ingress and delivery (HTTP, Slack, )
    ├── connections/       # external MCP server connections
    ├── sandbox/           # the agent's single sandbox (optional override)
    ├── workspace/         # files seeded into the sandbox on each session
    ├── subagents/         # specialist child agents (reuse `defineAgent`)
    ├── schedules/         # recurring jobs
    └── lib/               # shared authored code imported by other files
Enter fullscreen mode Exit fullscreen mode

Learn more about Eve.

Architecture

You do not need this section to author an eve agent - it documents the public HTTP protocol contracts so eve composes predictably with other systems.

eve's internal split is:

  • the channel normalizes inbound transport, applies auth and delivery policy, and owns channel-local addresses

  • the harness does one unit of AI work and returns { session, next }

  • the runtime persists state, follows next, streams events, and owns workflow primitives (start(), resumeHook(), createHook(), getWritable())

The public HTTP protocol exposes one immutable identifier: sessionId. Create a session explicitly, then use that ID for follow-up messages, controls, streaming, and inspection. Channel-local addresses remain behind authored channel APIs.

This is from Architecture section in packages/eve.

Usage Example

I picked this example from packages/eve README.

agent/instructions.md

You are a weather-focused assistant. Be concise, accurate, and explicit when you use a tool.
Enter fullscreen mode Exit fullscreen mode

agent/tools/get_weather.ts

import { defineTool } from "eve/tools";
import { z } from "zod";

export default defineTool({
  description: "Get the current weather for a city.",
  inputSchema: z.object({
    city: z.string(),
  }),
  async execute(input) {
    return {
      city: input.city,
      condition: "Sunny",
      temperatureF: 72,
    };
  },
});
Enter fullscreen mode Exit fullscreen mode

agent/agent.ts

import { defineAgent } from "eve";

export default defineAgent({
  model: "openai/gpt-5.4-mini",
});
Enter fullscreen mode Exit fullscreen mode

and then you would do this:

npx eve@latest init my-agent
Enter fullscreen mode Exit fullscreen mode

eve init writes a new agent with eve's default model. Pass --model openai/gpt-5.5 to choose another AI Gateway model, --reasoning high to set a reasoning effort, or --channel-web-nextjs to add the Web Chat application. It installs dependencies, initializes Git, and starts the development server. When it finds a supported coding-agent REPL, the handoff menu can open that REPL instead or exit. Targeting an existing project directory (eve init .) adds the agent files and missing dependencies instead. It does not create a Vercel project or deploy the agent.

Learn more about deploying agents created using Eve.

About me:

Hey, my name is Ramu Narasinga. Email: ramu.narasinga@gmail.com

I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.

How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.

Build your coding agents and get more work done in less time at thinkthroo.com

References:

  1. eve.dev/.

  2. github.com/vercel/eve/tree/main/packages/eve.

Top comments (0)