A progressive web app (PWA) that serves as your personal AI assistant, built with React, TypeScript, Firebase, and Tailwind CSS.
- AI Chat — Conversational interface with markdown rendering, powered by OpenAI or Anthropic
- Multi-provider routing — Switch between OpenAI (GPT-4) and Anthropic (Claude) from Settings
- Firebase auth — Sign in with Google or email/password
- Connections — Connect services like Gmail, Google Calendar, Drive, Philips Hue, Spotify, Weather and more via MCP-style integrations
- PWA ready — Installable on mobile and desktop
- Responsive — Mobile bottom nav + desktop sidebar layout
- Vite + React + TypeScript
- Firebase (Auth + Firestore)
- Zustand (state management)
- Tailwind CSS v3
- react-markdown + remark-gfm
- lucide-react icons
-
Clone and install
npm install
-
Configure environment — copy
.env.exampleto.envand fill in your keys:cp .env.example .env
-
Run dev server
npm run dev
-
Build for production
npm run build
| Variable | Description |
|---|---|
VITE_FIREBASE_API_KEY |
Firebase project API key |
VITE_FIREBASE_AUTH_DOMAIN |
Firebase auth domain |
VITE_FIREBASE_PROJECT_ID |
Firebase project ID |
VITE_FIREBASE_STORAGE_BUCKET |
Firebase storage bucket |
VITE_FIREBASE_MESSAGING_SENDER_ID |
Firebase messaging sender ID |
VITE_FIREBASE_APP_ID |
Firebase app ID |
VITE_OPENAI_API_KEY |
Optional local dev fallback for OpenAI |
VITE_ANTHROPIC_API_KEY |
Optional local dev fallback for Anthropic |
For GitHub Pages deployments, do not publish model provider secrets through Vite env vars. Enter provider API keys in Settings after loading the app; they are stored only in the current browser.
This repo includes a GitHub Actions workflow that builds and deploys the app to GitHub Pages.
Required GitHub Actions secrets:
VITE_FIREBASE_API_KEYVITE_FIREBASE_AUTH_DOMAINVITE_FIREBASE_PROJECT_IDVITE_FIREBASE_STORAGE_BUCKETVITE_FIREBASE_MESSAGING_SENDER_IDVITE_FIREBASE_APP_ID
After pushing to main, enable GitHub Pages in the repository settings and choose GitHub Actions as the source.
Production builds use a GitHub Pages-safe base path and hash routing, so deep links work without server rewrites.
This repo is configured to deploy Firestore rules with the Firebase CLI.
Commands:
npm run firebase:loginnpm run firebase:use <your-project-id>npm run firebase:deploy:rules
The Firebase CLI will create .firebaserc after you select your project.
src/
├── components/
│ ├── chat/ # ChatBubble, MessageInput, TypingIndicator
│ ├── layout/ # Navigation, ProtectedRoute
│ └── ui/ # Button, Card, Input, StatusDot, ConnectionCard
├── core/ # AIRouter, MCPBridge, Orchestrator
├── hooks/ # useAuth, useChat
├── lib/ # Firebase config, utilities
├── mcp/ # MCP kit registry
├── pages/ # Auth, Home, Connections, Settings
├── providers/ # OpenAI, Anthropic provider implementations
└── stores/ # Zustand stores (auth, chat, connections)