Personal Agent Template
Template. Fork it, customize it, and deploy your own personal agent.
Open source personal agent template. Web chat, Slack, iMessage, Linear, and long-term memory — one codebase, durable sessions, user-approved memory saves.
Features
Web Chat — Threads That Persist
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.
Slack — Same Agent, Different Surface
DMs and @mentions on Slack. Link your Slack account to your web profile so memory and context follow you across channels.
iMessage — Text Your Agent
Reach V over iMessage via Sendblue. Add your phone number in Profile, then message the Sendblue line — same memory and context as web and Slack.
Linear — Issues On Demand
Connect Linear via Vercel Connect MCP. Ask about issues, projects, and cycles — the agent queries Linear tools, never guesses from memory.
Long-Term Memory — Import and Grow
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.
Daily Summary — On Demand
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.
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Web chat · Slack DMs / mentions · iMessage │
└───────────────────────────────┬─────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 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).
Quick Start
Deploy to Vercel
Self-hosting
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 dev
Open 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 + eve
See ENVIRONMENT.md for the full reference.
Fresh local database:
rm -rf .data/db && pnpm db:migrate
Customization
Personal 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, iMessage, and Linear integrations
- Theme the UI
- Deploy your fork
Memory
Long-term memory is injected into every Eve session for authenticated users (web, linked Slack, and iMessage).
- 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.
How It Works
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; iMessage via Sendblue
- Tools: Agent calls weather, save_memory, Linear MCP as needed
- Internal API: Agent reads/writes memory, Slack links, and phone links via authenticated Nitro routes
Development
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 migrations
See AGENTS.md for notes aimed at AI coding assistants.
Built With
- 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
Contributing
See CONTRIBUTING.md for how to get involved.