A revolutionary AR-powered morning assistant built for Snap Spectacles that transforms your daily routine with intelligent, contextual guidance.
Timeline: 36-Hour MLH Hackathon
Team Size: 4 Developers
Target Platform: Snap Spectacles (2024)
Architecture: Supabase-Focused Integration
- Real-time Object Recognition - Identifies 5 demo objects (bowl, laptop, keys, medicine, phone)
- Gemini Live WebSocket - Direct real-time visual understanding and natural language processing
- Voice Synthesis - ElevenLabs Conversational AI Platform for natural voice interactions
- Adaptive Learning - Letta Cloud for stateful memory + Chroma vector embeddings
- AR Overlays - Contextual information displayed in real-world space with <100ms latency
This is a Lens Studio project with Supabase Edge Functions backend:
marvin/
βββ marvin-main/ # Dev 1: Lens Studio (AR + Gemini WebSocket + InternetModule)
β βββ Assets/Scripts/ # TypeScript components for Spectacles
βββ snap-cloud/ # Dev 2: Supabase Edge Functions (AI processing)
β βββ functions/ # ai-coordination, letta-sync, voice-synthesis
βββ supabase/ # Dev 3: Supabase Backend (Database + Realtime + Storage)
β βββ migrations/ # Database schema and RLS policies
βββ __tests__/ # Dev 4: Integration Tests (TDD framework)
βββ docs/ # API documentation
| Developer | Focus | Key Deliverables |
|---|---|---|
| Dev 1 | Lens Studio AR | Object detection, AR overlays, Gemini WebSocket, InternetModule HTTP |
| Dev 2 | Edge Functions | Fix mocks, add Letta/ElevenLabs/Chroma integration |
| Dev 3 | Supabase Backend | Database schema, RLS policies, Realtime, Storage |
| Dev 4 | TDD & DevOps | Testing framework, integration tests, CI/CD, merges |
- prd.md - Complete Product Requirements Document with system architecture
- tasklist.md - Detailed task breakdown by developer (36-hour timeline)
- INTEGRATION_GUIDE.md - Step-by-step integration instructions
- ARCHITECTURE_UPDATED.md - System architecture deep dive
- docs/snap.md - Snap Spectacles API reference
- docs/gemini.md - Gemini Live API integration guide
- docs/elevenlabs.md - ElevenLabs voice synthesis
- docs/chroma.md - Chroma vector database
- Lens Studio 5.15.0+
- Git with LFS:
brew install git-lfs && git lfs install - Node.js 20 LTS
- Supabase CLI:
npm install -g supabase - Spectacles (2024) device with OS v5.64+
# Install Git LFS first
brew install git-lfs
git lfs install
# Clone repository
git clone https://github.com/amogharyan/marvin.git
cd marvin
# Install dependencies
npm install
# Initialize Supabase
cd snap-cloud
supabase init
supabase startDev 1: Lens Studio
# Open Lens Studio project
open marvin-main/Marvin.esproj
# Install required packages in Lens Studio:
# - Remote Service Gateway Token Generator
# - SpectaclesInteractionKit.lspkg
# - SupabaseClient.lspkg (from Supabase example)
# - Internet Module.internetModule (from Supabase example)
# Set Device Type to "Spectacles (2024)" in Preview PanelDev 2: Edge Functions
cd snap-cloud
# Create Edge Functions
supabase functions new ai-coordination
supabase functions new letta-sync
supabase functions new voice-synthesis
# Set secrets
supabase secrets set GEMINI_API_KEY=your_key_here
supabase secrets set ELEVENLABS_API_KEY=your_key_here
supabase secrets set LETTA_API_KEY=your_key_here
# Deploy
supabase functions deployDev 3: Database
cd snap-cloud
# Create and run migrations
supabase migration new initial_schema
# Edit migration file, then:
supabase db push
# Set up Realtime
# (See INTEGRATION_GUIDE.md for detailed schema)Dev 4: Testing
# Install test dependencies
npm install --save-dev jest ts-jest @types/jest
# Run tests
npm test
# Set up CI/CD
# (GitHub Actions workflows already in .github/workflows/)All developers work in parallel:
- Dev 1: Object detection + AR overlays + Gemini WebSocket
- Dev 2: Create Edge Functions structure + fix mocks
- Dev 3: Database schema + RLS policies
- Dev 4: Write failing tests (TDD)
Hour 8 Checkpoint: All devs merge to develop branch
- Dev 1: Add InternetModule HTTP calls to Edge Functions
- Dev 2: Integrate real APIs (Gemini, ElevenLabs, Letta, Chroma)
- Dev 3: Realtime subscriptions + Storage buckets
- Dev 4: Integration testing
Hour 16 Checkpoint: Full integration working end-to-end
- Hours 16-24: Advanced features + demo optimization
- Hours 24-30: Testing + refinement + rehearsal
- Hours 30-36: Final preparation + backup systems
See tasklist.md for complete hour-by-hour breakdown.
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run integration tests
npm run test:integration
# Check TypeScript compilation
npm run type-check
# Lint code
npm run lint
To upgrade:
```sh
brew upgrade supabase
Windows
Available via Scoop. To install:
scoop bucket add supabase https://github.com/supabase/scoop-bucket.git
scoop install supabaseTo upgrade:
scoop update supabaseLinux
Available via Homebrew and Linux packages.
To install:
brew install supabase/tap/supabaseTo upgrade:
brew upgrade supabaseLinux packages are provided in Releases. To install, download the .apk/.deb/.rpm/.pkg.tar.zst file depending on your package manager and run the respective commands.
sudo apk add --allow-untrusted <...>.apksudo dpkg -i <...>.debsudo rpm -i <...>.rpmsudo pacman -U <...>.pkg.tar.zstOther Platforms
You can also install the CLI via go modules without the help of package managers.
go install github.com/supabase/cli@latestAdd a symlink to the binary in $PATH for easier access:
ln -s "$(go env GOPATH)/bin/cli" /usr/bin/supabaseThis works on other non-standard Linux distros.
Community Maintained Packages
Available via pkgx. Package script here. To install in your working directory:
pkgx install supabasesupabase bootstrapOr using npx:
npx supabase bootstrapThe bootstrap command will guide you through the process of setting up a Supabase project using one of the starter templates.
Command & config reference can be found here.
We follow semantic versioning for changes that directly impact CLI commands, flags, and configurations.
However, due to dependencies on other service images, we cannot guarantee that schema migrations, seed.sql, and generated types will always work for the same CLI major version. If you need such guarantees, we encourage you to pin a specific version of CLI in package.json.
To run from source:
# Go >= 1.22
go run . help