Skip to content
Finalist

Shadow

Shadow is an ambient AI companion that lives on your screen as an animated character.

Core trick

Streams live meeting audio to a voice model that detects action items and dispatches each to tool-calling agents for Slack and deployment.

Tags

Description

Shadow is an ambient AI companion that lives on your screen as an animated character. It passively listens to your meetings, detects action items in real-time, and autonomously executes them sending Slack messages, generating infographics, building and deploying landing pages, creating audio jingles, all without being asked. No trigger words. No interruptions. You talk naturally, and Shadow just acts.
alexechoi/deepmind-vercel-hack★ 10 forksTypeScriptApache-2.0Created Mar 21, 2026 · last push Mar 21, 2026

README excerpt

# Shadow

<img width="1498" height="765" alt="image" src="https://github.com/user-attachments/assets/5194817d-af7e-4dff-be2a-1b979a54a993" />

<img width="1492" height="768" alt="image" src="https://github.com/user-attachments/assets/886e85d5-41d6-4678-ac0a-363d5d3c08fa" />

Try it out: <a href="https://yourshadow.app">https://yourshadow.app</a>


An ambient AI companion with a desktop pet interface, built for the **Zero to Agent Hack** (DeepMind x Vercel).

Shadow is a pixel-art cat that lives on your screen, listens via voice or text, and orchestrates a suite of AI agents to take real actions on your behalf — send Slack messages, generate infographics, build and deploy landing pages, and create audio content.

## Architecture

```
frontend/
├── app/
│   ├── api/agents/        # Agent API routes (intent router, build, design, audio, slack)
│   ├── auth/              # Supabase auth callback
│   ├── login/             # Login page
│   ├── signup/            # Signup page
│   ├── settings/          # User settings (Slack webhook, display name)
│   └── page.tsx           # Main Shadow experience
├── components/
│   ├── Shadow.tsx          # Desktop pet (pixel-art cat with state-driven animation)
│   ├── ShadowExperience.tsx# Main UI wrapper (speech bubble, quick actions, input)
│   ├── SettingsForm.tsx    # User settings form
│   ├── TranscriptDisplay.tsx
│   └── ResultCard.tsx
├── hooks/
│   └── useGeminiLive.ts   # Real-time voice chat via Gemini Live API
├── lib/
│   ├── age

Team