Vard AI (Voice-Activated Responsive Director) is a personal, voice-first AI assistant inspired by the cinematic feel of Jarvis and the everyday utility of Siri. Built with TanStack Start, React 19, TypeScript, and Tailwind CSS v4, it delivers a fast, immersive chat experience with persistent memory, custom branding, streaming AI responses, and a modular MCP tool system.
Live preview: id-preview.lovable.app Published site: vard-ai.lovable.app GitHub repo: github.com/vardhan23v/Vard-AI
Vard is designed to feel less like software and more like a companion. It combines:
- Natural voice input β real-time browser microphone capture with WAV encoding and streaming transcription via the Lovable AI Gateway.
- Streaming AI chat β powered by Groq (
llama-3.3-70b-versatile) for fast, token-by-token responses with stop/cancel controls. - Persistent memory β remembers facts, preferences, and people across conversations.
- Customizable brand & motion β switch themes, accents, logos, background styles, and route transitions.
- Reduced-motion support β fully accessible animation controls with system preference detection and automated Playwright regression tests.
- MCP tool system β extensible agent integrations via the Model Context Protocol with OAuth-protected tools.
- Voice Input: Click the mic, speak naturally β audio is captured via the browser, encoded to WAV (16kHz mono PCM), and streamed to
/api/transcribefor real-time transcription. - Streaming Responses: Chat endpoint at
/api/chatstreams Groq responses token-by-token with live progress and stop/cancel controls. - Escape Key Abort: Press Escape or click the stop button to cancel generation mid-stream.
- Regenerate: Regenerate the last prompt per thread, persisted across page refresh.
- Command Bar: Floating command bar with
/shortcuts, voice toggle, and keyboard navigation (βK).
- Dark/Light/System Mode: Full theme support with CSS custom properties.
- Accent Palettes: Mint, Violet, Coral, Cyan, Amber β change the entire app's accent color.
- Brand Panel: Upload and crop a custom logo, rename the app, pick accent colors, and choose background styles.
- Background Styles: Nebula, Aurora, Mesh, Grid, Gradient, and more.
- Motion Customization: Duration, easing, and transition presets (fade, slide, zoom, blur, lift).
- Bento Grid Layout: Cinematic dashboard with ambient aurora backdrops, animated orb, and system status indicators.
- Today's Agenda: Quick-view agenda panel with color-coded items.
- Quick Actions: One-click actions for Draft Email, Schedule, and Analyze Data.
- Pending Actions Counter: At-a-glance task count with animated stats.
- Reduced Motion Toggle: Live preview of reduced vs. full motion.
- ARIA Support: Progress indicators expose
role="progressbar"and ARIA labels. - Focus States & Keyboard Shortcuts: Full keyboard navigation support.
- CI Regression Tests: Automated Playwright tests for reduced-motion compliance.
- Model Context Protocol: OAuth-protected MCP server with extensible tools.
- Built-in Tools:
echo(connectivity check) andwhoami(user identity). - Granular Consent: Per-tool OAuth consent flow via Supabase auth.
- Supabase Auth: Full sign-up/login with email/password.
- Session Management: Secure sessions with server-side auth middleware.
- Protected Routes: All dashboard and API routes require authentication.
| Layer | Technology |
|---|---|
| Framework | TanStack Start v1 (full-stack React) |
| UI | React 19, TypeScript |
| Styling | Tailwind CSS v4, CSS custom properties |
| Icons | Lucide React |
| Auth | Supabase Auth |
| AI / Chat | Groq API (Llama 3.3 70B Versatile) |
| Voice / Transcription | Lovable AI Gateway |
| Tools | Model Context Protocol (MCP) |
| Testing | Playwright (E2E + reduced-motion regression) |
| Package Manager | Bun |
Browser (Voice/Text Input)
β
βββ /api/chat (POST) βββββββΊ Groq API (llama-3.3-70b-versatile)
β Streaming SSE βββββββΊ Token-by-token response
β
βββ /api/transcribe (POST) ββΊ Lovable AI Gateway
β Streaming SSE βββββββΊ Real-time transcript
β
βββ /.mcp/* ββββββββββββββββΊ MCP Server (OAuth-protected tools)
echo, whoami, extensible
Vard-AI/
βββ src/
β βββ components/
β β βββ BrandPanel.tsx # Logo upload, app name, accent, background
β β βββ JarvisOrb.tsx # Cinematic animated orb avatar
β β βββ LogoCropper.tsx # Logo crop tool
β β βββ Sidebar.tsx # Navigation sidebar
β β βββ ThemeSwitcher.tsx # Dark/light/system toggle
β β βββ agents/
β β β βββ VisualBuilder.tsx # Agent builder interface
β β βββ chat/
β β β βββ ChatPrompt.tsx # Chat input with voice toggle
β β β βββ ChatWindow.tsx # Full chat interface with streaming
β β βββ ui/ # 40+ shadcn/ui components
β βββ hooks/
β β βββ use-mobile.tsx # Mobile detection hook
β βββ integrations/
β β βββ supabase/ # Supabase client, auth middleware, types
β βββ lib/
β β βββ brand.tsx # Brand customization context
β β βββ motion.tsx # Motion presets & reduced-motion
β β βββ theme.tsx # Theme provider & accent palettes
β β βββ voice-input.ts # Browser mic β WAV β transcription
β β βββ utils.ts # Shared utilities
β β βββ require-auth.server.ts # Server-side auth guard
β β βββ mcp/
β β βββ index.ts # MCP server definition
β β βββ tools/
β β βββ echo.ts # Connectivity check tool
β β βββ whoami.ts # User identity tool
β βββ routes/
β β βββ __root.tsx # Root layout with providers
β β βββ index.tsx # Landing page (hero, features, orb)
β β βββ login.tsx # Auth entry point
β β βββ dashboard.tsx # Dashboard layout
β β βββ dashboard.index.tsx # Dashboard home (bento grid)
β β βββ dashboard.chat.tsx # AI chat interface
β β βββ dashboard.agents.tsx # Agent builder
β β βββ memory.tsx # Persistent memory management
β β βββ automations.tsx # Recurring routines & triggers
β β βββ integrations.tsx # Connected services & MCP tools
β β βββ personality.tsx # Assistant personality settings
β β βββ history.tsx # Conversation history
β β βββ analytics.tsx # Usage analytics
β β βββ documents.tsx # Document library
β β βββ voice.tsx # Voice & avatar settings
β β βββ shortcuts.tsx # Keyboard shortcuts
β β βββ settings.tsx # App settings, theme, motion, brand
β β βββ about.tsx # About Vard AI
β β βββ library.tsx # Content library
β β βββ api/
β β β βββ chat.ts # Groq streaming chat endpoint
β β β βββ transcribe.ts # Voice transcription endpoint
β β βββ [.mcp]/ # MCP OAuth & tool endpoints
β βββ server.ts # Server entry configuration
β βββ start.ts # Start instance with auth middleware
β βββ styles.css # Global theme variables & animations
βββ supabase/ # Supabase configuration
βββ tests/ # Playwright E2E & regression tests
βββ .github/workflows/ # CI (reduced-motion regression)
βββ package.json
βββ vite.config.ts
βββ tsconfig.json
| Route | Description |
|---|---|
/ |
Landing page with hero, animated orb, and feature cards |
/login |
Authentication entry point |
/dashboard |
Main dashboard with bento-grid layout |
/dashboard/chat |
AI chat interface with streaming responses |
/dashboard/agents |
Agent builder |
/memory |
Persistent memory management |
/automations |
Recurring routines and triggers |
/integrations |
Connected services and MCP tools |
/personality |
Assistant personality settings |
/history |
Conversation history |
/analytics |
Usage analytics |
/documents |
Document library |
/voice |
Voice and avatar settings |
/shortcuts |
Keyboard shortcuts |
/settings |
App settings, theme, motion, brand |
/about |
About Vard AI |
/library |
Content library |
- Node.js (v18+) β recommended via nvm
- A package manager:
npm,yarn,pnpm, orbun - Supabase project (for auth)
- Groq API key (get one free)
-
Clone the repository
git clone https://github.com/vardhan23v/Vard-AI.git cd Vard-AI -
Install dependencies
npm install # or: bun install -
Configure environment variables
Create a
.envfile in the project root:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key VITE_SUPABASE_PROJECT_ID=your_supabase_project_id GROQ_API_KEY=your_groq_api_key LOVABLE_API_KEY=your_lovable_api_key
Backend secrets (
GROQ_API_KEY,LOVABLE_API_KEY) are read server-side only viaprocess.envin server functions and API routes. -
Run the development server
npm run dev # or: bun run dev -
Open in Browser
Navigate to
http://localhost:8080to meet Vard!
- User clicks the mic button β browser captures audio via
getUserMedia - Raw PCM chunks are collected, downsampled to 16kHz mono, and encoded as a WAV blob
- WAV is POSTed to
/api/transcribewith Supabase auth token - Lovable AI Gateway transcribes the audio and streams the result back via SSE
- Transcript appears in the command bar β user can edit or send
- Chat messages are POSTed to
/api/chatβ Groq streamsllama-3.3-70b-versatileresponses token-by-token - User can stop generation with Escape key or stop button
Open the Brand Panel in Settings to customize:
- Logo: Upload + crop your own logo
- App Name: Rename the assistant
- Accent Color: Choose from Mint, Violet, Coral, Cyan, Amber
- Background Style: Nebula, Aurora, Mesh, Grid, Gradient, and more
- Route Transitions: Fade, slide, zoom, blur, lift
- Motion Intensity: Duration, easing, and reduced-motion preference
Vard AI is built with accessibility in mind:
- Respects
prefers-reduced-motionsystem preference - Progress indicators expose
role="progressbar"and ARIA labels - Focus states and keyboard shortcuts are supported throughout
- Reduced-motion regression tests run in CI via Playwright
- All animations (spinner, shimmer, toast, modal, route transitions) respect the reduced-motion setting
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This project is licensed under the MIT License.
Built with β€οΈ by Sree Vardhan V