

Like Next.js for agents. Build durable agents with one folder.
An instructions.md file is all you need to run an agent. Skills, tools, channels, and the rest are optional building blocks you add as it grows.
An instructions.md file is a complete agent. Describe its role in Markdown, then run eve.
# Identity
You are an expert weather assistant.
You can fetch the weather for any
city in the world.eve uses a default model. Add agent.ts when you want to choose a model or configure the runtime.
import { defineAgent } from "eve";
export default defineAgent({
model: "openai/gpt-5.4-mini",
});Skills are Markdown playbooks loaded only when relevant, so the agent gets focused guidance without carrying it in every prompt.
---
name: research
description: Research unfamiliar topics
---
When the task is novel or ambiguous,
gather evidence first, then answer.Drop a TypeScript file in tools/ and the model can call it — the filename becomes the tool name, no registration required.
import { defineTool } from "eve/tools";
import z from "zod";
export default defineTool({
description: "Get the weather for a city",
inputSchema: z.object({
cityName: z.string(),
}),
async execute(input) {
const res = await fetch(
`${process.env.WEATHER_API_URL}/current?city=${input.cityName}`
);
const data = await res.json();
return data.current_condition[0];
},
});Every agent includes an isolated sandbox. Add sandbox/sandbox.ts to swap in any backend or customize its setup.
import { defineSandbox } from
"eve/sandbox";
export default defineSandbox({
async bootstrap({ sandbox }) {
await sandbox.run(
"git clone repo /workspace"
);
},
});Add channel files to use the same agent in Slack, Discord, Teams, or the web.
import { slackChannel } from
"eve/channels/slack";
export default slackChannel({
botName: "my-agent",
});Connections handle auth for services like GitHub, Stripe, and Linear, so tools can call them without managing tokens.
import { defineMcpClientConnection }
from "eve/connections";
export default defineMcpClientConnection({
url: "https://mcp.linear.app/mcp",
});Add subagents for specialized work. The main agent delegates tasks and combines the results.
import { defineAgent } from
"eve";
export default defineAgent({
description: "Investigate questions",
model: "openai/gpt-5.4",
});Schedules run agents automatically for jobs like daily reports and weekly digests, continuing durably without an active session.
---
cron: "0 8 * * *"
---
Send the user a daily weather
digest for their saved cities.An instructions.md file is all you need to run an agent. Skills, tools, channels, and the rest are optional building blocks you add as it grows.
An instructions.md file is a complete agent. Describe its role in Markdown, then run eve.
# Identity
You are an expert weather assistant.
You can fetch the weather for any
city in the world.Wrap your config with withEve() and the agent mounts into your existing app. Same dev server, same deploy. useEveAgent() finds its routes on its own, so there's no CORS to configure and no URL env vars to keep in sync.
import { withEve } from "eve/next";
const nextConfig = {};
// Agent + app: one dev server, one deploy.
export default withEve(nextConfig);"use client";
import { useEveAgent } from "eve/react";
export function Chat() {
// Same-origin routes, found automatically.
const agent = useEveAgent();
// agent.messages, agent.sendMessage, ...
}Swap any backend and self-host the whole runtime, with zero managed-infrastructure dependencies.
You can deploy anywhere. Postgres-backed durability, Docker sandbox, Ansible deploy, zero managed services. See the example
Durability, sandboxing, human-in-the-loop, and evals are built into the framework. Focus on building your agent.
Workflows survive crashes and restarts. Every step is checkpointed. Agents park when waiting, resume on the next message.
Agents run code in isolated sandboxes. File system access, bash execution, and code, all fully isolated.
One agent codebase deploys to web chat, Slack, API, cron, CLI, and custom apps.
Tools that need confirmation trigger approval gates. Sessions park until resolved, then resume seamlessly.
Delegate specialized work to child agents with their own prompts, tools, and sandbox.
Define test suites with scoring rubrics. Run evals on every deployment and on a schedule.