vercel/evePublic

The Open Framework for Building Agents

AI summary: A filesystem-first framework for building durable, transparent AI agents using Next.js conventions.

Stars
4.4K
+43 today
Forks
424
Watchers
12
Open issues
173
Open PRs
237
Contributors
~41
Commits
571
Branches
332

TypeScriptApache-2.0Created Jun 16, 2026Last push 1d agoLatest release eve@0.27.13+219 stars this week+219 this month

Star history

since Jun 14, 2026
02K4KJun 2026Jul 2026Jul 2026Aug 2026
4.4K stars as of Aug 6, 2026, tracked back to Jun 14, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Signals and awards

derived from tracked data
  • Breakout launch

    4,393 stars in 52 days

  • Actively maintained

    Pushed within 48 hours

  • Well documented

    High community health score

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What eve does

Eve offers a structured approach to building AI agents by defining core capabilities through the filesystem, similar to Next.js routing. Instead of complex code abstractions, agent instructions and tools reside in conventional directory paths like 'instructions.md' and the 'tools/' folder. This design choice makes agent logic highly inspectable, simple to version control, and straightforward to deploy. The framework focuses on durable execution, ensuring that long-running agent workflows maintain state reliably.

Full-stack JavaScript/TypeScript developers looking for a structured, scalable way to build and deploy robust AI agents.

  • Filesystem-first design: Agent logic and configuration are determined by standard directory structures.
  • Markdown instructions: System prompts are maintained as plain markdown files for easy editing and review.
  • Durable workflows: Built-in mechanisms to handle long-running processes and maintain agent state.
  • Native Vercel integration: Optimized for deployment and scaling on Vercel's serverless infrastructure.
  • Typed tools: Functions exposed to the model are strongly typed, improving reliability and auto-completion.

Where teams use it

Autonomous background tasks

Building agents that process complex data pipelines over extended periods without losing state.

Standardized agent development

Teams can use a familiar Next.js-like directory structure to organize multiple agents across a large codebase.

Transparent prompt engineering

Non-technical stakeholders can easily review and update agent instructions directly in the markdown files.

Getting started: npm install eve

README

main branch
eve logo

eve

Vercel logo NPM version License Join the community on GitHub

eve is a filesystem-first framework for durable AI agents. Core agent capabilities live in conventional locations, so projects are easier to inspect, extend, and operate.

The filesystem is the authoring interface

A typical eve agent has this structure:

my-agent/
└── agent/
    ├── agent.ts            # Optional: model and runtime config
    ├── instructions.md     # Required: the always-on system prompt
    ├── tools/              # Optional: typed functions the model can call
    │   └── get_weather.ts
    ├── skills/             # Optional: procedures loaded on demand
    │   └── plan_a_trip.md
    ├── channels/           # Optional: message channels (HTTP, Slack, Discord)
    │   └── slack.ts
    └── schedules/          # Optional: recurring cron jobs
        └── weekly_recap.ts

Read the documentation for the full project layout and guides.

Quick start

npx eve@latest init my-agent

This creates a new my-agent directory, installs its dependencies, initializes Git, and starts the interactive terminal UI.

To add eve to an existing project, pass a path:

cd myapp
npx eve@latest init .

Note

The eve package includes its full documentation, so coding agents can read it locally from node_modules/eve/docs.

A minimal example

The generated project includes an agent directory. Replace agent/instructions.md with:

You are a concise weather demo assistant. Tell users that the weather data is mocked.

Add a mock weather tool at agent/tools/get_weather.ts:

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

export default defineTool({
  description: "Return mock weather data for a city.",
  inputSchema: z.object({ city: z.string().min(1) }),
  async execute({ city }) {
    return { city, condition: "Sunny", temperatureF: 72 };
  },
});

Choose the model in agent/agent.ts:

import { defineAgent } from "eve";

export default defineAgent({
  model: "anthropic/claude-sonnet-5",
});

For a new scaffold, start the agent again:

npm run dev

That's a working agent. Add human-in-the-loop prompts, subagents, and schedules as needed. Follow the first-agent tutorial for a complete walkthrough.

Community

The eve community lives on GitHub Discussions, where you can ask questions, share ideas, and show what you've built.

Contributing

Contributions are welcome. See CONTRIBUTING.md to get the repo running locally and land a change, and use issues and discussions to collaborate. By participating, you agree to our Code of Conduct.

Security

Please do not open public issues for security vulnerabilities. Instead, follow SECURITY.md and report responsibly to responsible.disclosure@vercel.com.

Beta terms

eve is currently in beta and subject to the Vercel beta terms; the framework, APIs, documentation, and behavior may change before general availability.

View on GitHub

Recent activity

commits and pull requests

Discussions

all 19

Releases and announcements

82 total
  1. eve@0.27.13eve@0.27.13Jul 29, 2026

    ### Patch Changes - c1bf6d4: Fix `eve dev` startup for bundled extensions whose output declares `__filename` without `__dirname`. - 5d25b16: Render user-scoped connection authorization in Linear Agent Sessions. Linear users now receive the native account-linking affordance, and the channel posts the authorization outcome before a parked turn resumes. - d257866: `eve add` now asks before running an official registry item's setup and prints a resumable command when setup is skipped or cancelled. Run `eve add <item> --skip-install` to launch setup later without reinstalling the item.

  2. eve@0.27.12eve@0.27.12Jul 29, 2026

    ### Patch Changes - 9df880e: Upgrade the runtime HTTP client to undici 8 while preserving Node fetch compatibility for SSRF-safe web requests. - 9ddb890: Update the bundled Workflow runtime dependencies to their latest 5.0 beta releases. - c27b44a: Invoke an agent without a TUI using `eve invoke`, which returns pretty JSON at terminal or blocking events. Durable session coordinates support follow-up turns, human input, authorization, interrupted waits, and machine discovery through `--json-schema`.

  3. eve@0.27.9eve@0.27.9Jul 28, 2026

    ### Patch Changes - f736533: Update the bundled AI SDK to 7.0.38. - 0d2d0cd: Persist zero-config agent, AI SDK, and user-created OpenTelemetry spans under `.eve/traces` during `eve dev` when authored instrumentation is absent. - 71bb2c6: Compaction no longer reproduces base64 file payloads from `content` tool outputs. In the summarizer transcript and in capped kept-history results alike, file parts are replaced with a text stub naming the file and media type (matching how message attachments are summarized); sibling text parts survive instead of being truncated away behind the serialized payload. - ebeedd6: Add `eve trace ls` and `eve trace [trace]` commands for inspecting locally persisted agent traces after or during `eve dev`. - 5e4b70f: Allow `eve add channel/web` and `eve add channel/slack` to use the existing channel setup flows. The official registry now lists Web Chat and Slack channel items. - 83c753e: Harden `web_fetch` against SSRF by requiring HTTPS, rejecting non-public destinations during DNS resolution, and returning redirect targets without following them automatically. - c804141: `toModelOutput` can now return `{ type: "content", value }` with text and file parts,

  4. eve@0.27.11eve@0.27.11Jul 28, 2026

    ### Patch Changes - 1e35a26: Bound the zero-config local trace store so `.eve/traces` no longer grows without limit. `eve dev` now sweeps it when a session finishes and at startup, keeping open sessions, the twenty newest traces, and anything from the last seven days before evicting oldest-first above 512 MB. Tune it with `EVE_TRACES_MAX_AGE_MS`, `EVE_TRACES_MAX_TOTAL_BYTES`, and `EVE_TRACES_RETAIN_COUNT`, or set `EVE_TRACES=off` to turn local tracing off entirely. - 1c0347f: Expose schedules from generated `withEve` services to Vercel's project-level Cron Jobs. Single and named agents now register routable jobs without requiring duplicate `vercel.json` entries. - 0755e97: Resolve package-owned runtime files from the installed eve package when generated host bundles execute outside its package root, including on Windows. - 4deab71: Keep traced external dependencies resolvable from queue-triggered Vercel workflow functions, including dependency graphs that contain multiple versions of the same package. - cf40283: Development runtime snapshots no longer copy legacy root-level `.workflow-data` directories. Projects with large local workflow histories avoid redundant multi-gigabyte sn

  5. eve@0.27.10eve@0.27.10Jul 28, 2026

    ### Patch Changes - 15478d2: Show result counts and concise kind-and-slug addresses for official items in `eve registry list` and `eve registry search` instead of their full registry URLs.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 2 commitsSun 7:00 — 1 commitsSun 8:00 — 0 commitsSun 9:00 — 3 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 1 commitsSun 15:00 — 1 commitsSun 16:00 — 4 commitsSun 17:00 — 1 commitsSun 18:00 — 1 commitsSun 19:00 — 3 commitsSun 20:00 — 0 commitsSun 21:00 — 1 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 1 commitsMon 6:00 — 0 commitsMon 7:00 — 1 commitsMon 8:00 — 0 commitsMon 9:00 — 2 commitsMon 10:00 — 3 commitsMon 11:00 — 16 commitsMon 12:00 — 17 commitsMon 13:00 — 8 commitsMon 14:00 — 9 commitsMon 15:00 — 10 commitsMon 16:00 — 8 commitsMon 17:00 — 3 commitsMon 18:00 — 6 commitsMon 19:00 — 2 commitsMon 20:00 — 6 commitsMon 21:00 — 0 commitsMon 22:00 — 3 commitsMon 23:00 — 1 commitsTue 0:00 — 2 commitsTue 1:00 — 0 commitsTue 2:00 — 1 commitsTue 3:00 — 1 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 1 commitsTue 7:00 — 3 commitsTue 8:00 — 2 commitsTue 9:00 — 6 commitsTue 10:00 — 6 commitsTue 11:00 — 11 commitsTue 12:00 — 19 commitsTue 13:00 — 8 commitsTue 14:00 — 10 commitsTue 15:00 — 4 commitsTue 16:00 — 16 commitsTue 17:00 — 12 commitsTue 18:00 — 2 commitsTue 19:00 — 4 commitsTue 20:00 — 6 commitsTue 21:00 — 4 commitsTue 22:00 — 7 commitsTue 23:00 — 1 commitsWed 0:00 — 0 commitsWed 1:00 — 1 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 1 commitsWed 9:00 — 12 commitsWed 10:00 — 8 commitsWed 11:00 — 14 commitsWed 12:00 — 8 commitsWed 13:00 — 10 commitsWed 14:00 — 10 commitsWed 15:00 — 10 commitsWed 16:00 — 10 commitsWed 17:00 — 10 commitsWed 18:00 — 10 commitsWed 19:00 — 4 commitsWed 20:00 — 1 commitsWed 21:00 — 0 commitsWed 22:00 — 2 commitsWed 23:00 — 1 commitsThu 0:00 — 5 commitsThu 1:00 — 1 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 4 commitsThu 7:00 — 2 commitsThu 8:00 — 6 commitsThu 9:00 — 1 commitsThu 10:00 — 8 commitsThu 11:00 — 15 commitsThu 12:00 — 9 commitsThu 13:00 — 21 commitsThu 14:00 — 9 commitsThu 15:00 — 17 commitsThu 16:00 — 7 commitsThu 17:00 — 6 commitsThu 18:00 — 4 commitsThu 19:00 — 3 commitsThu 20:00 — 3 commitsThu 21:00 — 1 commitsThu 22:00 — 2 commitsThu 23:00 — 4 commitsFri 0:00 — 1 commitsFri 1:00 — 1 commitsFri 2:00 — 2 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 1 commitsFri 7:00 — 0 commitsFri 8:00 — 2 commitsFri 9:00 — 7 commitsFri 10:00 — 2 commitsFri 11:00 — 7 commitsFri 12:00 — 3 commitsFri 13:00 — 8 commitsFri 14:00 — 9 commitsFri 15:00 — 7 commitsFri 16:00 — 2 commitsFri 17:00 — 1 commitsFri 18:00 — 3 commitsFri 19:00 — 1 commitsFri 20:00 — 1 commitsFri 21:00 — 0 commitsFri 22:00 — 5 commitsFri 23:00 — 1 commitsSat 0:00 — 0 commitsSat 1:00 — 1 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 3 commitsSat 9:00 — 1 commitsSat 10:00 — 5 commitsSat 11:00 — 2 commitsSat 12:00 — 3 commitsSat 13:00 — 3 commitsSat 14:00 — 1 commitsSat 15:00 — 1 commitsSat 16:00 — 3 commitsSat 17:00 — 3 commitsSat 18:00 — 1 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jun 18, 2026daily#12+19
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    453.6K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • practical-tutorials/project-based-learning

    Curated list of project-based tutorials

    277.2K stars · Python