eve / eve-agent-python-template
AGENTS.md5.9k starsChanged 2 days agoApache-2.0View on GitHub
This repository is a web chat for an eve agent with a Python backend. The agent lives in agent/, the Next.js app that serves the chat and the other pages lives in apps/web/, and the FastAPI backend lives in apps/api/. vercel.ts deploys all three as services of one Vercel project. Use Node.js 24, pnpm, and uv. The root package.json holds every JavaScript dependency, and apps/web has no package.json of its own. The backend's Python dependencies are in apps/api/pyproject.toml and apps/api/uv.lock.
- Reads credentials
Trending
More talk lately.about the whole repository
Who's talking about vercel/eve
- @qdrddr.bsky.social“@vercel.com Eve #Agentic #framework uses #filesystem as interface for tools, just drop a #TypeScript code …”Bluesky · Oct 16, 2026 · 8 likes
- @projectnothing.bsky.social“When frameworks like eve break out, it’s a sign: AI agents are no longer side projects—they’re becoming a …”Bluesky · Jun 17, 2026 · 3 likes
- @github-trending-js.bsky.social“📦 vercel / eve ⭐ 5,184 (+40) 🗒 TypeScript The Open Framework for Building Agents”Bluesky · Sep 17, 2026 · 2 likes
- DataDog/dd-trace-js“feat(llmobs): add external experiment recorder”GitHub · Jul 31, 2026 · 2 reactions
- ComposioHQ/composio“chore(deps-dev): bump the npm-development group across 1 directory with 9 updates”GitHub · Nov 6, 2026 · 1 reactions
The biggest 5 of 56 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 56
Talked about on GitHub and Bluesky (56 times).
On GitHub · 49
- Jul 31, 2026feat(llmobs): add external experiment recorder — DataDog/dd-trace-js2 reactions · 5 comments
- Nov 6, 2026chore(deps-dev): bump the npm-development group across 1 directory with 9 updates — ComposioHQ/composio1 reaction · 5 comments
- Nov 3, 2026chore(deps-dev): bump the npm-development group across 1 directory with 8 updates — ComposioHQ/composio1 reaction · 6 comments
- Oct 30, 2026Bump the production-dependencies group across 1 directory with 11 updates — byronwade/rebuzzle.byronwade.com1 reaction · 6 comments
- Oct 30, 2026chore(deps-dev): bump the npm-development group with 7 updates — ComposioHQ/composio1 reaction · 6 comments
44 more on GitHub
- Oct 16, 2026chore(deps-dev): bump the npm-development group across 1 directory with 8 updates — ComposioHQ/composio1 reaction · 6 comments
- Oct 16, 2026chore(deps-dev): bump the npm-development group with 4 updates — ComposioHQ/composio1 reaction · 6 comments
- Oct 13, 2026chore(deps-dev): bump the npm-development group with 3 updates — ComposioHQ/composio1 reaction · 5 comments
- Oct 9, 2026chore(deps-dev): bump the npm-development group across 1 directory with 7 updates — ComposioHQ/composio1 reaction · 6 comments
- Sep 25, 2026chore(deps-dev): bump the npm-development group with 8 updates — ComposioHQ/composio1 reaction · 4 comments
- Sep 14, 2026chore(deps): bump the production-dependencies group across 1 directory with 13 updates — byronwade/rebuzzle.byronwade.com1 reaction · 5 comments
- Sep 11, 2026chore(deps-dev): bump the npm-development group with 5 updates — ComposioHQ/composio1 reaction · 4 comments
- Sep 7, 2026chore(deps): bump the production-dependencies group across 1 directory with 12 updates — byronwade/rebuzzle.byronwade.com1 reaction · 4 comments
- Sep 1, 2026@nuxt/kit missing @nuxt/schema dependency breaks TypeScript with pnpm 12 GVS — nuxt/nuxt1 reaction
- Aug 31, 2026chore(deps): bump the production-dependencies group with 11 updates — byronwade/rebuzzle.byronwade.com1 reaction · 4 comments
- Aug 13, 2026基于 vercel/eve 实现 agents demo 切片 — SawanaLabs/agent-demos1 reaction · 3 comments
- Jul 28, 2026fix(nitro): vercel function rules - preserve relative symlinks — nitrojs/nitro1 reaction · 4 comments
- Jul 3, 2026Add Eve adapter (eve_gateway + eve_local) — paperclipai/paperclip1 reaction · 6 comments
- Jun 30, 2026Install eve skill from vercel/eve — TommyBez/evex1 reaction · 2 comments
- Jun 19, 2026[codex] Read downloads from the sandbox stream — remiconnesson/eve-single-user-agent-starter1 reaction · 1 comment
- Nov 3, 2026[ARCHITECTURE ASSESSMENT] Eve.dev adoption — no control-plane replacement; bounded comparative pilot — mastermindx-market-intelligence/Mastermind0 reactions
- Nov 2, 2026Broken links report — Li-Evan/awesome-jev0 reactions
- Oct 27, 2026Telegram HITL: при нажатии кнопки подтверждения теряется нажавший (auth: null) — в вендоренном eve 0.51.1 нет фикса vercel/eve#4241 — smixs/iva-agent0 reactions · 1 comment
- Oct 26, 2026Broken links report — Li-Evan/awesome-jev0 reactions
- Oct 19, 2026Broken links report — Li-Evan/awesome-jev0 reactions
- Oct 18, 2026T2: Preserve authenticated attachments when continuing copied history — FranciscoMoretti/chat-js0 reactions
- Oct 18, 2026T1/T2: Adopt upstream structured history imports with completed tools and attachments — FranciscoMoretti/chat-js0 reactions
- Oct 17, 2026Research: Eve project primer — setup, models via AI Gateway, approvals, subagents, Next.js mount, deploy — rymanacevedo/business-wiki-agent0 reactions · 2 comments
- Oct 12, 2026Broken links report — Li-Evan/awesome-jev0 reactions
- Oct 11, 2026`vercel dev` stalls silently (no port, no error) when the Next.js dev-manifest config loader exits non-zero — vercel/vercel0 reactions
- Oct 6, 2026Research: custom SPARQL-generation model + separate review layer (prior art: eve + Qwen + Jev data analyst) — wazootech/wazoo-memorybench0 reactions
- Oct 3, 2026[Add] eve (vercel/eve) — PyTorchKR/landscape0 reactions
- Sep 30, 2026Research report - numbered build order, hackathon checklist, runtime pick — VasuBansal7576/return-intelligence-voice0 reactions
- Sep 19, 2026未対応のカードの効果の翻訳を、会話の中で Pull Request として足せるようにする — mokosystem/pokemon-tcg-buddy0 reactions
- Sep 1, 2026sep 2026 — kimtth/azure-openai-llm-notes0 reactions
- Aug 12, 2026Ship an eve and AI SDK memory integration guide — Studio-Moser/Advisaur-MCP0 reactions
- Aug 12, 2026Evaluate eve as a seventh distribution channel — tartinerlabs/skills0 reactions · 2 comments
- Aug 10, 2026epic(ai): the agent harness -- vision, prior art, and the plan to stand behind "or the agent harness itself" — routecraftjs/routecraft0 reactions · 4 comments
- Jul 14, 2026Epic: publish TypeScript SDK and durable Eve approval channel — asiraky/mayi0 reactions · 2 comments
- Jul 13, 2026@ai-sdk/openai: support ordered additional_tools after a normal tool result — vercel/ai0 reactions · 4 comments
- Jul 4, 2026feat(eve): import Agent Runs and OpenTelemetry evidence into fak session ledgers — anthony-chaudhary/fak0 reactions
- Jul 4, 2026test(eve): run eve evals as fak parity and regression witnesses — anthony-chaudhary/fak0 reactions · 7 comments
- Jul 4, 2026feat(eve): lease-gate shared-sandbox subagent fan-out from child session streams — anthony-chaudhary/fak0 reactions · 1 comment
- Jul 4, 2026feat(eve): preflight MCP/OpenAPI connections for scoped auth, allowlists, and approval gates — anthony-chaudhary/fak0 reactions · 1 comment
- Jul 4, 2026feat(eve): compile agent/ directories into fak policy and mount manifests — anthony-chaudhary/fak0 reactions · 1 comment
- Jul 4, 2026epic(eve): Vercel eve integration bridge - filesystem agents, policy lint, evals, and observability — anthony-chaudhary/fak0 reactions
- Jun 23, 2026@vercel/connect/eve: support context-aware Slack installation selection — vercel/vercel0 reactions
- Jun 19, 2026Remove sandbox stream compatibility fix after Eve #117 is released — remiconnesson/eve-single-user-agent-starter0 reactions
- Jun 19, 2026Add Vercel Eve sandbox backend adapter support — sandbox0-ai/sandbox00 reactions
On Bluesky · 7
- Oct 16, 2026@vercel.com Eve #Agentic #framework uses #filesystem as interface for tools, just drop a #TypeScript code into a folder, the filename… — @qdrddr.bsky.social8 likes and reposts · 1 reply
- Jun 17, 2026When frameworks like eve break out, it’s a sign: AI agents are no longer side projects—they’re becoming a new pillar of mainstream software… — @projectnothing.bsky.social3 likes and reposts
- Sep 17, 2026📦 vercel / eve ⭐ 5,184 (+40) 🗒 TypeScript The Open Framework for Building Agents — @github-trending-js.bsky.social2 likes and reposts
- Sep 20, 2026github.com/vercel/eve GitHub - vercel/eve: The Open Framework for Building Agents — @technews4869.bsky.social1 likes and repost
- Aug 11, 2026Cloudflare OS blog: blog.cloudflare.com/cloudflare-os/, github.com/cloudflare/cloudflare-os Vercel eve: vercel.com/blog/introducing-eve ·… — @akash-bhatia.bsky.social1 likes and repost
2 more on Bluesky
- Jul 2, 2026Vercel's eve is a filesystem-first framework for durable AI agents: an agent is a directory of instructions, tools, skills, channels, and… — @agentpalisade.bsky.social1 likes and repost
- Jun 17, 2026The Framework for Building Agents https://github.com/vercel/eve — @laxima-tech.bsky.social1 likes and repost
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository115 other files it gives its agents.
- AGENTS.mdAGENTS.md
- apps/docs/AGENTS.mdAGENTS.md
- apps/templates/eve-agent-python-template/apps/web/AGENTS.mdAGENTS.md
- apps/templates/eve-chat-template/AGENTS.mdAGENTS.md
- apps/templates/eve-coding-agent-template/AGENTS.mdAGENTS.md
- apps/templates/eve-content-agent-template/AGENTS.mdAGENTS.md
- apps/templates/eve-contentful-agent-template/AGENTS.mdAGENTS.md
- apps/templates/eve-data-analyst-template/AGENTS.mdAGENTS.md
- apps/templates/eve-discord-agent-template/AGENTS.mdAGENTS.md
- apps/templates/eve-llm-council-template/AGENTS.mdAGENTS.md
- apps/templates/eve-mem0-template/AGENTS.mdAGENTS.md
- apps/templates/eve-memory-agent-template/AGENTS.mdAGENTS.md
- apps/templates/eve-slack-agent-template/AGENTS.mdAGENTS.md
- apps/templates/eve-software-factory-template/AGENTS.mdAGENTS.md
- apps/templates/eve-sre-agent-template/AGENTS.mdAGENTS.md
- apps/templates/eve-tanstack-start-template/AGENTS.mdAGENTS.md
- apps/templates/eve-vercel-drives-starter/AGENTS.mdAGENTS.md
- apps/templates/eve-voice-template/AGENTS.mdAGENTS.md
- apps/templates/kody-eve-template/AGENTS.mdAGENTS.md
- apps/templates/marketing-team-eve-template/AGENTS.mdAGENTS.md
- apps/templates/openinstinct/AGENTS.mdAGENTS.md
- apps/templates/personal-agent-template/AGENTS.mdAGENTS.md
- apps/templates/sanity-copilot-eve-template/AGENTS.mdAGENTS.md
- apps/templates/slack-company-brain-template/AGENTS.mdAGENTS.md
- packages/eve-agent-desktop/AGENTS.mdAGENTS.md
- packages/eve-code/AGENTS.mdAGENTS.md
- packages/eve-computer-use/AGENTS.mdAGENTS.md
- packages/eve-custom-skills/AGENTS.mdAGENTS.md
- packages/eve-git/AGENTS.mdAGENTS.md
- packages/eve/src/internal/nitro/AGENTS.mdAGENTS.md
- apps/templates/eve-agent-python-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-chat-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-coding-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-content-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-contentful-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-data-analyst-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-discord-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-llm-council-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-mem0-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-memory-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-slack-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-software-factory-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-sre-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-tanstack-start-template/CLAUDE.mdCLAUDE.md
- apps/templates/eve-vercel-drives-starter/CLAUDE.mdCLAUDE.md
- apps/templates/eve-voice-template/CLAUDE.mdCLAUDE.md
- apps/templates/kody-eve-template/CLAUDE.mdCLAUDE.md
- apps/templates/marketing-team-eve-template/CLAUDE.mdCLAUDE.md
- apps/templates/openinstinct/CLAUDE.mdCLAUDE.md
- apps/templates/personal-agent-template/CLAUDE.mdCLAUDE.md
- apps/templates/sanity-copilot-eve-template/CLAUDE.mdCLAUDE.md
- apps/templates/slack-company-brain-template/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- gh-pr-descriptionSkill
- pr-shepherdSkill
- technical-writingSkill
- test-auditSkill
- create-payment-credentialSkill
- dashboard-chat-best-practicesSkill
- eve-chat-template-eveSkill
- The first 60 shown.
The file
We split this AGENTS.md into the rules it gives an agent
10 rules. About 0 are common, 5 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 45
Keep discovery bounded: read the routed documentation and the files needed for the change, then implement.
- Very specific: line 56
Prefer items whose implementation is native.
- Very specific: line 64
Keep strict TypeScript, and change the code to satisfy it.
- Very specific: line 96
Every catalog component needs a renderer in ui-registry.tsx, which TypeScript enforces through defineRegistry.
- Distinctive: line 104
Don't start dev servers yourself.
- Very specific: line 106
When writing deployment instructions for people, use the Vercel CLI, including vercel link, vercel env add, vercel env pull .env.local, and …
- Very specific: line 110
Keep README.md concise, with the setup flow, the technology and customization tables, and short summaries that link to CUSTOMIZATION.md for …
- Distinctive: line 112
Write for a person using the template:
- Distinctive: line 120
Keep commands usable in context.
- Distinctive: line 123
Verify behavior against the code and current CLI help, and reread each section as a whole for contradictions and repetition.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
eve Agent with Python
This repository is a web chat for an eve agent with a Python backend. The agent lives in agent/, the Next.js app that serves the chat and the other pages lives in apps/web/, and the FastAPI backend lives in apps/api/. vercel.ts deploys all three as services of one Vercel project. Use Node.js 24, pnpm, and uv. The root package.json holds every JavaScript dependency, and apps/web has no package.json of its own. The backend's Python dependencies are in apps/api/pyproject.toml and apps/api/uv.lock.
These instructions are for agents maintaining the repository. The agent's behavior is defined in agent/instructions.md and the tools under agent/tools/.
Project map
| Change | Location |
| Agent identity, when to use each tool, and response style | agent/instructions.md |
| Model and session limits | agent/agent.ts |
| Tools | agent/tools/ |
Hooks that react to session events, such as resetting the render_ui guard | agent/hooks/ |
| Backend client used by the agent's tools, and shared with the web app | agent/lib/backend.ts |
| Zod schemas for tasks and Python tool results, shared with the chat's cards | agent/lib/tasks.ts and agent/lib/python-tools.ts |
Components the agent can render with render_ui | agent/lib/ui-catalog.ts, rendered by apps/web/app/_components/ui-registry.tsx, with sortable tables in data-table.tsx and link preview images from apps/web/app/preview-image.ts |
| HTTP channel and caller auth | agent/channels/eve.ts |
| Sandbox and its network policy | agent/sandbox.ts |
| Backend app, routers, and error handlers | apps/api/main.py and apps/api/routers/ |
| Database connection and table creation | apps/api/core/config.py and apps/api/core/db.py |
| Task table and request schemas | apps/api/models/task.py |
| Backend tests | apps/api/tests/ |
| Shared-password tokens, used by the agent and the web app | apps/web/lib/password-auth.ts |
| Access rule and checks for the web app | apps/web/lib/auth-mode.ts, apps/web/proxy.ts, and hasAccess() in apps/web/lib/session.ts |
| Sign-in and sign-out | apps/web/app/login/ |
| Backend client for Server Components, Server Actions, and route handlers | apps/web/lib/backend.ts |
| Backend proxy for client components | apps/web/app/api/backend/[[...path]]/route.ts |
| Chat layout, composer, and session handling | apps/web/app/_components/agent-chat.tsx |
| Messages, tool calls, questions, and approvals | apps/web/app/_components/agent-message.tsx |
| Cards for task and Python tool results | apps/web/app/_components/tool-cards.tsx |
| Tasks, Backend, and API pages | apps/web/app/tasks/, apps/web/app/backend/, and apps/web/app/api-docs/ |
| Header, navigation, and page metadata | apps/web/app/layout.tsx and apps/web/components/nav.tsx |
| Theme colors and global styles | apps/web/app/globals.css |
| Vercel services, routes, and the backend binding | vercel.ts |
| Python lint and format rules | [tool.ruff] in apps/api/pyproject.toml |
| Setup and customization guidance | README.md and CUSTOMIZATION.md |
apps/web/components/ui/ and apps/web/components/ai-elements/ are copies from the shadcn/ui and AI Elements registries, and pnpm dlx shadcn add overwrites them. Make template-specific changes in apps/web/app/, and edit these folders only to fix a defect.
Before implementing changes
Inspect the relevant implementation first. For eve API changes, start with the installed documentation index, then read the page it identifies before authoring tools, connections, channels, skills, subagents, schedules, or deployment. Use eve's published documentation if the installed docs are unavailable. This Next.js version differs from older releases, so read the relevant guide in node_modules/next/dist/docs/ before changing the web app, as apps/web/AGENTS.md describes. For json-render changes, read the READMEs in node_modules/@json-render/core, node_modules/@json-render/react, and node_modules/@json-render/shadcn. Verify other third-party APIs, including FastAPI, SQLModel, and Pydantic, against the installed package or current official documentation rather than relying on recalled signatures.
Keep discovery bounded: read the routed documentation and the files needed for the change, then implement. Follow imports or public types only when they resolve a specific unanswered question. Do not recursively scan node_modules, apps/api/.venv, or unrelated framework pages.
Content-only changes to the agent's instructions do not require framework research. Preserve the configured model unless changing it is part of the request.
For a new external integration, check the eve registry before writing one from scratch:
pnpm exec eve registry search <query> --json
pnpm exec eve registry view <item>Prefer items whose implementation is native. When installation is part of the task, use pnpm exec eve add <item> --non-interactive. Exit code 2 means setup needs an answer or a prerequisite, so read the final NDJSON event and run its next.command. Never pass secrets through --answer.
Implementation conventions
Match the comment density and naming of the surrounding file. Add TSDoc where it helps with types or understanding, such as exported functions, components, and props. Document parameters with @param name - description, meaningful return values with @returns, and thrown errors with @throws.
eve names each tool after its file, so files in agent/tools/ use snake_case. When you add, rename, or remove a tool, update the matching section of agent/instructions.md, and update CARD_RENDERERS in tool-cards.tsx if the tool has a card.
Keep strict TypeScript, and change the code to satisfy it. The repository has no TypeScript linter or formatter, so follow the formatting of nearby code. Python code follows the Ruff rules in apps/api/pyproject.toml, with a line length of 100.
apps/web imports several agent/lib/ modules through relative paths, and agent/channels/eve.ts imports apps/web/lib/password-auth.ts. Keep those boundaries intact:
agent/lib/tasks.ts,agent/lib/python-tools.ts, andagent/lib/ui-catalog.tsload in the browser, so keep them free of eve runtime, backend, and Node.js imports.agent/lib/backend.tsloads in the web app's server code, so keep it free of eve runtime imports.apps/web/lib/password-auth.tsloads in the agent, so keep it free of Next.js imports.
The zod schemas in agent/lib/tasks.ts and agent/lib/python-tools.ts mirror the Pydantic response models in apps/api/. Change both sides together, and add or update a backend test.
Server Actions run from any route, so each one starts with hasAccess() from apps/web/lib/session.ts, validates its arguments, and returns { error } instead of throwing, because Next.js hides thrown messages in production. Files marked "use server" may export only async functions and types, so put shared helpers in a plain module that imports server-only.
The web app uses Cache Components with Partial Prefetching. Pages render a static shell and await backend data inside <Suspense>, as apps/web/app/tasks/page.tsx does. Pages that export instant = true ask the dev overlay to flag anything that would block navigation. Code that reads the clock or the request, such as session checks, calls connection() first so it never runs during prerendering.
Backend routes sit at the root, with no /api prefix, because the binding calls the service directly. App endpoints live under /v1, and Python tools for the agent live under /tools. The backend creates missing tables on its first database request, under a Postgres advisory lock so concurrent instances don't race. Without DATABASE_URL, a deployment answers database requests with 503 through DatabaseNotConfiguredError. The httpx2 development dependency is required by FastAPI's test client.
Access control to preserve
- The auth order in
agent/channels/eve.tsispasswordAuth,vercelOidc(), thenlocalDev().passwordAuthreturnsnullwhen the session cookie is missing or invalid, and eve rejects requests that no check accepts. apps/web/lib/password-auth.tssignsv1.<expiresAt>tokens with HMAC-SHA256 keyed onEVE_CHAT_PASSWORD, so changing the password revokes every session. Sessions last 30 days, and comparisons run in constant time. Keep the cookie httpOnly,SameSite=Lax, and secure in production.getAuthModereturnslocal-devonly undernext devorvercel devwithout a password. Without a password, a deployed app returnsunconfiguredand fails closed.isAuthorizedis the single access rule thatproxy.tsandhasAccess()share.- The
proxy.tsmatcher excludes whole paths only:/loginwith its subpaths and its RSC and prefetch variants,_next/static,_next/image,favicon.ico, andicon.svg. Keep new exclusions anchored so a path such as/loginsstays gated. safeNextinapps/web/app/login/actions.tsallows only same-origin paths after sign-in.apps/web/app/preview-image.tsfetches only https URLs on host names, and itspublicLookuprefuses any host that resolves to a private, loopback, link-local, or reserved address. Keep both checks for every redirect.- The chat checks
/api/auth/statuswhen the agent responds with a 401, and redirects to/loginwhen the web app also answers 401.
Generated UI to preserve
uiSpecSchemainagent/lib/ui-catalog.tsvalidates each element's props against its component, which the catalog's own schema doesn't. Therender_uitool uses it as its input schema, and the chat parses tool calls with it before rendering.- Image props use the catalog's
httpsUrlschema and link props usewebUrl, andui-registry.tsxchecks both again before rendering. Use them for any new URL prop. - The
render_uitool description lists every component's description and props, and names the components that accept children. Catalog descriptions are written for the model. uiSpecSchemaalso rejects aResultCardthat isn't a child of aCardRow, so result cards always render as a scrolling row.- Every catalog component needs a renderer in
ui-registry.tsx, which TypeScript enforces throughdefineRegistry. - The model tends to repeat UI contents in its text reply. Three places guard against it: the Response style section of
agent/instructions.mdlimits the reply to one sentence afterrender_ui, the tool description says the same, and the tool's result reminds the model that the person can already see the UI. Keep all three when changing any of them. The Tasks and Python tools sections of the instructions say the same about tool cards. - The reply after
render_uimust be one sentence, never empty, or the model may callrender_uiagain.render_uirecords the turn it ran in withlastRenderedTurninagent/lib/ui-state.tsand rejects a second call in the same turn. The hook inagent/hooks/reset-render-guard.tsresets the guard when the person sends a message or answers a question or approval, since eve keeps the same turn open across that input.
Local and hosted behavior
pnpm dev:all starts vercel dev --local, which runs all three services, routes /eve/v1/* to the agent, and sets BACKEND_URL. pnpm dev:web, pnpm dev:eve, and pnpm dev:api run one service each, and the web app and the agent fall back to http://127.0.0.1:8000 for the backend. pnpm dev:eve opens eve's terminal chat. During local development, localDev() accepts every agent request, and the app opens without a password when EVE_CHAT_PASSWORD is unset. Without DATABASE_URL, the backend stores tasks in apps/api/.data/dev.sqlite3. Local sessions use just-bash, which runs in process with no network isolation, and deployed sessions use Vercel Sandbox with outbound network access denied.
Don't start dev servers yourself. Ask the person to run them and report what they see.
When writing deployment instructions for people, use the Vercel CLI, including vercel link, vercel env add, vercel env pull .env.local, and vercel deploy --prod. Confirm unfamiliar flags with --help. Provisioning services or deploying the app is separate from checking code and documentation.
Documentation standards
Keep README.md concise, with the setup flow, the technology and customization tables, and short summaries that link to CUSTOMIZATION.md for detailed procedures. Preserve working examples and previously accepted wording when revising a section.
Write for a person using the template:
- Name the kind of thing on first use, such as "the
EVE_CHAT_PASSWORDenvironment variable" or "therender_uitool", and say what it controls before showing it. State what happens when a value is unset. - Explain terms on first use. Prefer plain descriptions to implementation terms.
- Frame guidance positively. Say what to do and what happens, such as "Deploy with
vercel deploy --prod, which keeps your.env.localfile as it is." - Connect related ideas naturally, and keep introductions to the essentials. Leave out filler and stock phrases such as "seamless", "robust", and "leverage", along with em dashes, "not just X but Y", forced groups of three, parenthetical asides, bold lead-ins, colons joining two sentences, and sentences beginning with "A" or "An".
- Bold exact UI labels, such as Tasks. Use inline code for files, commands, identifiers, environment variables, and values.
- Lowercase Vercel environment names mid-sentence, such as "preview" and "production".
- Keep commands usable in context. Identify required input and explain how to recognize success.
- In
README.mdandCUSTOMIZATION.md, avoid paragraphs and list items whose last line on GitHub holds only one or two words.
Verify behavior against the code and current CLI help, and reread each section as a whole for contradictions and repetition.
Validation
Choose checks that establish the changed behavior.
| Command | Purpose |
pnpm typecheck | TypeScript checks for the agent, the web app, and vercel.ts |
pnpm test | Backend tests with pytest |
pnpm lint:api | Ruff lint and format checks for the backend |
pnpm build | Production build of the agent and the web app |
pnpm build:eve | Production build of the agent |
pnpm build:web | Production build of the web app |
Run pnpm typecheck after every TypeScript change, and pnpm test and pnpm lint:api after every backend change. Run pnpm build:web when changing pages, Server Actions, styles, or dependencies of the web app, since some Next.js rules are checked only at build time. State which checks ran and what remains untested in a browser.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

