UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

114 lines (82 loc) 7.27 kB
--- title: "agent.ts" description: "Set the agent's runtime config in agent.ts with defineAgent, including the model and compaction." --- An agent's `agent.ts` calls `defineAgent` (from `eve`) to set its runtime config. ## Set the model A typical config selects a model: ```ts title="agent/agent.ts" import { defineAgent } from "eve"; export default defineAgent({ model: "anthropic/claude-opus-4.8", }); ``` The root `agent.ts` can be omitted when no runtime config is needed. In that case, eve defaults to `anthropic/claude-sonnet-4.6`. When `agent.ts` is present, `model` is required. `model` accepts a gateway model id string, which routes through the [Vercel AI Gateway](https://vercel.com/docs/ai-gateway). To call a provider directly and configure the model in code, pass a provider-authored `LanguageModel`. Provider-specific AI SDK packages are regular project dependencies. A fresh `eve init` app includes the core `ai` package, but it does not install every provider package. Install the provider package you import, then set that provider's API key: ```bash npm install @ai-sdk/anthropic ``` ```ts title="agent/agent.ts" import { anthropic } from "@ai-sdk/anthropic"; import { defineAgent } from "eve"; export default defineAgent({ model: anthropic("claude-opus-4.8"), }); ``` Model use is subject to the terms, data-processing commitments, retention behavior, and available controls of the selected provider and routing path. Review the [AI Gateway model catalog](https://vercel.com/ai-gateway/models) for gateway-routed models, and review the provider's terms when you configure a direct `LanguageModel`. ## Compaction Compaction summarizes older turns as you approach the context window. It's on by default, so you only tune when it kicks in. Lower `thresholdPercent` to compact sooner: ```ts title="agent/agent.ts" export default defineAgent({ model: "anthropic/claude-opus-4.8", compaction: { thresholdPercent: 0.75, // default 0.9 }, }); ``` See [Default harness](./concepts/default-harness#compaction) for how the loop applies it. ## Workflow world By default, eve selects the Workflow SDK world for the host: Vercel Workflow on Vercel, and the SDK's local world in local development or `eve start`. Advanced self-hosted deployments can select the Workflow world package to use from the root `agent.ts`: ```ts title="agent/agent.ts" import { defineAgent } from "eve"; export default defineAgent({ model: "anthropic/claude-opus-4.8", experimental: { workflow: { world: "@workflow/world-postgres", }, }, }); ``` Install that package in your app. It should export a default factory or `createWorld()` function. Put credentials and host-specific options in runtime environment variables read by the world package, not in `agent.ts`. If the installed package must stay external in hosted output, list it in `build.externalDependencies`. ## Other defineAgent fields `defineAgent` takes a few more fields, all optional. For the exported types, see the [TypeScript API](./reference/typescript-api). | Field | Type | Default | Description | | -------------- | ------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `modelOptions` | `AgentModelOptionsDefinition` | none | Provider option overrides forwarded to the model call. | | `experimental` | `{ codeMode?: boolean; workflow?: { world?: string } }` | flags unset | Opt-in flags that can change or disappear in any release. Treat them as unstable. `codeMode` routes executable tools through a sandboxed code-execution wrapper, where the model writes JavaScript that calls the tools inside the [sandbox](./sandbox). `workflow.world` selects the Workflow world package backing session state, queues, hooks, and streams on the root agent. | | `outputSchema` | Standard Schema or a JSON Schema object | none | Structured return type for task-mode runs (a subagent, schedule, or remote job). Interactive conversation turns ignore it unless the client supplies a per-message schema. | | `build` | `{ externalDependencies?: string[] }` | none | Hosted-build packaging controls. `externalDependencies` keeps listed packages external while eve compiles authored modules such as tools and channels, and traces those packages into the hosted output. | `codeMode` is experimental and may change or be removed. `externalDependencies` is a packaging control only. It keeps selected packages as runtime dependencies in the hosted output; it does not authorize, configure, or review any third-party service those packages may call. ## Where adjacent settings live | Concern | Lives in | | ----------------------------- | -------------------------------------------------------------------------------- | | Instructions prompt | `agent/instructions.md`, [Instructions](./instructions) | | Per-tool approval (HITL) | `agent/tools/*.ts`, [Tools](./tools) | | Inbound auth & network policy | the channel layer, [Auth & route protection](./guides/auth-and-route-protection) | | Sandbox / workspace | `agent/sandbox/`, [Sandbox](./sandbox) | | Telemetry & debugging | `agent/instrumentation.ts`, [Instrumentation](./guides/instrumentation) | ## What to read next - [Default harness](./concepts/default-harness) for the loop and built-in tools this config drives - [TypeScript API](./reference/typescript-api) for every `defineAgent` field and type - [Subagents](./subagents) for the `description` requirement and child-agent config