MCPcopy
hub / github.com/vercel/eve

github.com/vercel/eve @0.19.0 sqlite

repository ↗ · DeepWiki ↗ · release 0.19.0 ↗
9,655 symbols 31,231 edges 1,751 files 738 documented · 8%
README

  <img alt="eve logo" src="https://github.com/vercel/eve/raw/0.19.0/github/assets/eve.svg" height="128">


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.

Extension points exported contracts — how you extend this code

ChatSdkChannelBridge (Interface)
(no doc) [6 implementers]
packages/eve/src/public/channels/chat-sdk/chatSdkChannel.ts
Presentation (Interface)
Docs presentation overlay shared by every integration kind.
apps/docs/lib/integrations/data.ts
McpTransport (Interface)
(no doc)
packages/eve-catalog/src/index.ts
AuthJsSession (Interface)
(no doc)
apps/frameworks/next/lib/auth.ts
ChainOfThoughtContextValue (Interface)
(no doc)
apps/templates/web-chat-next/components/ai-elements/chain-of-thought.tsx
AnchorRequestBody (Interface)
(no doc)
apps/fixtures/agent-tui-client/agent/channels/anchored.ts
ChannelSessionResponse (Interface)
(no doc)
e2e/fixtures/agent-tools/evals/channel-events/pre-tool-narration.eval.ts
EvalReporter (Interface)
(no doc) [6 implementers]
packages/eve/src/evals/runner/reporters/types.ts

Core symbols most depended-on inside this repo

stringify
called by 690
packages/eve/scripts/vendor-compiled/declarations/gray-matter.d.ts
get
called by 465
packages/eve/src/context/key.ts
set
called by 417
packages/eve/src/context/key.ts
has
called by 300
packages/eve/src/context/key.ts
writeFile
called by 206
packages/eve/src/internal/testing/mocks/mock-sandbox.ts
json
called by 193
packages/eve/src/channel/routes.ts
writeFile
called by 184
packages/eve/src/execution/sandbox/session.ts
snapshot
called by 180
packages/eve/src/cli/dev/tui/test/mock-terminal.ts

Shape

Function 7,047
Interface 1,439
Method 969
Class 198
Enum 2

Languages

TypeScript100%

Modules by API surface

packages/eve/src/cli/dev/tui/terminal-renderer.ts160 symbols
scripts/nitro-bundle-report.mjs75 symbols
packages/eve/src/evals/types.ts73 symbols
packages/eve/src/cli/dev/tui/runner.ts68 symbols
packages/eve/src/protocol/message.ts65 symbols
packages/eve/src/execution/sandbox/bindings/microsandbox-runtime.test.ts56 symbols
apps/frameworks/next/app/_chat/workflow-api.ts52 symbols
packages/eve/src/public/channels/chat-sdk/chatSdkChannel.test.ts51 symbols
apps/templates/web-chat-next/components/ai-elements/prompt-input.tsx51 symbols
packages/eve/src/public/channels/teams/teamsChannel.ts49 symbols
packages/eve/src/evals/session.ts46 symbols
packages/eve/src/harness/tool-loop.ts43 symbols

Dependencies from manifests, versioned

@ai-sdk/anthropiccatalog: · 1×
@ai-sdk/googlecatalog: · 1×
@ai-sdk/mcpcatalog: · 1×
@ai-sdk/openaicatalog: · 1×
@ai-sdk/otelcatalog: · 1×
@ai-sdk/providercatalog: · 1×
@ai-sdk/provider-utilscatalog: · 1×
@ai-sdk/react3.0.193 · 1×
@auth/core0.41.2 · 1×
@changesets/cli2.31.0 · 1×
@chat-adapter/slack4.31.0 · 1×
@chat-adapter/state-memory4.31.0 · 1×

For agents

$ claude mcp add eve \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact