Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vercel/eve/llms.txt

Use this file to discover all available pages before exploring further.

eve builds an agent by walking the filesystem under agent/. Each directory is an authored slot, and the slot a file lands in determines how eve loads it. There are no registries, no config arrays, and no name fields to maintain — the path is the identity.

Naming rule

Identity comes from the path. You never write a name or id field on a define* call.
PathResolves to
agent/tools/get_weather.tstool get_weather
agent/connections/linear.tsconnection linear
agent/skills/summarize.mdskill summarize
agent/subagents/researcher/agent.tssubagent researcher
The root agent takes its name from the enclosing package.json name field, falling back to the app-root directory name when package.json has no name. A subagent takes its name from its directory.
my-agent/
├── package.json
├── tsconfig.json
├── agent/
│   ├── agent.ts
│   ├── instructions.md
│   ├── instrumentation.ts
│   ├── channels/
│   ├── connections/
│   ├── hooks/
│   ├── skills/
│   ├── lib/
│   ├── sandbox/
│   ├── tools/
│   ├── schedules/
│   └── subagents/
└── evals/
evals/ lives at the app root — a sibling of agent/, not inside it.

Slot table

The Subagents column states whether a local subagent (under subagents/<id>/) can author this slot. A declared subagent inherits nothing from the root; it discovers its own slots independently.
PathDescriptionSubagents?Notes
agent.tsRuntime configYesDeclares model, modelOptions, compaction, build, and experimental config. See Agent Config.
instructions.md / instructions.ts / instructions/Base system promptOptionalA flat file, or a directory of .md and .ts files. Static sources compose at build time. Dynamic sources (defineDynamic + defineInstructions) resolve at runtime. Required on the root, optional on subagents.
instrumentation.tsTelemetry configNoOTel exporter and AI SDK span settings. Auto-discovered and run before any agent code. Root-only.
channels/HTTP / messaging entrypointsNoEach file is a channel definition (defineChannel or a platform factory). Root-only.
connections/External service connections (MCP, OpenAPI)YesOne connection per file; name derived from filename.
hooks/Lifecycle and stream-event subscribersYesModule-backed only. Recursive directories supported.
skills/On-demand procedures and capability packsYesFlat markdown, module-backed skills, or packaged skills. Seeded into /workspace/skills/... at runtime.
lib/Shared authored helper codeYesImport-only; never mounted into the runtime workspace.
sandbox.ts or sandbox/sandbox.tsThe agent’s single sandbox definitionYesUse top-level sandbox.ts for a definition-only override; use sandbox/sandbox.ts + sandbox/workspace/** to also seed files into the workspace. Framework default applies when neither is authored.
sandbox/workspace/**Files seeded into the sandbox at session startYesMirrored into /workspace/... at session bootstrap.
tools/Typed executable integrationsYesModule-backed only.
schedules/Recurring jobsNoEach schedule is <name>.ts (default-exports defineSchedule) or <name>.md (frontmatter cron: + prompt body). Recursive nesting supported. Root-only.
subagents/Specialist child agentsYesEach child is its own local package under subagents/<id>/. Nested subagents are supported.

What reaches the runtime workspace

eve does not mount the entire agent/ tree into the sandbox. Only two sources land in the sandbox workspace at runtime:
SourceDestination
agent/skills//workspace/skills/...
agent/sandbox/workspace/**/workspace/... (at session bootstrap)
Everything in lib/ stays import-only source code and never reaches the workspace.
Do not rely on lib/ files being present inside the sandbox at runtime. They are available to your TypeScript code at build and runtime through normal imports, but are not written to /workspace/.

Local subagent layout

A local subagent lives under subagents/<id>/ and uses the same agent.ts shape as the root.
agent/subagents/researcher/
├── agent.ts
├── instructions.md
├── connections/
├── hooks/
├── skills/
├── lib/
├── sandbox/
├── tools/
└── subagents/
Rules for local subagents:
  • agent.ts is required and must declare a description. The parent reads this description on the lowered subagent tool to decide when to delegate.
  • instructions.md / instructions.ts is optional — unlike the root agent, where it is required.
  • connections/, hooks/, skills/, lib/, sandbox/, and tools/ are all supported and discovered from the subagent’s own directory.
  • channels/ and schedules/ are not supported inside local subagents.
  • Nested subagents are supported.

Flat layout

Supported when the app root is also the agent root:
my-agent/
├── package.json
├── agent.ts
├── instructions.md
├── tools/
└── skills/
Prefer the nested layout. It keeps the app root separate from the authored surface and makes it easier to add channels, evals, and other top-level concerns later.

Path-derived naming examples

PathNameType
agent/tools/search_web.tssearch_webTool
agent/tools/github/create_pr.tsgithub/create_prTool
agent/connections/stripe.tsstripeConnection
agent/skills/summarize.mdsummarizeSkill
agent/skills/research/deep_dive.tsresearch/deep_diveSkill
agent/hooks/on_turn_start.tson_turn_startHook
agent/schedules/daily_digest.tsdaily_digestSchedule
agent/subagents/writer/agent.tswriterSubagent
agent/subagents/writer/subagents/editor/agent.tseditor (child of writer)Nested subagent

Debugging: why didn’t eve discover my file?

Run eve info. It lists the discovered surface and prints discovery diagnostics. From there, check that the file sits in the correct authored slot and that the root-vs-subagent boundary is valid. eve also writes inspectable artifacts under .eve/ — see the CLI reference for the full artifact list.

TypeScript API

The define* helpers and where they import from

CLI Reference

eve info, build, dev, and deploy commands

Build docs developers (and LLMs) love