Personal Agent Template
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.
Features
Web Chat — Threads That Persist
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.
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.
GitHub — Repos, PRs, and CI
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.
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.
Persistent Memory — Eve's Memory Slot
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.
Daily Summary — On Demand
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.
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ 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.
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 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:migrateCustomization
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 and Linear integrations
- Theme the UI
- Deploy your fork
Memory
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.
How It Works
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
Development
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.
Built With
- 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
Contributing
See CONTRIBUTING.md for how to get involved.