Template. Fork it, customize it, and deploy your own personal agent.
Open source personal agent template. Web chat, Slack, Linear, and long-term memory — one codebase, durable sessions, user-approved memory saves.
Chat with your agent in the browser. Threads resume across sessions, tool calls render in real time, and save_memory proposals require explicit approval before anything is stored.
DMs and @mentions on Slack. Link your Slack account to your web profile so memory and context follow you across channels.
Connect Linear via Vercel Connect MCP. Ask about issues, projects, and cycles — the agent queries Linear tools, never guesses from memory.
Raycast-style import from ChatGPT or other assistants. Five fixed categories, one prose block each. Edit, delete, or let the agent propose updates via save_memory.
Morning briefing skill: active focus from 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 + SQLite) │
└───────────────────────────────┬─────────────────────────────────┘
▼
Vercel Connect (Linear, Slack)
On Vercel, two services deploy from vercel.json: web (Nuxt) and eve (agent runtime).
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
Long-term memory is injected into every Eve session for authenticated users (web and linked Slack).
- Open Profile → Import Memory
- Copy the export prompt into ChatGPT, Claude, etc.
- Paste the response → Add to Memory
- Start a new chat so the agent picks up the latest context
V can also propose facts via save_memory — approve or skip in chat. Edit or delete entries on Profile → Memory.
For the full technical deep-dive, see Architecture.
- Auth: Users sign in via Better Auth (email/password)
- Session start: Eve fetches profile + memory and injects into agent instructions
- Chat: Web UI streams through Eve; Slack events hit the slack channel
- Tools: Agent calls weather, save_memory, Linear MCP as needed
- Internal API: Agent reads/writes memory and Slack links via authenticated Nitro routes
pnpm dev # Start Nuxt + Eve dev server
pnpm typecheck # TypeScript check
pnpm build # Production build
pnpm db:generate # Generate Drizzle migrations
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 — SQLite database
- Better Auth — Authentication
- Drizzle ORM — Type-safe database queries
- Vercel Connect — Linear and Slack integrations
See CONTRIBUTING.md for how to get involved.
