An open source implementation of an AI agent that generates slides in google slides
A production-ready AI Chat application featuring tool usage (Google Slides, etc.), Vercel AI SDK for chat streaming, and NextAuth v5 for authentication.
Create a .env file in the root directory:
# Database
DATABASE_URL="postgres://user:pass@localhost:5432/open_gamma"
# NextAuth
AUTH_SECRET="your_generated_secret" # generate with `npx auth secret` or `openssl rand -base64 32`
AUTH_URL="http://localhost:3000" # Deployment URL
# Composio (Tools & Auth)
COMPOSIO_API_KEY="your_composio_api_key"
AUTH_CONFIG_ID="your_auth_config_id" # From Composio Dashboard at platform.composio.dev
# AI Providers (At least one required)
OPENAI_API_KEY="sk-..."
ANTHROPIC_API_KEY="sk-..."
GEMINI_API_KEY="sk-..."
npm install
Push the schema to your database (for local dev):
npm run db:push
For production migrations:
npm run db:generate
npm run db:migrate
npm run dev
Open http://localhost:3000.
userId and calls the Composio link API./auth/callback.userId and creates a NextAuth session.The chat interface (app/page.tsx) uses the Vercel AI SDK useChat hook.
Tools are executed via Composio on the server (app/api/chat/route.ts).
Rate limiting is applied per user session.
Drizzle commands require DATABASE_URL to be set. Either export it or prefix the command:
# Option 1: Export in shell
export DATABASE_URL="postgres://..."
npm run db:push
# Option 2: Inline
DATABASE_URL="postgres://..." npm run db:push
npm run db:push: Push schema changes directly (prototyping only).npm run db:generate: Generate SQL migration files (production).npm run db:migrate: Apply migration files to the DB.npm run db:studio: Open Drizzle Studio to view data.npm run build.env variables are set in your provider (Vercel/Railway).npm run db:migrate during the build process or as a post-deploy step.This project uses Composio for tool integrations and authentication.