
An internal knowledge agent built with Claude Managed Agents. Connect your GitHub, Notion, and Slack via MCP and ask questions across all of them. Read more in the guide.
| Layer | Choice |
|---|---|
| App | Next.js 16 (App Router), React 19 |
| UI | shadcn/ui, Tailwind CSS v4 |
| Auth | Better Auth + Sign in with Vercel |
| Data | Neon + Drizzle ORM |
| Background | Workflow SDK |
| Agents | Claude Managed Agents via @anthropic-ai/sdk |
git clone https://github.com/vercel-labs/claude-managed-agents.gitcd claude-managed-agentsnpx skills add anthropics/skills --skill claude-apinpx skills add vercel/workflowvercel linkvercel integration add neon
echo "$(openssl rand -base64 32)" | vercel env add BETTER_AUTH_SECRET production preview developmentecho "$(openssl rand -hex 32)" | vercel env add TOKEN_ENCRYPTION_KEY production preview developmentvercel env pull
This generates both secrets and writes .env.local with DATABASE_URL, Neon vars, and the secrets.
Add these to .env.local (or via vercel env add):
| Variable | How to get it |
|---|---|
ANTHROPIC_API_KEY | console.anthropic.com/settings/keys |
ANTHROPIC_AGENT_ID | Create an agent via the Managed Agents quickstart |
ANTHROPIC_ENVIRONMENT_ID | Create an environment for the agent and copy its ID |
BETTER_AUTH_URL | http://localhost:3000 (or your deployment URL) |
VERCEL_CLIENT_ID | Create an OAuth app via Sign in with Vercel. Callback: <url>/api/auth/callback/vercel |
VERCEL_CLIENT_SECRET | From the same Vercel OAuth app |
Optional for GitHub integration:
| Variable | How to get it |
|---|---|
GITHUB_CLIENT_ID | Create a GitHub OAuth app |
GITHUB_CLIENT_SECRET | From the same GitHub OAuth app |
pnpm installpnpm db:push
pnpm dev
| File | Purpose |
|---|---|
lib/auth.ts | Better Auth config (Vercel OIDC + optional GitHub OAuth) |
lib/session.ts | getSession() and requireUserId() server helpers |
proxy.ts | Auth guard — redirects unauthenticated users on protected routes |
lib/schema.ts | Drizzle schema (Better Auth tables + managed agent tables) |
lib/db.ts | Neon + Drizzle client |
lib/anthropic.ts | Anthropic SDK client factory |
lib/managed-agents.ts | Session creation + message sending |
app/workflows/tail-session.ts | Durable workflow: polls Anthropic events, persists to Postgres |
app/api/managed-agents/ | REST API routes (session, message, transcript) |