| name | pitch |
| description | Run a live investor/demo pitch where TerranSoul (the pet) narrates a web slide deck aloud. The pet starts hidden; when the presenter clicks 'Click to reveal!' on slide 4, it appears, thanks Darren, introduces itself, and presents slides 5–9 — including a 30s walk through its human-brain architecture and the by-the-numbers comparison. |
| argument-hint | [event slug, default: southwest2026] |
| compatibility | Windows/macOS/Linux. Auto-installs recommended setup (incl. TTS/voice) and runs TerranSoul with CDP on :9222 via `npm run dev:recommended-setup`. Needs Playwright + chromium and Ollama. |
| user-invocable | true |
| disable-model-invocation | false |
What this does
A two-presenter pitch:
- Darren presents slides 1–4 by hand (arrow keys / click).
- On slide 4 he clicks "Click to reveal!" → the hidden TerranSoul pet
appears, says "Thanks, Darren!", introduces itself, and presents
slides 5–9 on its own — speaking each line aloud (synced mouth + emotion)
while the deck advances in lock-step.
- Slide 7 ("Why Me?") embeds the live brain-architecture diagram; the pet
highlights each region (Focus, Graph, Recall, Memory, Affect, Skills, the LLM
core and the MCP nerve) for a ~30s walkthrough, then pitches the intention:
better memory + knowledge representation, retrieval, and updation — a
different problem from Claude Code / OpenClaw / SIA, aimed at memory-heavy
read+update work, and able to serve as external memory shared with other LLMs.
- Slide 8 is the combined comparison (COMPARISON.md + SELF-IMPROVE-COMPARISON.md)
rendered as charts; the pet highlights the numbers.
Default event slug is southwest2026. Pass a different slug to present another
deck under docs/pitch/<slug>/.
Moving parts already in the repo:
- Deck:
docs/pitch/<event>/index.html + deck.css + deck.js (exposes window.TSDeck).
- Narration:
docs/pitch/<event>/pitch-script.json (ordered beats).
- Pet bridges:
window.__tsPitchControl (enter pet mode / hide / show) and
window.__tsPitch.say() (speak a line + caption, resolves when audio ends).
- Driver:
scripts/pitch/present.mjs (CDP orchestration).
Step 0 — Auto-install all recommended setup
Per the project rule, fix/install rather than work around. This makes the demo
runnable from a clean machine, including the brain models and TTS/voice.
-
Run the prerequisites installer and let it install anything missing:
- Invoke the /setup-prerequisites command (Node ≥ 20, Rust, Tauri CLI,
WebView2 on Windows). Re-verify after install.
-
Ensure the Playwright browser is present (the driver launches the deck full-screen):
npx playwright install chromium
-
The recommended models are installed automatically — in two aligned
places, both running the same work as the first-launch "Recommended +
Auto-accept all" popup (no manual clicking):
npm run dev:recommended-setup (Step 1) → App.vue runAutoRecommendedSetup
runs it headlessly on startup and defers app-ready until it completes:
brain.autoConfigureLocalFirst({ targetModel: 'gemma4:12b-it-qat' })
(ensures Ollama, pulls/activates gemma4:12b-it-qat chat and
embeddinggemma embedder — the backend PREFERRED_EMBED_MODEL) +
voice.downloadSupertonic() (on-device Supertonic TTS voice).
scripts/pitch/present.mjs (Step 2) re-runs the same via
scripts/pitch/ensure-setup.mjs as a safety net — idempotent and fast
when the app already configured it.
A first-run cold model pull can take several minutes; app-ready waits for
it. Skip the presenter's safety-net pass with TS_PITCH_SKIP_SETUP=1;
override the chat model with TS_PITCH_CHAT_MODEL. Both paths fail-open: if
a step fails, the pet still speaks via the browser-speech fallback with
captions, so the demo never blocks.
Step 1 — Launch TerranSoul with recommended setup + CDP
In a separate terminal (keep it running):
npm run dev:recommended-setup
Wait until both are reachable:
curl -s http://127.0.0.1:9222/json/version | head -3
curl -s http://127.0.0.1:1420 -o /dev/null -w "%{http_code}\n"
If they are not up yet, wait and retry — do not proceed until CDP responds.
Step 2 — Run the presenter
node scripts/pitch/present.mjs southwest2026
The driver will:
- serve the deck + brain page over one local origin,
- attach to the app over CDP, put it in pet mode, and hide the pet,
- open the deck full-screen,
- print: "deck open. Darren presents slides 1–4; click 'Click to reveal!' on slide 4."
Step 3 — Present
- Darren walks slides 1 → 4 (→ / Space to advance, ← to go back).
- On slide 4, Darren clicks "Click to reveal!".
- TerranSoul appears and presents 5 → 9 on its own. Nothing else to do.
- After the close, the pet and final slide stay up. Press Ctrl-C in the
driver terminal to end (it exits pet mode and closes the deck window).
Editing the pitch
- Words: edit
docs/pitch/southwest2026/pitch-script.json — each beat is
{ "slide", "text", "emotion", "action?" }. action is highlight:<regionId>
(brain region on slide 7), appear, or clear. Keep language factual.
- Slides: edit
docs/pitch/southwest2026/index.html. Adding/removing a slide
changes the slide numbers referenced in the script.
- Charts (slide 8): the numbers live in
docs/pitch/southwest2026/deck.js
(buildCompareSlide), sourced from benchmark/COMPARISON.md and
benchmark/SELF-IMPROVE-COMPARISON.md.
Notes
- One bench/MCP discipline still applies; this skill does not start a bench.
- The pet overlays the full-screen deck as a transparent always-on-top window;
put the deck window on the projector/output display before revealing.