style: apply prettier formatting to docs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -9,13 +9,13 @@ speaking up like Jarvis: _"Karti and Yahya are both editing `auth.ts`, Yahya has
|
|||||||
changes — here's the diff, want a sync PR?"_
|
changes — here's the diff, want a sync PR?"_
|
||||||
|
|
||||||
> **The moat:** unpushed local code is invisible to the GitHub API. The realtime
|
> **The moat:** unpushed local code is invisible to the GitHub API. The realtime
|
||||||
> screen-vision layer is the *only* way to catch a collision before the push. That is the
|
> screen-vision layer is the _only_ way to catch a collision before the push. That is the
|
||||||
> whole product — and the reason this is an ambient agent, not a dashboard.
|
> whole product — and the reason this is an ambient agent, not a dashboard.
|
||||||
|
|
||||||
## Monorepo layout
|
## Monorepo layout
|
||||||
|
|
||||||
| Folder | What |
|
| Folder | What |
|
||||||
|---|---|
|
| ----------- | -------------------------------------------------------------------------------------------------- |
|
||||||
| `frontend/` | React + Vite PWA — join pod, screen/mic/cam capture, PodMan voice + intervention cards |
|
| `frontend/` | React + Vite PWA — join pod, screen/mic/cam capture, PodMan voice + intervention cards |
|
||||||
| `backend/` | PodMan agent: LiveKit room subscriber, Gemini vision, GitHub fusion, collision detector, voice out |
|
| `backend/` | PodMan agent: LiveKit room subscriber, Gemini vision, GitHub fusion, collision detector, voice out |
|
||||||
| `infra/` | DigitalOcean deploy (App Platform / Droplet), IaC, Dockerfiles |
|
| `infra/` | DigitalOcean deploy (App Platform / Droplet), IaC, Dockerfiles |
|
||||||
|
|||||||
+24
-20
@@ -14,16 +14,18 @@ prevent merge collisions before anyone pushes**, offering to open a sync PR.
|
|||||||
|
|
||||||
- **Track:** Continual Learning
|
- **Track:** Continual Learning
|
||||||
- **Prizes targeted (stacked):** Gemini 3.5 ($5k cash), LiveKit (keyboards), DigitalOcean (credits)
|
- **Prizes targeted (stacked):** Gemini 3.5 ($5k cash), LiveKit (keyboards), DigitalOcean (credits)
|
||||||
- **Hero moment:** two laptops editing the same file → PodMan *speaks up live* and offers the fix.
|
- **Hero moment:** two laptops editing the same file → PodMan _speaks up live_ and offers the fix.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Why this fits the track (and stays eligible)
|
## 1. Why this fits the track (and stays eligible)
|
||||||
|
|
||||||
### Track = Continual Learning
|
### Track = Continual Learning
|
||||||
|
|
||||||
The official definition rewards systems that "continuously improve from real-world use…
|
The official definition rewards systems that "continuously improve from real-world use…
|
||||||
becoming more useful the more they are used with as little user intervention as possible."
|
becoming more useful the more they are used with as little user intervention as possible."
|
||||||
PodMan does exactly this:
|
PodMan does exactly this:
|
||||||
|
|
||||||
- Builds and **continuously refines a live model of the team** — who owns which files/areas,
|
- Builds and **continuously refines a live model of the team** — who owns which files/areas,
|
||||||
what's in-flight, recurring conflict patterns, each engineer's working style.
|
what's in-flight, recurring conflict patterns, each engineer's working style.
|
||||||
- **Self-improves its own intervention policy** from outcomes: did the collision it predicted
|
- **Self-improves its own intervention policy** from outcomes: did the collision it predicted
|
||||||
@@ -32,9 +34,10 @@ PodMan does exactly this:
|
|||||||
- Grows a per-team **skill/memory store** (vector memory) that makes later sessions sharper.
|
- Grows a per-team **skill/memory store** (vector memory) that makes later sessions sharper.
|
||||||
|
|
||||||
### ⚠️ Disqualification traps — and how we dodge them
|
### ⚠️ Disqualification traps — and how we dodge them
|
||||||
|
|
||||||
| Risk | Mitigation |
|
| Risk | Mitigation |
|
||||||
|---|---|
|
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| **"Dashboard is the main feature" = auto-DQ** | The pod grid is *secondary*. The hero is PodMan's **proactive voice/card interventions**. In the demo we barely show the grid; we show PodMan *acting*. |
|
| **"Dashboard is the main feature" = auto-DQ** | The pod grid is _secondary_. The hero is PodMan's **proactive voice/card interventions**. In the demo we barely show the grid; we show PodMan _acting_. |
|
||||||
| Repo must be **public** | Make the GitHub repo public from the start. |
|
| Repo must be **public** | Make the GitHub repo public from the start. |
|
||||||
| **Only what you built** during the event | Everything in this monorepo is new, timestamped by commits. Demo narrates "built today." |
|
| **Only what you built** during the event | Everything in this monorepo is new, timestamped by commits. Demo narrates "built today." |
|
||||||
| New work only | No pre-existing project reuse. |
|
| New work only | No pre-existing project reuse. |
|
||||||
@@ -44,7 +47,7 @@ PodMan does exactly this:
|
|||||||
## 2. Prize-stacking map
|
## 2. Prize-stacking map
|
||||||
|
|
||||||
| Prize | How PodMan earns it |
|
| Prize | How PodMan earns it |
|
||||||
|---|---|
|
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| **Best Gemini 3.5 ($5,000 cash)** | Realtime screen understanding via Gemini 3.5 Flash vision + PodMan's voice via Gemini Live API. Bonus: Live Translate so a multilingual pod hears PodMan in their language. |
|
| **Best Gemini 3.5 ($5,000 cash)** | Realtime screen understanding via Gemini 3.5 Flash vision + PodMan's voice via Gemini Live API. Bonus: Live Translate so a multilingual pod hears PodMan in their language. |
|
||||||
| **Best LiveKit (keyboards)** | LiveKit is the realtime backbone: screen-share + mic + cam tracks in, PodMan voice + data-channel cards out. It's load-bearing, not bolted on. |
|
| **Best LiveKit (keyboards)** | LiveKit is the realtime backbone: screen-share + mic + cam tracks in, PodMan voice + data-channel cards out. It's load-bearing, not bolted on. |
|
||||||
| **Best DigitalOcean (credits)** | Backend PodMan agent + LiveKit agent deployed on DigitalOcean; claim the $200 credits. |
|
| **Best DigitalOcean (credits)** | Backend PodMan agent + LiveKit agent deployed on DigitalOcean; claim the $200 credits. |
|
||||||
@@ -79,27 +82,28 @@ PodMan does exactly this:
|
|||||||
└──────────────────────────────────────────┘
|
└──────────────────────────────────────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
**The critical reconciliation:** GitHub only knows *pushed* state. The "X is editing this and
|
**The critical reconciliation:** GitHub only knows _pushed_ state. The "X is editing this and
|
||||||
hasn't pushed" signal comes from **vision on the live screen** (filename in the editor tab,
|
hasn't pushed" signal comes from **vision on the live screen** (filename in the editor tab,
|
||||||
visible diff/gutter), optionally cross-checked by an *optional* lightweight local `git status`
|
visible diff/gutter), optionally cross-checked by an _optional_ lightweight local `git status`
|
||||||
reporter the engineer can run. Vision is the headline; the local reporter is a nice-to-have.
|
reporter the engineer can run. Vision is the headline; the local reporter is a nice-to-have.
|
||||||
|
|
||||||
### Continual-learning loop
|
### Continual-learning loop
|
||||||
|
|
||||||
1. **Observe** — per-engineer context every few seconds (sampled frames, not every frame).
|
1. **Observe** — per-engineer context every few seconds (sampled frames, not every frame).
|
||||||
2. **Store** — append observations to the team model; embed file/feature notes into Voyage
|
2. **Store** — append observations to the team model; embed file/feature notes into Voyage
|
||||||
vectors in Atlas for retrieval.
|
vectors in Atlas for retrieval.
|
||||||
3. **Predict** — collision detector + PodMan brain decide if/when to intervene.
|
3. **Predict** — collision detector + PodMan brain decide if/when to intervene.
|
||||||
4. **Outcome** — record whether the warning was acted on / was a true positive.
|
4. **Outcome** — record whether the warning was acted on / was a true positive.
|
||||||
5. **Adapt** — adjust intervention thresholds, ownership attribution, and prompt context from
|
5. **Adapt** — adjust intervention thresholds, ownership attribution, and prompt context from
|
||||||
outcomes → fewer false alarms, better targeting over the session. *(This is the "gets
|
outcomes → fewer false alarms, better targeting over the session. _(This is the "gets
|
||||||
better the more you use it" story judges want.)*
|
better the more you use it" story judges want.)_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. Stack per folder
|
## 4. Stack per folder
|
||||||
|
|
||||||
| Folder | Stack |
|
| Folder | Stack |
|
||||||
|---|---|
|
| ----------- | ----------------------------------------------------------------------------------------------------------- |
|
||||||
| `frontend/` | React + Vite + TypeScript, `livekit-client`, PWA (vite-plugin-pwa), Tailwind |
|
| `frontend/` | React + Vite + TypeScript, `livekit-client`, PWA (vite-plugin-pwa), Tailwind |
|
||||||
| `backend/` | Node + TypeScript, LiveKit server SDK + agents, `@google/genai`, GitHub (Octokit or GitHub MCP), Express/ws |
|
| `backend/` | Node + TypeScript, LiveKit server SDK + agents, `@google/genai`, GitHub (Octokit or GitHub MCP), Express/ws |
|
||||||
| `database/` | MongoDB Atlas (team model, observations, outcomes) + Voyage embeddings for vector recall |
|
| `database/` | MongoDB Atlas (team model, observations, outcomes) + Voyage embeddings for vector recall |
|
||||||
@@ -110,12 +114,12 @@ reporter the engineer can run. Vision is the headline; the local reporter is a n
|
|||||||
|
|
||||||
## 5. 20-hour build order (MVP-first)
|
## 5. 20-hour build order (MVP-first)
|
||||||
|
|
||||||
1. **Plumbing** — monorepo installs, shared types, env wiring, LiveKit token endpoint. *(Karti)*
|
1. **Plumbing** — monorepo installs, shared types, env wiring, LiveKit token endpoint. _(Karti)_
|
||||||
2. **Capture** — frontend: join pod + publish screen/mic; render PodMan card + play voice. *(Zander)*
|
2. **Capture** — frontend: join pod + publish screen/mic; render PodMan card + play voice. _(Zander)_
|
||||||
3. **Eyes** — backend: subscribe to a screen track, grab a frame, Gemini vision → `EngineerContext`. *(Ramis)*
|
3. **Eyes** — backend: subscribe to a screen track, grab a frame, Gemini vision → `EngineerContext`. _(Ramis)_
|
||||||
4. **Brain + collision** — fuse two engineers' contexts + GitHub state → detect same-file/feature; PodMan brain composes the intervention. *(Yahya)*
|
4. **Brain + collision** — fuse two engineers' contexts + GitHub state → detect same-file/feature; PodMan brain composes the intervention. _(Yahya)_
|
||||||
5. **Voice + action** — PodMan speaks (Live API/TTS) into the room + "Open sync PR" via GitHub. *(Yahya + Ramis)*
|
5. **Voice + action** — PodMan speaks (Live API/TTS) into the room + "Open sync PR" via GitHub. _(Yahya + Ramis)_
|
||||||
6. **Memory/continual learning** — store observations + outcomes; show the team model improving. *(Karti)*
|
6. **Memory/continual learning** — store observations + outcomes; show the team model improving. _(Karti)_
|
||||||
7. **Deploy on DO + polish demo** — everyone. Rehearse the live demo 3×.
|
7. **Deploy on DO + polish demo** — everyone. Rehearse the live demo 3×.
|
||||||
|
|
||||||
> If behind: cut webcam, cut multilingual, cut the local git reporter, **mock the QR join**,
|
> If behind: cut webcam, cut multilingual, cut the local git reporter, **mock the QR join**,
|
||||||
@@ -129,7 +133,7 @@ reporter the engineer can run. Vision is the headline; the local reporter is a n
|
|||||||
> the official 4 before submission, or one stays unofficial/support.
|
> the official 4 before submission, or one stays unofficial/support.
|
||||||
|
|
||||||
| Person | Owns |
|
| Person | Owns |
|
||||||
|---|---|
|
| ---------- | ---------------------------------------------------------------------------------- |
|
||||||
| **Karti** | Repo/infra/plumbing, shared types, memory + continual-learning store, DO deploy |
|
| **Karti** | Repo/infra/plumbing, shared types, memory + continual-learning store, DO deploy |
|
||||||
| **Zander** | Frontend PWA: pod join, capture, PodMan card UI + voice playback |
|
| **Zander** | Frontend PWA: pod join, capture, PodMan card UI + voice playback |
|
||||||
| **Ramis** | Backend realtime: LiveKit room subscribe + frame grab + Gemini vision pipeline |
|
| **Ramis** | Backend realtime: LiveKit room subscribe + frame grab + Gemini vision pipeline |
|
||||||
@@ -141,8 +145,8 @@ reporter the engineer can run. Vision is the headline; the local reporter is a n
|
|||||||
|
|
||||||
1. **(0:00)** Two laptops on screen. Both engineers "join the pod" (QR mock). PodMan greets them by voice.
|
1. **(0:00)** Two laptops on screen. Both engineers "join the pod" (QR mock). PodMan greets them by voice.
|
||||||
2. **(0:30)** Engineer A opens `auth.ts` and starts editing. PodMan quietly notes it (show the team model tick).
|
2. **(0:30)** Engineer A opens `auth.ts` and starts editing. PodMan quietly notes it (show the team model tick).
|
||||||
3. **(1:00)** Engineer B opens the *same* `auth.ts` and edits a related function — **neither has pushed.**
|
3. **(1:00)** Engineer B opens the _same_ `auth.ts` and edits a related function — **neither has pushed.**
|
||||||
4. **(1:20) MONEY MOMENT** — PodMan *interrupts by voice*: "Heads up — Karti and Yahya are both in `auth.ts`, Yahya has unpushed changes. Here's the diff. Want me to open a sync PR?" Card appears with the diff.
|
4. **(1:20) MONEY MOMENT** — PodMan _interrupts by voice_: "Heads up — Karti and Yahya are both in `auth.ts`, Yahya has unpushed changes. Here's the diff. Want me to open a sync PR?" Card appears with the diff.
|
||||||
5. **(1:50)** One click → PodMan opens a draft PR via GitHub (show it on github.com).
|
5. **(1:50)** One click → PodMan opens a draft PR via GitHub (show it on github.com).
|
||||||
6. **(2:20)** Show it **learned**: PodMan now knows Karti owns auth; second scenario it's faster/quieter where appropriate → "more useful the more you use it."
|
6. **(2:20)** Show it **learned**: PodMan now knows Karti owns auth; second scenario it's faster/quieter where appropriate → "more useful the more you use it."
|
||||||
7. **(2:45)** One-liner close: "PodMan — the teammate that sees what git can't."
|
7. **(2:45)** One-liner close: "PodMan — the teammate that sees what git can't."
|
||||||
@@ -176,9 +180,9 @@ VOYAGE_API_KEY=
|
|||||||
## 9. Open risks
|
## 9. Open risks
|
||||||
|
|
||||||
| Risk | Mitigation |
|
| Risk | Mitigation |
|
||||||
|---|---|
|
| --------------------------------------------------- | -------------------------------------------------------------------------------- |
|
||||||
| Realtime vision latency/cost | Sample ~1 frame/sec or on-change; downscale frames; cache last context |
|
| Realtime vision latency/cost | Sample ~1 frame/sec or on-change; downscale frames; cache last context |
|
||||||
| LiveKit ↔ Gemini frame plumbing is the hardest part | Build & de-risk it **first** (step 3); have a screenshot-fallback path |
|
| LiveKit ↔ Gemini frame plumbing is the hardest part | Build & de-risk it **first** (step 3); have a screenshot-fallback path |
|
||||||
| "Unpushed" detection is fuzzy | Lead with vision; optional local `git status` reporter for accuracy |
|
| "Unpushed" detection is fuzzy | Lead with vision; optional local `git status` reporter for accuracy |
|
||||||
| On-stage flakiness | Pre-stage the demo repo, rehearse 3×, have a recorded backup of the money moment |
|
| On-stage flakiness | Pre-stage the demo repo, rehearse 3×, have a recorded backup of the money moment |
|
||||||
| Dashboard-DQ optics | Keep UI minimal; demo PodMan *acting*, not a grid |
|
| Dashboard-DQ optics | Keep UI minimal; demo PodMan _acting_, not a grid |
|
||||||
|
|||||||
Reference in New Issue
Block a user