Build production AI agents
eve is an open-source agent framework for durable, long-running work. Build, govern, and evolve enterprise-grade agents that can scale.
Agents that run your company, power your product, or are personal
Start from a working template, or build your own from scratch.
Build a Slack agent that answers your team's business questions from your documented dbt models.
- Answers in SlackOnly for the people and channels you allow.
- Grounded in dbtReads your model docs before it writes a query.
- Read-only SQLQueries DuckDB or MotherDuck, and never writes to them.
Build an agent that turns issues into reviewed draft pull requests, from triage and planning to implementation.
- GitHub and LinearPicks up tasks where your team already files them.
- Four stationsClassifier, analyst, implementer, and reviewer subagents work each task.
- Draft pull requestsEvery task ends in a reviewed draft on your repository.
Agents inside your product, over web, voice, or iMessage, with memory for every user.
- Web chatInside your app, with long-term memory for each user.
- VoiceCalls that run tools and ask for approval.
- iMessageThreads that share memory with web and Slack.
Dynamic where you need it
Write your agent as plain files. When it needs to behave differently for each customer, make any file dynamic.
instructions.md
An instructions.md file is a complete agent. Describe its role in Markdown, then run eve.
Static in this example. Any file can be dynamic.
instructions/sla.tsdynamic
Add instructions that depend on the customer. Enterprise customers get a one-hour SLA, and Pro customers get a reply within a business day.
agent.tsdynamic
Choose the model per customer: a larger model for enterprise conversations.
skills/refunds.mdoptional
Skills are Markdown playbooks loaded only when relevant, so the agent gets focused guidance without carrying it in every prompt.
Static in this example. Any file can be dynamic.
tools/lookup_order.tsoptional
Drop a TypeScript file in tools/ and the model can call it. The filename becomes the tool name, no registration required.
Static in this example. Any file can be dynamic.
tools/page_on_call.tsdynamic
Let the agent page the on-call engineer, but only for enterprise customers.
channels/slack.tsoptional
Add channel files to answer customers in Slack, Discord, Teams, or the web with the same agent.
Static in this example. Any file can be dynamic.
connections/linear.tsoptional
Connections handle auth for services like Linear, GitHub, and Stripe, so the agent can file a bug for a support issue without managing tokens.
Static in this example. Any file can be dynamic.
subagents/billing/agent.tsoptional
Add subagents for specialized work. The support agent hands billing questions to a billing specialist and uses its answer.
Static in this example. Any file can be dynamic.
subagents/escalation/agent.tsdynamic
Give enterprise customers second-level support: a specialist the agent hands hard cases to.
schedules/daily-digest.mdoptional
Schedules run agents automatically for jobs like daily digests, continuing durably without an active session.
Static in this example. Any file can be dynamic.
Add instructions that depend on the customer. Enterprise customers get a one-hour SLA, and Pro customers get a reply within a business day.
Own your intelligence
Customize at every layer, from the harness to the UI to every agent run.
An editor showing agent/agent.ts, with defaultTools: false being added to defineAgent: the agent starts without eve's default tools. Own your harness
Start with great defaults. Turn off what you don't need, extend what you do. Scale from side project to enterprise.
Three agent apps in overlapping windows, built with Next.js in front, Nuxt, and SvelteKit. Own your agent UI
Build rich agent UIs natively in Next.js, Nuxt, SvelteKit, and TanStack. Ship agent and app in one deploy.
Rounded squares represent data in your runtime, with model providers above and a hosting provider below. Choose your model routing and hosting infrastructure when self-hosting. Own your data
Control where your agent runs and who can access it. Self-host with your own workflow storage, sandbox provider, and model routing.
Everything you need to ship to production
One agent at the center of radar rings, reached from WhatsApp, GitHub, Slack, Linear, Discord, Telegram, Google Chat, Microsoft Teams, iMessage, Web. Agent chat on every channel
Multiplayer and single-player chat across Slack, Teams, iMessage, WhatsApp, and the web. Channels are a framework primitive.
- Resolved per user
- AliceMemoryCRM tools
- BobMemorySchedules
- CarolMemoryLegal skills
One deployment resolves capabilities per person in the Acme org, each avatar badged with the Acme logo: Alice gets memory and CRM tools, Bob memory and schedules, and Carol memory and legal skills. Multi-tenant with dynamic capabilities
One deployment, every customer. Skills, schedules, memory, and tools resolved per user at runtime.
Three runs: a fully agentic loop of model steps, a deterministic workflow of code steps, and a workflow with one agentic step among its code steps. Determinism where you need it
Fully agentic loops, deterministic workflows, or both in one run. You choose per task.
Any model, no rewrite
Swap models with a one-line edit. Provider fallback included. Route different models to different tasks.
Durable execution & scheduling
Checkpoints every step. Survives crashes, restarts, and days-long waits. Runs on crons, too.
Human in the loop
Pause for approval. Resume durably when it arrives.
Evals
Test agent behavior before and after every change.
Connections & subagents
Connect to services over MCP and OpenAPI, or delegate to focused subagents. Credentials stay in the runtime.
Agent identity & sandboxes
Bring any OIDC provider and act as the agent or the signed-in user. Code runs in an isolated sandbox per session.
Built on open-source SDKs,
yours to self-host
Swap any backend and self-host the whole runtime with no managed infrastructure, or deploy on Vercel for fully native support.
Fully managed via Vercel. Sandboxes, durable workflows, model routing, and observability handled for you.
