{"slug": "eve-dev-next-js-for-agents", "title": "Eve.dev: Next.js for Agents", "summary": "Eve.dev launches a framework for building durable AI agents using a single instructions.md file, with optional modular components for skills, tools, channels, and subagents. The framework supports self-hosting, Postgres-backed durability, and integration with existing apps via Next.js, aiming to simplify agent development similar to Next.js for web apps.", "body_md": "Like Next.js for agents. Build durable agents with one folder.\n\nAn 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.\n\nAn instructions.md file is a complete agent. Describe its role in Markdown, then run eve.\n\n```\n# Identity\n\nYou are an expert weather assistant.\nYou can fetch the weather for any\ncity in the world.\n```\n\neve uses a default model. Add agent.ts when you want to choose a model or configure the runtime.\n\n``` js\nimport { defineAgent } from \"eve\";\n\nexport default defineAgent({\n  model: \"openai/gpt-5.4-mini\",\n});\n```\n\nSkills are Markdown playbooks loaded only when relevant, so the agent gets focused guidance without carrying it in every prompt.\n\n```\n---\nname: research\ndescription: Research unfamiliar topics\n---\n\nWhen the task is novel or ambiguous,\ngather evidence first, then answer.\n```\n\nDrop a TypeScript file in tools/ and the model can call it — the filename becomes the tool name, no registration required.\n\n``` python\nimport { defineTool } from \"eve/tools\";\nimport z from \"zod\";\n\nexport default defineTool({\n  description: \"Get the weather for a city\",\n  inputSchema: z.object({\n    cityName: z.string(),\n  }),\n  async execute(input) {\n    const res = await fetch(\n      `${process.env.WEATHER_API_URL}/current?city=${input.cityName}`\n    );\n    const data = await res.json();\n    return data.current_condition[0];\n  },\n});\n```\n\nEvery agent includes an isolated sandbox. Add sandbox/sandbox.ts to swap in any backend or customize its setup.\n\n``` js\nimport { defineSandbox } from\n  \"eve/sandbox\";\n\nexport default defineSandbox({\n  async bootstrap({ sandbox }) {\n    await sandbox.run(\n      \"git clone repo /workspace\"\n    );\n  },\n});\n```\n\nAdd channel files to use the same agent in Slack, Discord, Teams, or the web.\n\n``` js\nimport { slackChannel } from\n  \"eve/channels/slack\";\n\nexport default slackChannel({\n  botName: \"my-agent\",\n});\n```\n\nConnections handle auth for services like GitHub, Stripe, and Linear, so tools can call them without managing tokens.\n\n``` js\nimport { defineMcpClientConnection }\n  from \"eve/connections\";\n\nexport default defineMcpClientConnection({\n  url: \"https://mcp.linear.app/mcp\",\n});\n```\n\nAdd subagents for specialized work. The main agent delegates tasks and combines the results.\n\n``` js\nimport { defineAgent } from\n  \"eve\";\n\nexport default defineAgent({\n  description: \"Investigate questions\",\n  model: \"openai/gpt-5.4\",\n});\n```\n\nSchedules run agents automatically for jobs like daily reports and weekly digests, continuing durably without an active session.\n\n```\n---\ncron: \"0 8 * * *\"\n---\n\nSend the user a daily weather\ndigest for their saved cities.\n```\n\nAn 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.\n\nAn instructions.md file is a complete agent. Describe its role in Markdown, then run eve.\n\n```\n# Identity\n\nYou are an expert weather assistant.\nYou can fetch the weather for any\ncity in the world.\n```\n\nWrap 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.\n\n``` js\nimport { withEve } from \"eve/next\";\n\nconst nextConfig = {};\n\n// Agent + app: one dev server, one deploy.\nexport default withEve(nextConfig);\njs\n\"use client\";\nimport { useEveAgent } from \"eve/react\";\n\nexport function Chat() {\n  // Same-origin routes, found automatically.\n  const agent = useEveAgent();\n  // agent.messages, agent.sendMessage, ...\n}\n```\n\nSwap any backend and self-host the whole runtime, with zero managed-infrastructure dependencies.\n\nYou can deploy anywhere. Postgres-backed durability, Docker sandbox, Ansible deploy, zero managed services. [See the example](https://github.com/vercel-labs/steve)\n\nDurability, sandboxing, human-in-the-loop, and evals are built into the framework. Focus on building your agent.\n\nWorkflows survive crashes and restarts. Every step is checkpointed. Agents park when waiting, resume on the next message.\n\nAgents run code in isolated sandboxes. File system access, bash execution, and code, all fully isolated.\n\nOne agent codebase deploys to web chat, Slack, API, cron, CLI, and custom apps.\n\nTools that need confirmation trigger approval gates. Sessions park until resolved, then resume seamlessly.\n\nDelegate specialized work to child agents with their own prompts, tools, and sandbox.\n\nDefine test suites with scoring rubrics. Run evals on every deployment and on a schedule.", "url": "https://wpnews.pro/news/eve-dev-next-js-for-agents", "canonical_source": "https://eve.dev/", "published_at": "2026-07-26 06:27:47+00:00", "updated_at": "2026-07-26 06:52:46.512044+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-infrastructure"], "entities": ["Eve.dev", "Next.js", "OpenAI", "GitHub", "Stripe", "Linear", "Vercel"], "alternates": {"html": "https://wpnews.pro/news/eve-dev-next-js-for-agents", "markdown": "https://wpnews.pro/news/eve-dev-next-js-for-agents.md", "text": "https://wpnews.pro/news/eve-dev-next-js-for-agents.txt", "jsonld": "https://wpnews.pro/news/eve-dev-next-js-for-agents.jsonld"}}