← Back to Home

Vercel Eve — The Filesystem-First Framework for Durable AI Agents (Complete Guide)

Vercel Eve — The Filesystem-First Framework for Durable AI Agents

Eve is a filesystem-first framework for building durable backend AI agents that run anywhere. Developed by Vercel (the company behind Next.js and the Vercel AI SDK), Eve takes a radically simple approach: every part of your agent is a file in a well-known directory structure. Your agent's instructions, tools, skills, channels, and schedules each live in their own conventional locations — no configuration objects, no registries, no boilerplate.

Since its release on June 16, 2026, Eve has gained over 3,100 GitHub stars. It represents a shift from "agent framework as a library" to "agent framework as a filesystem," where the project tree itself is the authoring interface.

Why It's Trending

The AI agent space is crowded with frameworks, but Eve stands out for three reasons:

  • Filesystem-first design — Add a file, and Eve discovers it. Rename or move it, and its identity moves with it. There is no separate registry to maintain.
  • Durable by default — Sessions survive crashes, network failures, and restarts. Eve uses the Workflow SDK to make sessions resumable without extra code.
  • Built-in channels — HTTP, Slack, Discord, and more are first-class citizens. Your agent can serve a web API or respond in a chat room with the same code.
  • HMR development — Hot Module Replacement means you edit a file and the agent reloads instantly. No rebuilds, no restarts.

Prerequisites

  • Node.js 24 or newer
  • npm (bundled with Node)
  • An API key for your preferred LLM provider (Anthropic, OpenAI, Google, etc.)
  • Basic familiarity with TypeScript

Quick Start

Scaffold your first agent in one command:

npx eve@latest init my-agent

This creates a new my-agent directory, installs dependencies, initializes Git, and starts the interactive terminal UI. Type a message and the model loop runs immediately.

To add Eve to an existing project:

cd myapp
npx eve@latest init .

The scaffold's default model is anthropic/claude-sonnet-5. Set your API key as an environment variable:

export ANTHROPIC_API_KEY="sk-ant-..."

Then start the dev server:

cd my-agent
npm run dev

Project Structure

An Eve agent is a TypeScript project with a conventional layout:

my-agent/
package.json
agent/
  agent.ts               # Model and runtime config
  instructions.md        # Always-on system prompt (identity, rules)
  tools/
    get_weather.ts       # Typed functions the model can call
    search_docs.ts
  skills/
    plan_trip.md         # On-demand procedures loaded when useful
  channels/
    slack.ts             # Communication platforms
    discord.ts
  schedules/
    weekly_report.ts     # Recurring cron jobs

agent.ts — Runtime Configuration

Set the model, reasoning effort, and compaction settings:

import { defineAgent } from "eve";

export default defineAgent({
  model: "anthropic/claude-sonnet-5",
  reasoning: "high",
  compaction: {
    thresholdPercent: 0.75, // Compact context when 75% full
  },
});

instructions.md — The System Prompt

Your agent's permanent identity. This is prepended to every model call:

You are a concise assistant. Use tools when they are available.
Always verify critical information before reporting it.
Keep responses brief and actionable.

tools/ — Typed Functions

Each tool is a file that exports a defineTool call:

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().min(1) }),
  async execute({ city }) {
    const res = await fetch(
      `https://api.weather.com/current?city=${encodeURIComponent(city)}`
    );
    return res.json();
  },
});

skills/ — On-Demand Procedures

Longer procedures that only load when the model calls load_skill:

# plan_trip

When asked to plan a trip:
1. Ask for destination, dates, and budget
2. Search for flights using search_flights tool
3. Search for hotels using search_hotels tool
4. Compile an itinerary with suggestions
5. Ask for confirmation before booking

channels/ — Platform Integrations

Eve ships with built-in HTTP handling. Add Slack or Discord by creating a channel file:

import { defineChannel } from "eve/channels";

export default defineChannel({
  platform: "slack",
  token: process.env.SLACK_BOT_TOKEN,
  // Eve handles the message routing automatically
});

schedules/ — Cron Jobs

Recurring tasks run on a cron schedule:

import { defineSchedule } from "eve/schedules";

export default defineSchedule({
  cron: "0 9 * * 1", // Every Monday at 9 AM
  async execute() {
    // Generate weekly report
    return { summary: "Report generated" };
  },
});

Architecture Overview

Vercel Eve Architecture

Eve's architecture follows a clean layered design. At the top, Platform Channels (HTTP, Slack, Discord, Terminal UI) receive messages from users. The Eve Runtime orchestrates the agent loop: it loads the Filesystem Manifest (instructions, tools, skills, schedules), manages session persistence via the Workflow SDK, and streams results back through channels.

The LLM Provider (Anthropic, OpenAI, Google, etc.) handles inference through the Vercel AI Gateway or directly via AI SDK provider packages. Compaction automatically summarizes older turns as the context window fills, keeping agents running in long sessions without manual tuning.

Installation & Setup

1. Install Node.js 24

Eve requires Node 24 or newer. Install using nvm:

nvm install 24
nvm use 24

2. Scaffold an Agent

npx eve@latest init my-first-agent
cd my-first-agent

3. Configure the Model

Edit agent/agent.ts to set your preferred model:

import { defineAgent } from "eve";

export default defineAgent({
  model: "openai/gpt-5.5",
});

Install the provider SDK if using a direct provider model:

npm install @ai-sdk/openai

4. Set API Keys

export OPENAI_API_KEY="sk-..."

Or for the Vercel AI Gateway:

export AI_GATEWAY_API_KEY="gwk-..."

5. Run the Agent

npm run dev

The terminal UI opens. Type a message and watch the model loop execute, call tools, and respond.

Creating Custom Tools

Tools are the primary way your agent interacts with the outside world. Here are practical examples:

Web Search Tool

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

export default defineTool({
  description: "Search the web for recent information.",
  inputSchema: z.object({
    query: z.string().min(1),
    maxResults: z.number().max(10).default(5),
  }),
  async execute({ query, maxResults }) {
    // Call your search API here
    return { results: [] };
  },
});

Database Query Tool

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

export default defineTool({
  description: "Query the PostgreSQL database.",
  inputSchema: z.object({
    sql: z.string().min(1),
  }),
  async execute({ sql }) {
    // Sanitize and execute query
    return { rows: [] };
  },
});

Adding Slack Integration

Create agent/channels/slack.ts:

import { defineChannel } from "eve/channels";

export default defineChannel({
  platform: "slack",
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  botToken: process.env.SLACK_BOT_TOKEN,
});

Set the environment variables and restart. Eve handles Slack event subscription, message parsing, and response delivery automatically.

Production Deployment

Eve supports several deployment targets:

Docker

Eve provides a sandbox Docker image. Create a Dockerfile:

FROM ghcr.io/vercel/eve-sandbox:latest

WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
CMD ["npx", "eve", "start"]

Vercel Deployment

npx eve deploy

This links your project to Vercel and deploys the agent as a serverless function with HTTP and scheduled task support.

Self-Hosted (Node)

Run the built agent behind a process manager:

npm run build
pm2 start dist/index.js --name my-agent

Verification Checklist

  • npx eve@latest init test-agent creates a working scaffold
  • npm run dev starts the terminal UI without errors
  • Typing a message produces a valid model response
  • Adding a .ts file to agent/tools/ is auto-discovered (no restart needed with HMR)
  • Adding agent/slack.ts enables Slack message handling
  • Session state persists after an agent crash (durability check)
  • eve deploy produces a working production endpoint

Resources

← Retour à l'Accueil

Vercel Eve — Le Framework Fichiers-Système pour Agents IA Durables (Guide Complet)

Vercel Eve — Le Framework Fichiers-Système pour Agents IA Durables

Eve est un framework fichiers-système pour construire des agents IA backend durables qui fonctionnent partout. Développé par Vercel (la société derrière Next.js et le Vercel AI SDK), Eve adopte une approche radicalement simple : chaque partie de votre agent est un fichier dans une structure de répertoires bien connue. Les instructions, outils, compétences, canaux et plannings de votre agent vivent chacun dans leur emplacement conventionnel — pas d'objets de configuration, pas de registres, pas de code passe-partout.

Depuis sa sortie le 16 juin 2026, Eve a gagné plus de 3 100 étoiles GitHub. Il représente un changement de paradigme, passant d'un « framework d'agents en tant que bibliothèque » à un « framework d'agents en tant que système de fichiers », où l'arborescence du projet est elle-même l'interface de création.

Pourquoi ça Tendance

L'espace des frameworks d'agents IA est saturé, mais Eve se distingue pour trois raisons :

  • Conception fichiers-système — Ajoutez un fichier, Eve le découvre. Renommez-le ou déplacez-le, son identité le suit. Aucun registre séparé à maintenir.
  • Durable par défaut — Les sessions survivent aux crashs, aux pannes réseau et aux redémarrages. Eve utilise le Workflow SDK pour rendre les sessions reprises sans code supplémentaire.
  • Canaux intégrés — HTTP, Slack, Discord et plus sont des citoyens de première classe. Votre agent peut servir une API web ou répondre dans un salon de discussion avec le même code.
  • Développement HMR — Le remplacement de module à chaud vous permet de modifier un fichier et de voir l'agent se recharger instantanément. Pas de reconstruction, pas de redémarrage.

Prérequis

  • Node.js 24 ou plus récent
  • npm (fourni avec Node)
  • Une clé API pour votre fournisseur LLM préféré (Anthropic, OpenAI, Google, etc.)
  • Connaissance de base de TypeScript

Démarrage Rapide

Créez votre premier agent en une commande :

npx eve@latest init mon-agent

Cette commande crée un nouveau répertoire mon-agent, installe les dépendances, initialise Git et démarre l'interface utilisateur interactive. Tapez un message et la boucle du modèle s'exécute immédiatement.

Pour ajouter Eve à un projet existant :

cd monapp
npx eve@latest init .

Le modèle par défaut du scaffold est anthropic/claude-sonnet-5. Définissez votre clé API comme variable d'environnement :

export ANTHROPIC_API_KEY="sk-a...

Puis démarrez le serveur de développement :

cd mon-agent
npm run dev

Structure du Projet

Un agent Eve est un projet TypeScript avec une structure conventionnelle :

mon-agent/
package.json
agent/
  agent.ts               # Configuration du modèle et de l'exécution
  instructions.md        # Prompt système permanent (identité, règles)
  tools/
    meteo.ts             # Fonctions typées que le modèle peut appeler
    recherche_docs.ts
  skills/
    planifier_voyage.md  # Procédures à la demande
  channels/
    slack.ts             # Plateformes de communication
    discord.ts
  schedules/
    rapport_hebdo.ts     # Tâches cron récurrentes

agent.ts — Configuration d'Exécution

Définissez le modèle, l'effort de raisonnement et les paramètres de compaction :

import { defineAgent } from "eve";

export default defineAgent({
  model: "anthropic/claude-sonnet-5",
  reasoning: "high",
  compaction: {
    thresholdPercent: 0.75, // Compacter le contexte à 75% de sa capacité
  },
});

instructions.md — Le Prompt Système

L'identité permanente de votre agent. Elle est préfixée à chaque appel de modèle :

Vous êtes un assistant concis. Utilisez les outils quand ils sont disponibles.
Vérifiez toujours les informations critiques avant de les rapporter.
Gardez les réponses brèves et exploitables.

tools/ — Fonctions Typées

Chaque outil est un fichier qui exporte un appel defineTool :

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

export default defineTool({
  description: "Obtenir la météo actuelle d'une ville.",
  inputSchema: z.object({ city: z.string().min(1) }),
  async execute({ city }) {
    const res = await fetch(
      `https://api.meteo.com/current?city=${encodeURIComponent(city)}`
    );
    return res.json();
  },
});

skills/ — Procédures à la Demande

Des procédures plus longues qui ne se chargent que lorsque le modèle appelle load_skill :

# planifier_voyage

Lorsqu'on vous demande de planifier un voyage :
1. Demandez la destination, les dates et le budget
2. Recherchez les vols avec l'outil rechercher_vols
3. Recherchez les hôtels avec l'outil rechercher_hotels
4. Compilez un itinéraire avec des suggestions
5. Demandez confirmation avant de réserver

channels/ — Intégrations de Plateformes

Eve est livré avec la gestion HTTP intégrée. Ajoutez Slack ou Discord en créant un fichier de canal :

import { defineChannel } from "eve/channels";

export default defineChannel({
  platform: "slack",
  token: process.env.SLACK_BOT_TOKEN,
  // Eve gère le routage des messages automatiquement
});

schedules/ — Tâches Cron

Des tâches récurrentes exécutées selon un planning cron :

import { defineSchedule } from "eve/schedules";

export default defineSchedule({
  cron: "0 9 * * 1", // Tous les lundis à 9h
  async execute() {
    // Générer un rapport hebdomadaire
    return { summary: "Rapport généré" };
  },
});

Architecture

Architecture de Vercel Eve

L'architecture d'Eve suit une conception en couches. En haut, les Canaux de Plateforme (HTTP, Slack, Discord, Terminal UI) reçoivent les messages des utilisateurs. Le Runtime Eve orchestre la boucle de l'agent : il charge le Manifeste du Système de Fichiers (instructions, outils, compétences, plannings), gère la persistance des sessions via le Workflow SDK et diffuse les résultats via les canaux.

Le Fournisseur LLM (Anthropic, OpenAI, Google, etc.) gère l'inférence via la passerelle Vercel AI Gateway ou directement via les packages SDK du fournisseur. La Compaction résume automatiquement les tours plus anciens à mesure que la fenêtre de contexte se remplit.

Installation et Configuration

1. Installer Node.js 24

Eve nécessite Node 24 ou plus récent. Installez avec nvm :

nvm install 24
nvm use 24

2. Créer un Agent

npx eve@latest init mon-premier-agent
cd mon-premier-agent

3. Configurer le Modèle

Modifiez agent/agent.ts pour définir votre modèle préféré :

import { defineAgent } from "eve";

export default defineAgent({
  model: "openai/gpt-5.5",
});

Installez le SDK du fournisseur si vous utilisez un modèle direct :

npm install @ai-sdk/openai

4. Définir les Clés API

export OPENAI_API_KEY="sk-...

Ou pour la passerelle Vercel AI Gateway :

export AI_GATEWAY_API_KEY="gwk-...```

### 5. Lancer l'Agent

```bash
npm run dev

L'interface terminal s'ouvre. Tapez un message et regardez la boucle du modèle s'exécuter, appeler les outils et répondre.

Créer des Outils Personnalisés

Les outils sont le principal moyen pour votre agent d'interagir avec le monde extérieur :

Outil de Recherche Web

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

export default defineTool({
  description: "Rechercher des informations récentes sur le web.",
  inputSchema: z.object({
    query: z.string().min(1),
    maxResults: z.number().max(10).default(5),
  }),
  async execute({ query, maxResults }) {
    // Appelez votre API de recherche ici
    return { results: [] };
  },
});

Outil de Requête Base de Données

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

export default defineTool({
  description: "Interroger la base de données PostgreSQL.",
  inputSchema: z.object({
    sql: z.string().min(1),
  }),
  async execute({ sql }) {
    // Nettoyer et exécuter la requête
    return { rows: [] };
  },
});

Ajouter l'Intégration Slack

Créez agent/channels/slack.ts :

import { defineChannel } from "eve/channels";

export default defineChannel({
  platform: "slack",
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  botToken: process.env.SLACK_BOT_TOKEN,
});

Définissez les variables d'environnement et redémarrez. Eve gère automatiquement la souscription aux événements Slack, l'analyse des messages et la livraison des réponses.

Déploiement en Production

Eve prend en charge plusieurs cibles de déploiement :

Docker

Eve fournit une image Docker sandbox. Créez un Dockerfile :

FROM ghcr.io/vercel/eve-sandbox:latest

WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
CMD ["npx", "eve", "start"]

Déploiement Vercel

npx eve deploy

Auto-Hébergé (Node)

Exécutez l'agent compilé derrière un gestionnaire de processus :

npm run build
pm2 start dist/index.js --name mon-agent

Liste de Vérification

  • npx eve@latest init test-agent crée un scaffold fonctionnel
  • npm run dev démarre l'interface terminal sans erreur
  • Taper un message produit une réponse valide du modèle
  • Ajouter un fichier .ts à agent/tools/ est automatiquement détecté
  • Ajouter agent/slack.ts active la gestion des messages Slack
  • L'état de session persiste après un crash de l'agent
  • eve deploy produit un endpoint de production fonctionnel

Ressources