# vercel/eve architecture

> Architecture diagram of the GitHub repository vercel/eve, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-24). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vercel/eve
- Repository: https://github.com/vercel/eve

## Overview

eve is a filesystem-first framework for authoring and operating durable AI agents. A developer defines agent configuration and instructions, then adds tools, skills, channels, and schedules; the runtime handles incoming work as sessions and can invoke tools or delegate to subagents. Channels expose HTTP or WebSocket routes, while session APIs support streaming and control. The README documents authoring capabilities; sampled runtime sources confirm route contracts and task cancellation, but do not expose the full dispatch implementation, so uncertain internal wiring is omitted.

Main entry points: [`packages/eve/src`](https://github.com/vercel/eve/tree/main/packages/eve/src) (Agent runtime), [`packages/eve/src/channel/routes.ts`](https://github.com/vercel/eve/blob/main/packages/eve/src/channel/routes.ts) (Channel routes), [`apps/templates/eve-chat-template/agent/agent.ts`](https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/agent.ts) (Agent config), [`apps/templates/personal-agent-template/agent/instructions.ts`](https://github.com/vercel/eve/blob/main/apps/templates/personal-agent-template/agent/instructions.ts) (Instructions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_authoring["Agent authoring"]
  node_agent_config["Agent config<br/>[agent.ts]"]
  node_instructions["Instructions<br/>[instructions.ts]"]
  node_tools["Tools<br/>[get_weather.ts]"]
  node_skills["Skills"]
  node_channels["Channels<br/>[eve.ts]"]
  node_schedules["Schedules"]
end

subgraph group_runtime["Runtime and sessions"]
  node_runtime["Agent runtime"]
  node_session[("Durable session")]
  node_subagents["Subagents"]
  node_task_cancellation["Task cancellation"]
end

subgraph group_interfaces["Channels and clients"]
  node_channel_routes["Channel routes<br/>[routes.ts]"]
  node_protocol["Session protocol<br/>[routes.ts]"]
  node_client["Client API"]
end

subgraph group_extensions["Tools and integrations"]
  node_connections["Connections<br/>[linear.ts]"]
end

subgraph group_operations["Operations"]
  node_evals["Agent evals<br/>[session-manager.ts]"]
  node_cli["Eve CLI<br/>[eve.js]"]
end

node_developer(("Agent developer"))
node_model(("Model provider"))
node_human(("Human user"))
node_external_services(("External services"))

node_developer -->|"authors"| node_agent_config
node_developer -->|"writes"| node_instructions
node_developer -->|"adds"| node_tools
node_developer -->|"adds"| node_skills
node_developer -->|"adds"| node_channels
node_developer -->|"adds"| node_schedules
node_agent_config -->|"configures"| node_runtime
node_instructions -->|"guides"| node_runtime
node_channels -->|"declare routes"| node_channel_routes
node_human -->|"sends request"| node_channel_routes
node_channel_routes -->|"dispatches"| node_runtime
node_runtime -->|"persists state"| node_session
node_runtime -->|"requests completion"| node_model
node_runtime -->|"invokes"| node_tools
node_runtime -->|"delegates"| node_subagents
node_runtime -->|"uses"| node_connections
node_connections -.->|"connects"| node_external_services
node_client -->|"uses routes"| node_protocol
node_protocol -->|"addresses sessions"| node_session
node_evals -->|"drives sessions"| node_client
node_session -->|"indexes tasks"| node_task_cancellation
node_task_cancellation -->|"cancels tasks"| node_subagents
node_developer -->|"starts project"| node_cli

click node_agent_config "https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/agent.ts"
click node_instructions "https://github.com/vercel/eve/blob/main/apps/templates/personal-agent-template/agent/instructions.ts"
click node_tools "https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/tools/get_weather.ts"
click node_channels "https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/channels/eve.ts"
click node_runtime "https://github.com/vercel/eve/tree/main/packages/eve/src"
click node_session "https://github.com/vercel/eve/tree/main/packages/eve/src"
click node_subagents "https://github.com/vercel/eve/tree/main/apps/templates/eve-llm-council-template/agent/subagents"
click node_channel_routes "https://github.com/vercel/eve/blob/main/packages/eve/src/channel/routes.ts"
click node_protocol "https://github.com/vercel/eve/blob/main/packages/eve/src/protocol/routes.ts"
click node_client "https://github.com/vercel/eve/tree/main/packages/eve/src"
click node_evals "https://github.com/vercel/eve/blob/main/packages/eve/src/evals/session-manager.ts"
click node_connections "https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/connections/linear.ts"
click node_task_cancellation "https://github.com/vercel/eve/blob/main/packages/eve/src/execution/cancel-indexed-session-tasks-step.ts"
click node_cli "https://github.com/vercel/eve/blob/main/packages/eve/bin/eve.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_agent_config,node_instructions,node_tools,node_skills,node_channels,node_schedules,node_human toneBlue
class node_runtime,node_session,node_subagents,node_task_cancellation toneAmber
class node_channel_routes,node_protocol,node_client toneMint
class node_connections toneRose
class node_evals,node_cli,node_developer,node_model,node_external_services toneIndigo
```

## Components

### Agent authoring

- [Agent config](https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/agent.ts): `apps/templates/eve-chat-template/agent/agent.ts`
- [Instructions](https://github.com/vercel/eve/blob/main/apps/templates/personal-agent-template/agent/instructions.ts): `apps/templates/personal-agent-template/agent/instructions.ts`
- [Tools](https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/tools/get_weather.ts): `apps/templates/eve-chat-template/agent/tools/get_weather.ts`
- **Skills**
- [Channels](https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/channels/eve.ts): `apps/templates/eve-chat-template/agent/channels/eve.ts`
- **Schedules**

### Runtime and sessions

- [Agent runtime](https://github.com/vercel/eve/tree/main/packages/eve/src): `packages/eve/src`
- [Durable session](https://github.com/vercel/eve/tree/main/packages/eve/src): `packages/eve/src`
- [Subagents](https://github.com/vercel/eve/tree/main/apps/templates/eve-llm-council-template/agent/subagents): `apps/templates/eve-llm-council-template/agent/subagents`
- [Task cancellation](https://github.com/vercel/eve/blob/main/packages/eve/src/execution/cancel-indexed-session-tasks-step.ts): `packages/eve/src/execution/cancel-indexed-session-tasks-step.ts`

### Channels and clients

- [Channel routes](https://github.com/vercel/eve/blob/main/packages/eve/src/channel/routes.ts): `packages/eve/src/channel/routes.ts`
- [Session protocol](https://github.com/vercel/eve/blob/main/packages/eve/src/protocol/routes.ts): `packages/eve/src/protocol/routes.ts`
- [Client API](https://github.com/vercel/eve/tree/main/packages/eve/src): `packages/eve/src`

### Tools and integrations

- [Connections](https://github.com/vercel/eve/blob/main/apps/templates/eve-chat-template/agent/connections/linear.ts): `apps/templates/eve-chat-template/agent/connections/linear.ts`

### Operations

- [Agent evals](https://github.com/vercel/eve/blob/main/packages/eve/src/evals/session-manager.ts): `packages/eve/src/evals/session-manager.ts`
- [Eve CLI](https://github.com/vercel/eve/blob/main/packages/eve/bin/eve.js): `packages/eve/bin/eve.js`

### Other components

- **Agent developer**
- **Model provider**
- **Human user**
- **External services**

## Connections

- Agent developer → Agent config: authors
- Agent developer → Instructions: writes
- Agent developer → Tools: adds
- Agent developer → Skills: adds
- Agent developer → Channels: adds
- Agent developer → Schedules: adds
- Agent config → Agent runtime: configures
- Instructions → Agent runtime: guides
- Channels → Channel routes: declare routes
- Human user → Channel routes: sends request
- Channel routes → Agent runtime: dispatches
- Agent runtime → Durable session: persists state
- Agent runtime → Model provider: requests completion
- Agent runtime → Tools: invokes
- Agent runtime → Subagents: delegates
- Agent runtime → Connections: uses
- Connections → External services: connects
- Client API → Session protocol: uses routes
- Session protocol → Durable session: addresses sessions
- Agent evals → Client API: drives sessions
- Durable session → Task cancellation: indexes tasks
- Task cancellation → Subagents: cancels tasks
- Agent developer → Eve CLI: starts project
