Template. Fork it, customize it, and deploy your own personal agent.
Open source personal agent template. Web chat, Slack, GitHub, Linear, and persistent memory — one codebase, durable sessions.
Chat with your agent in the browser. Threads resume across sessions and tool calls render in real time. Eve holds the transcript, so the app stores a session id and nothing else.
DMs and @mentions on Slack. Link your Slack account to your web profile so memory and context follow you across channels.
Connect GitHub via Vercel Connect. Ask about repositories, pull requests, issues, and workflows — the agent mounts the @github-tools/eve-extension tools with durable approval on writes.
Connect Linear via Vercel Connect MCP. Ask about issues, projects, and cycles — the agent queries Linear tools, never guesses from memory.
A bounded, model-maintained list of durable facts, scoped per user by Eve's fileMemory() provider. Recalled before every turn and after compaction; the agent saves and removes entries as the conversation warrants.
Morning briefing skill: active focus from recalled memory, assigned Linear issues, and a suggested next action. Trigger from the home quick action or ask in chat.
┌─────────────────────────────────────────────────────────────────┐
│ Web chat · Slack DMs / mentions │
└───────────────────────────────┬─────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ Eve agent (channels, tools, skills) │
└───────────────────────────────┬─────────────────────────────────┘
│ /api/internal/* (Bearer auth)
▼
┌─────────────────────────────────────────────────────────────────┐
│ Nuxt (UI + Nitro API + Better Auth + PostgreSQL) │
└───────────────────────────────┬─────────────────────────────────┘
▼
Vercel Connect (Linear, Slack)
On Vercel the deployment splits into two services: web (Nuxt) and eve (agent runtime). The eve/nuxt module generates the eve service and its /eve/v1/* route during the build — nothing to declare in vercel.json.
Requirements: Node.js 24+, pnpm
git clone https://github.com/vercel-labs/personal-agent-template.git
cd personal-agent-template
pnpm install
cp .env.example .env
pnpm db:migrate
pnpm devOpen http://localhost:3000, create an account, and start chatting.
Required environment variables:
BETTER_AUTH_SECRET=... # openssl rand -base64 32
BETTER_AUTH_URL=http://localhost:3000
INTERNAL_API_SECRET=... # openssl rand -base64 32 — same on web + eveSee ENVIRONMENT.md for the full reference.
Fresh local database:
rm -rf .data/db && pnpm db:migratePersonal Agent Template ships with V as the example persona. See the Customization Guide for how to:
- Rename your agent (name, slug, persona)
- Change the AI model
- Add tools and skills
- Configure Slack and Linear integrations
- Theme the UI
- Deploy your fork
The profile slot (agent/memory/profile.ts) binds Eve's fileMemory() provider to one document per authenticated principal. Eve recalls it before every turn and after compaction, and gives the agent profile__save_memory and profile__remove_memory to maintain it.
Documents live in private Vercel Blob storage — attach a Blob store to the project before deploying.
For the full technical deep-dive, see Architecture.
- Auth: Users sign in via Better Auth (email/password)
- Each turn: Eve recalls the
profilememory slot for the authenticated principal - Chat: Web UI streams through Eve; Slack events hit the slack channel
- Tools: Agent calls weather, GitHub, Linear MCP and its memory tools as needed
- Internal API: Agent reads Slack and phone links via authenticated Nitro routes
pnpm dev # Nuxt + Eve (eve/nuxt module — see Eve docs)
pnpm typecheck # TypeScript check
pnpm build # Production build
pnpm db:generate # Regenerate the auth schema, then the migration
pnpm db:migrate # Apply migrationsSee AGENTS.md for notes aimed at AI coding assistants.
- Eve — Durable agent framework
- Nuxt — Full-stack Vue framework
- Nuxt UI — UI component library
- NuxtHub — PostgreSQL database
- Better Auth — Authentication
- Drizzle ORM — Type-safe database queries
- Vercel Connect — Linear and Slack integrations
See CONTRIBUTING.md for how to get involved.
