{"id":52001014,"url":"https://github.com/vercel-labs/personal-agent-template","last_synced_at":"2026-07-31T11:02:13.935Z","repository":{"id":365665945,"uuid":"1266313328","full_name":"vercel-labs/personal-agent-template","owner":"vercel-labs","description":"Open-source template for a durable personal AI agent — web chat, Slack, Linear, and long-term memory with user-approved saves. Eve, Nuxt, Better Auth, Vercel Connect.","archived":false,"fork":false,"pushed_at":"2026-07-07T12:55:11.000Z","size":1729,"stargazers_count":412,"open_issues_count":2,"forks_count":40,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-07T14:20:09.123Z","etag":null,"topics":["ai-agents","better-auth","eve","linear","memory","nuxt","personal-agent","slack","vercel-connect"],"latest_commit_sha":null,"homepage":"https://personal-agent-template.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vercel-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-11T13:59:55.000Z","updated_at":"2026-07-06T06:33:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vercel-labs/personal-agent-template","commit_stats":null,"previous_names":["vercel-labs/personal-agent-template"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/vercel-labs/personal-agent-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel-labs%2Fpersonal-agent-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel-labs%2Fpersonal-agent-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel-labs%2Fpersonal-agent-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel-labs%2Fpersonal-agent-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vercel-labs","download_url":"https://codeload.github.com/vercel-labs/personal-agent-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel-labs%2Fpersonal-agent-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36115842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-31T02:00:06.731Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","better-auth","eve","linear","memory","nuxt","personal-agent","slack","vercel-connect"],"created_at":"2026-07-31T11:02:12.488Z","updated_at":"2026-07-31T11:02:13.920Z","avatar_url":"https://github.com/vercel-labs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"./public/banner.png\" width=\"100%\" alt=\"Personal Agent Template\" /\u003e\n\n# Personal Agent Template\n\n[![CI](https://img.shields.io/github/actions/workflow/status/vercel-labs/personal-agent-template/ci.yml?branch=main\u0026color=black)](https://github.com/vercel-labs/personal-agent-template/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/github/license/vercel-labs/personal-agent-template?color=black)](https://github.com/vercel-labs/personal-agent-template/blob/main/LICENSE)\n[![Vercel](https://img.shields.io/badge/Vercel-black?logo=vercel\u0026logoColor=white)](https://vercel.com)\n\n**Template.** Fork it, customize it, and deploy your own personal agent.\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel-labs%2Fpersonal-agent-template\u0026env=BETTER_AUTH_SECRET,BETTER_AUTH_URL,INTERNAL_API_SECRET\u0026envDescription=BETTER_AUTH_SECRET%3A%20run%20openssl%20rand%20-base64%2032%20%7C%20BETTER_AUTH_URL%3A%20your%20production%20URL%20%7C%20INTERNAL_API_SECRET%3A%20shared%20secret%20for%20web%20%2B%20eve\u0026envLink=https%3A%2F%2Fgithub.com%2Fvercel-labs%2Fpersonal-agent-template%2Fblob%2Fmain%2Fdocs%2FENVIRONMENT.md\u0026stores=%5B%7B%22type%22%3A%22integration%22%2C%22integrationSlug%22%3A%22tursocloud%22%2C%22productSlug%22%3A%22database%22%2C%22protocol%22%3A%22storage%22%7D%5D\u0026project-name=personal-agent\u0026repository-name=personal-agent)\n\nOpen source personal agent template. Web chat, Slack, iMessage, GitHub, Linear, and long-term memory — one codebase, durable sessions, user-approved memory saves.\n\n## Features\n\n### Web Chat — Threads That Persist\n\nChat 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.\n\n### Slack — Same Agent, Different Surface\n\nDMs and @mentions on Slack. Link your Slack account to your web profile so memory and context follow you across channels.\n\n### iMessage — Text Your Agent\n\nReach V over iMessage via [Sendblue](https://chat-sdk.dev/adapters/vendor-official/sendblue). Add your phone number in **Profile**, then message the Sendblue line — same memory and context as web and Slack.\n\n### GitHub — Repos, PRs, and CI\n\nConnect GitHub via Vercel Connect. Ask about repositories, pull requests, issues, and workflows — the agent uses [@github-tools/sdk](https://github-tools.com/frameworks/eve) tools with durable approval on writes.\n\n### Linear — Issues On Demand\n\nConnect Linear via Vercel Connect MCP. Ask about issues, projects, and cycles — the agent queries Linear tools, never guesses from memory.\n\n### Long-Term Memory — Import and Grow\n\nRaycast-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`.\n\n### Daily Summary — On Demand\n\nMorning briefing skill: active focus from memory, assigned Linear issues, and a suggested next action. Trigger from the home quick action or ask in chat.\n\n## [Architecture](./docs/ARCHITECTURE.md)\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│              Web chat · Slack DMs / mentions · iMessage           │\n└───────────────────────────────┬─────────────────────────────────┘\n                                ▼\n┌─────────────────────────────────────────────────────────────────┐\n│              Eve agent (channels, tools, skills)                 │\n└───────────────────────────────┬─────────────────────────────────┘\n                                │ /api/internal/* (Bearer auth)\n                                ▼\n┌─────────────────────────────────────────────────────────────────┐\n│         Nuxt (UI + Nitro API + Better Auth + SQLite)           │\n└───────────────────────────────┬─────────────────────────────────┘\n                                ▼\n                      Vercel Connect (Linear, Slack)\n```\n\nOn Vercel, two services deploy from [`vercel.json`](vercel.json): `web` (Nuxt) and `eve` (agent runtime).\n\n## Quick Start\n\n### Deploy to Vercel\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel-labs%2Fpersonal-agent-template\u0026env=BETTER_AUTH_SECRET,BETTER_AUTH_URL,INTERNAL_API_SECRET\u0026envDescription=BETTER_AUTH_SECRET%3A%20run%20openssl%20rand%20-base64%2032%20%7C%20BETTER_AUTH_URL%3A%20your%20production%20URL%20%7C%20INTERNAL_API_SECRET%3A%20shared%20secret%20for%20web%20%2B%20eve\u0026envLink=https%3A%2F%2Fgithub.com%2Fvercel-labs%2Fpersonal-agent-template%2Fblob%2Fmain%2Fdocs%2FENVIRONMENT.md\u0026stores=%5B%7B%22type%22%3A%22integration%22%2C%22integrationSlug%22%3A%22tursocloud%22%2C%22productSlug%22%3A%22database%22%2C%22protocol%22%3A%22storage%22%7D%5D\u0026project-name=personal-agent\u0026repository-name=personal-agent)\n\n### Self-hosting\n\n**Requirements:** Node.js 24+, pnpm\n\n```bash\ngit clone https://github.com/vercel-labs/personal-agent-template.git\ncd personal-agent-template\n\npnpm install\ncp .env.example .env\npnpm db:migrate\npnpm dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000), create an account, and start chatting.\n\n**Required environment variables:**\n\n```bash\nBETTER_AUTH_SECRET=...       # openssl rand -base64 32\nBETTER_AUTH_URL=http://localhost:3000\nINTERNAL_API_SECRET=...      # openssl rand -base64 32 — same on web + eve\n```\n\nSee [ENVIRONMENT.md](./docs/ENVIRONMENT.md) for the full reference.\n\nFresh local database:\n\n```bash\nrm -rf .data/db \u0026\u0026 pnpm db:migrate\n```\n\n## Customization\n\nPersonal Agent Template ships with **V** as the example persona. See the [Customization Guide](./docs/CUSTOMIZATION.md) for how to:\n\n- Rename your agent (name, slug, persona)\n- Change the AI model\n- Add tools and skills\n- Configure Slack, iMessage, and Linear integrations\n- Theme the UI\n- Deploy your fork\n\n## Memory\n\nLong-term memory is injected into every Eve session for authenticated users (web, linked Slack, and iMessage).\n\n1. Open **Profile → Import Memory**\n2. Copy the export prompt into ChatGPT, Claude, etc.\n3. Paste the response → **Add to Memory**\n4. Start a **new chat** so the agent picks up the latest context\n\nV can also propose facts via **`save_memory`** — approve or skip in chat. Edit or delete entries on **Profile → Memory**.\n\n## How It Works\n\n\u003e For the full technical deep-dive, see [Architecture](./docs/ARCHITECTURE.md).\n\n1. **Auth**: Users sign in via Better Auth (email/password)\n2. **Session start**: Eve fetches profile + memory and injects into agent instructions\n3. **Chat**: Web UI streams through Eve; Slack events hit the slack channel; iMessage via Sendblue\n4. **Tools**: Agent calls weather, save_memory, Linear MCP as needed\n5. **Internal API**: Agent reads/writes memory, Slack links, and phone links via authenticated Nitro routes\n\n## Development\n\n```bash\npnpm dev          # Nuxt + Eve (eve/nuxt module — see Eve docs)\npnpm typecheck    # TypeScript check\npnpm build        # Production build\npnpm db:generate  # Generate Drizzle migrations\npnpm db:migrate   # Apply migrations\n```\n\nSee [AGENTS.md](./AGENTS.md) for notes aimed at AI coding assistants.\n\n## Built With\n\n- [Eve](https://eve.dev) — Durable agent framework\n- [Nuxt](https://nuxt.com) — Full-stack Vue framework\n- [Nuxt UI](https://ui.nuxt.com) — UI component library\n- [NuxtHub](https://hub.nuxt.com) — SQLite database\n- [Better Auth](https://www.better-auth.com) — Authentication\n- [Drizzle ORM](https://orm.drizzle.team) — Type-safe database queries\n- [Vercel Connect](https://vercel.com/docs/connect) — Linear and Slack integrations\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for how to get involved.\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvercel-labs%2Fpersonal-agent-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvercel-labs%2Fpersonal-agent-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvercel-labs%2Fpersonal-agent-template/lists"}