IntroductionGetting Started

agent.tsInstructions
Skills
SandboxSubagentsSchedules

The framework for building agents

Like Next.js for agents. Build durable agents with one folder.

$npx eve@latest init my-agent

agent/ is a directory

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.

instructions.md

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.
agent.tsoptional

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/research.mdoptional

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.
tools/get_weather.tsoptional

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];
  },
});
sandbox/sandbox.tsoptional

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"
    );
  },
});
channels/slack.tsoptional

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/linear.tsoptional

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",
});
subagents/researcher/agent.tsoptional

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/daily-report.mdoptional

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.

Works natively with Next.js

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.

next.config.ts
import { withEve } from "eve/next";

const nextConfig = {};

// Agent + app: one dev server, one deploy.
export default withEve(nextConfig);
app/chat.tsx
"use client";
import { useEveAgent } from "eve/react";

export function Chat() {
  // Same-origin routes, found automatically.
  const agent = useEveAgent();
  // agent.messages, agent.sendMessage, ...
}

Built on open-source SDKs, yours to self-host

Swap any backend and self-host the whole runtime, with zero managed-infrastructure dependencies.

(example)
RuntimeDurable execution, state persistence, event streaming
Durable WorkflowCheckpointed steps, park between messages, resume on delivery
Postgres (@workflow/world-postgres)
AI SDKModel calls, streaming
GPT-5.4 API
SandboxIsolated execution
Docker
ConnectionMCP/HTTP endpoints
Snowflake API
Tools & SubagentsFunctions, child agents

You can deploy anywhere. Postgres-backed durability, Docker sandbox, Ansible deploy, zero managed services. See the example

Everything you need for production agents

Durability, sandboxing, human-in-the-loop, and evals are built into the framework. Focus on building your agent.

  • Durable Execution

    Workflows survive crashes and restarts. Every step is checkpointed. Agents park when waiting, resume on the next message.

  • Sandboxed Compute

    Agents run code in isolated sandboxes. File system access, bash execution, and code, all fully isolated.

  • Multi-Channel Delivery

    One agent codebase deploys to web chat, Slack, API, cron, CLI, and custom apps.

  • Human-in-the-Loop

    Tools that need confirmation trigger approval gates. Sessions park until resolved, then resume seamlessly.

  • Subagents

    Delegate specialized work to child agents with their own prompts, tools, and sandbox.

  • Evaluations

    Define test suites with scoring rubrics. Run evals on every deployment and on a schedule.

Build your first agent today.

Get started