Hackathon-Ready AI Engineering Platform
Voice-powered AI engineers that work in parallel, powered by FishAudio, Supabase, and Windmill.
- π€ Real-Time Voice Interaction - Speak naturally with AI engineers using FishAudio STT/TTS
- π₯ Multi-Agent Collaboration - Multiple AI engineers work in parallel on different tasks
- π Workflow Automation - Integrate Windmill workflows for complex task execution
- πΎ Supabase Integration - Robust data storage and real-time synchronization
- π¨ 3D Avatars - Ready Player Me avatars for immersive video calls
- π GitHub Integration - Direct repository access and parallel editing
This application uses ONLY the following services:
- FishAudio - Speech-to-Text (STT) and Text-to-Speech (TTS)
- Supabase - Database, authentication, and Edge Functions
- Windmill - Workflow automation and task orchestration
- GitHub - Repository access and code management
No OpenAI. No Gemini. Just FishAudio + Supabase + Windmill.
- Node.js 18+ and npm
- A Supabase account (free tier works)
- FishAudio API key
- Windmill API key
- GitHub OAuth app
-
Clone the repository
git clone <your-repo-url> cd devspace-ai-co-pilot
-
Install dependencies
npm install
-
Set up environment variables
Create a
.envfile in the root directory:# FishAudio API (REQUIRED) VITE_FISHAUDIO_API_KEY=your_fishaudio_api_key_here VITE_FISHAUDIO_DEFAULT_VOICE_ID=802e3bc2b27e49c2995d23ef70e6ac89 # Supabase (REQUIRED) VITE_SUPABASE_URL=https://your-project.supabase.co VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key_here # Windmill (REQUIRED) VITE_WINDMILL_API_KEY=your_windmill_api_key_here VITE_WINDMILL_BASE_URL=https://app.windmill.dev/api # GitHub OAuth (REQUIRED) VITE_GITHUB_CLIENT_ID=your_github_client_id_here VITE_GITHUB_CLIENT_SECRET=your_github_client_secret_here # Optional: LLM Configuration VITE_SUPABASE_LLM_FUNCTION=generate-text VITE_LLM_MODEL=meta-llama/llama-3-8b-instruct VITE_LLM_TEMPERATURE=0.7 VITE_LLM_MAX_TOKENS=2048
-
Set up Supabase
- Create a new project at supabase.com
- Run the migration SQL in
SUPER_MIGRATION.sqlin your Supabase SQL Editor - Copy your project URL and anon key to
.env
-
Set up Supabase Edge Function (for LLM)
Create an Edge Function named
generate-textthat calls your preferred LLM API:// supabase/functions/generate-text/index.ts import { serve } from "https://deno.land/std@0.168.0/http/server.ts" serve(async (req) => { const { messages, systemPrompt, model, temperature, maxTokens } = await req.json() // Call your LLM API (OpenRouter, Together AI, etc.) const response = await fetch('https://api.openrouter.ai/api/v1/chat/completions', { method: 'POST', headers: { 'Authorization': `Bearer ${Deno.env.get('OPENROUTER_API_KEY')}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ model: model || 'meta-llama/llama-3-8b-instruct', messages: [ ...(systemPrompt ? [{ role: 'system', content: systemPrompt }] : []), ...messages.map(m => ({ role: m.role, content: m.content })) ], temperature: temperature || 0.7, max_tokens: maxTokens || 2048, }), }) const data = await response.json() return new Response(JSON.stringify({ text: data.choices[0].message.content }), { headers: { 'Content-Type': 'application/json' }, }) })
-
Start the development server
npm run dev
-
Visit the application
http://localhost:8080
- Go to fish.audio
- Sign up for an account
- Get your API key from the dashboard
- Add to
.envasVITE_FISHAUDIO_API_KEY
- Go to app.supabase.com
- Create a new project
- Go to Settings β API
- Copy Project URL β
VITE_SUPABASE_URL - Copy anon/public key β
VITE_SUPABASE_PUBLISHABLE_KEY
- Go to app.windmill.dev
- Sign up for an account
- Go to Settings β API Keys
- Create a new API key
- Add to
.envasVITE_WINDMILL_API_KEY
- Go to GitHub Settings β Developer settings β OAuth Apps
- Create a new OAuth App
- Set Authorization callback URL to:
http://localhost:8080/auth/github/callback - Copy Client ID β
VITE_GITHUB_CLIENT_ID - Copy Client Secret β
VITE_GITHUB_CLIENT_SECRET
- Click "Sign in with GitHub" on the home page
- Authorize the application
- You'll be redirected to the dashboard
- Go to the "Engineers" tab
- Click "Add Engineer"
- Fill in:
- Name
- Personality description
- Specialty (backend, frontend, fullstack, etc.)
- Avatar URL (Ready Player Me)
- Voice ID (FishAudio)
- Go to the "Connections" tab
- Select your repository
- Set the base branch (default: main)
- Click "Save Connection"
- Go to the "Chat" tab
- Click "Start Video Call"
- Select which engineers to include
- Speak naturally - your voice is transcribed using FishAudio STT
- AI engineers respond with voice using FishAudio TTS
- During a call, ask an engineer to work on something
- Example: "Alex, create a new API endpoint"
- The engineer will:
- Acknowledge the task
- Leave the call
- Work on the task in the background
- Return when complete
devspace-ai-co-pilot/
βββ src/
β βββ lib/
β β βββ fishaudio-service.ts # FishAudio STT/TTS service
β β βββ windmill-service.ts # Windmill workflow service
β β βββ llm-service.ts # LLM via Supabase Edge Functions
β β βββ multi-agent-manager.ts # Multi-agent coordination
β β βββ ...
β βββ components/
β β βββ dashboard/
β β βββ ChatTab.tsx # Voice chat interface
β β βββ EngineersTab.tsx # Engineer management
β β βββ TasksTab.tsx # Task tracking
β β βββ ConnectionsTab.tsx # GitHub connections
β βββ ...
βββ supabase/
β βββ migrations/ # Database migrations
βββ .env # Environment variables
npm run devnpm run buildnpm run preview- Verify
VITE_FISHAUDIO_API_KEYis set correctly - Check browser console for API errors
- Ensure microphone permissions are granted
- Verify
VITE_SUPABASE_URLandVITE_SUPABASE_PUBLISHABLE_KEYare correct - Check Supabase project is active (not paused)
- Verify RLS policies are set up correctly
- Verify
VITE_WINDMILL_API_KEYis set correctly - Check Windmill dashboard for workflow status
- Ensure workflow IDs/paths are correct
MIT License - see LICENSE file for details
- FishAudio - Voice AI services
- Supabase - Backend infrastructure
- Windmill - Workflow automation
- Ready Player Me - 3D avatars
Built for Hackathons. Production Ready. π