Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ Seven ship by default: talking-head, screen-tutorial (real UI only, generated b-

## The skills

16 skills, each self-contained: a skill ships its own defaults (`customize.toml`), scripts, and knowledge, and reads only its own folder, the installed BMad core scripts, and your project files.
17 skills, each self-contained: a skill ships its own defaults (`customize.toml`), scripts, and knowledge, and reads only its own folder, the installed BMad core scripts, and your project files.

| Skill | What it does |
|---|---|
Expand All @@ -130,6 +130,7 @@ Seven ship by default: talking-head, screen-tutorial (real UI only, generated b-
| mc-ograf | Editable broadcast graphics (DaVinci Resolve 21+ and OBS/SPX-GC) |
| mc-assets | Farm b-roll stills/clips via your registered CLI tools (metered APIs opt-in), under generative-editing safety rules |
| mc-audio | Farm sound, local-first: TTS narration and two-host dialogue (Kokoro-82M), instrumental beds (MusicGen-small), SFX (AudioLDM2); paid lanes opt-in |
| mc-prompter | Browser teleprompter for the record stage and standalone shows: voice-follow scrolling (local streaming ASR) and producer mode (rundown-driven live shows with a timing rail, broadcast cues, and an OBS overlay; local Ollama opt-in) |
| mc-package | Titles, thumbnails (verified at 120px), description, chapters, series A/B pairs, live-event mode |
| mc-stream-pack | A complete branded OBS livestream asset pack |
| mc-retro | Your post-publish notes edit the pipeline's own files, plus the post-publish wrap lane |
Expand All @@ -144,6 +145,7 @@ Taste lives in files (your voice bible, Production Bible, format profiles, brand

- Proven in production: the full cut lane (parakeet-mlx word-level transcription validated on real footage, cut candidate detection, edl.json, FCPXML export, preview render with boundary-frame verification), Manny as the front door, setup and dependency checking, config resolution, project scaffolding, the OBS stream pack, and the retro loop.
- New in 1.0, implemented and unit-tested, with the least real-project mileage: the render lane (composited preview and the offered final render), the expanded setup interview (render consent, video style, creator-emulation takeaways, headshots, guided voice bible), the Production Bible, creativity mandates and the CTA system, footage-first ingest and the livestream-vod format, series support, graphics render verification, the graphics toolkit (HTML render, snug framing, design-prompting lane), CLI-registry asset farming, and the mc-audio local sound lanes (validated end to end on Apple Silicon 2026-07-07).
- Newest, implemented and unit-tested since that date: mc-prompter, the browser teleprompter service skill (classic prompter, voice-follow via local streaming ASR, and rundown-driven producer mode with an opt-in local Ollama lane).
- The writing lane (braindump, outline, script) is the core promise and is wired end to end with live blacklist linting; it has had the least real-video exercise of the core stages, so treat your first run through it as a shakedown and feed mc-retro afterward.
- Planned: Premiere (xmeml) and CMX3600 EDL export lanes, per-episode stream packs with the Ecamm target (the named 1.0.x fast-follow), multitrack recording support, local-first TTS/SFX/music lanes, and a research/show-prep skill. See [TODO.md](TODO.md) for the full roadmap.

Expand Down
8 changes: 8 additions & 0 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ State as of 2026-07-07, the 1.0.0 release. Read AGENTS.md first (module conventi
- resolve_import.py: push the exported timeline into a running DaVinci Resolve. Requires Resolve Studio (the scripting API is not in the free edition); the mc-cut offer stays gated on the script's implemented status. Native scripting remains the documented path; no MCP dependency.
- HyperFrames engine workspace initialization at a pinned version on the first real graphics run (upstream is pre-1.0 and moves fast; v0.7.26 as of 2026-07-03).

## mc-prompter fast-follows

- Kokoro spoken cue tier: short formulaic phrases ("thirty seconds", "wrap") synthesized by a persistent kokoro instance, released only at pauses, headphones-only output (what keeps browser AEC unnecessary). Designed in mc-prompter's references/cueing.md; ships behind the `[prompter]` spoken-cues flag, which stays false until this lands.
- zipformer-small ASR validation: model exports are coupled to the sherpa-onnx runtime generation (the 2023 zipformer export silently produces garbage under the pinned 1.13.4; it decodes correctly only under 1.10.x). The lane stays planned and exits with a pointer until a current-generation small export is validated end to end.
- TLS for remote mic capture: getUserMedia needs a secure context, so tablet-as-mic over LAN requires shipping TLS; today the microphone is captured only on the server machine.
- Take-log consumption by mc-cut: mc-prompter's session take log (script positions and timestamps per take) pre-anchors cut plans.
- sherpa-onnx offline parakeet export: the candidate for the cross-platform transcription lane (see below); the prompter's sherpa-onnx dependency makes it cheaper to validate.

## 1.x roadmap

### Multitrack and multicam support
Expand Down
42 changes: 41 additions & 1 deletion docs/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,46 @@ Footage-first, when the video already exists:
1. Hand Manny the file ("cut this VOD", "make a video from this recording"). mc-new's ingest mode registers the source and writes a post-production stage list that starts at cut.
2. The same gates apply from the cut stage onward: cut plan, beats with CTAs mined from the transcript, graphics, packaging with dual-timeline chapters, the final render offer.

## 10. Formats
## 10. The teleprompter

mc-prompter is a service skill, not a stage: say "prompt me" or "record with the teleprompter" and it launches a local browser prompter for the recording you were going to do anyway. It comes in three tiers, and each one is optional on top of the one below.

The classic prompter needs nothing extra: no models, no downloads, no workspace. It serves a fullscreen scrolling display with the standard feature set (mirror flips for beam-splitter rigs, adjustable speed and fonts, countdown, timed mode, section jumps), a home page for loading or pasting text, and a phone remote over LAN whose URL carries a per-session token. Inside a pipeline project it prompts `script.md` directly and understands its markers: `[TAKE ...]` lines render dimmed because they were already spoken well on the interview footage, and `[INVENTED]` flags show as subtle badges. Editing from the home page backs up the file before writing, so the prompted text and the pipeline artifact never diverge.

Voice-follow makes the scroll track your voice through the script using local streaming ASR. It needs the prompter-lab workspace (default `manticore/engines/prompter-lab`): a one-time download of about 465 MB of model files plus a small venv, and nothing downloads without your explicit go-ahead. Declining always leaves the classic prompter working. The first enable runs a preflight: pick your microphone, watch the level meter, and read a few words until the tracking check passes. After that, silence or ad-libs hold the scroll and it resumes when you return to the script; clicking any word re-anchors instantly. The microphone is captured on the machine running the server, so a tablet pointed at the page is display-only.

Producer mode is for shows that run on talking points instead of a word-for-word script. You write a rundown, a small markdown file (a starter template lands in `{brand-path}/templates/rundown-template.md` during setup):

```markdown
---
show: "Why local models win"
duration-minutes: 30
cue-density: normal
wrap-minutes: 3
---

## Intro (3 min)

Full scripted intro text, prompted normally.

## Point 1: The cost argument (5 min)

- cloud bills compound, local is capex
- the anecdote that proves it

## Wrap (3 min)

Scripted wrap text.
```

Segments with prose prompt like a script; segments with only bullets become tracked talking points. Time budgets are optional, `wrap-minutes` protects your closing segment, and the home page shows the reconciled plan (with any warnings) before you go live.

Running a show: hit GO LIVE on the prompt page or the phone remote to start the show clock. A rail shows elapsed time, the current segment with its remaining time in green, yellow, or red, and your next uncovered point; when you run long, the remaining time is replanned across what is left rather than just turning red. Cues speak broadcast in two tiers: quiet cards ("30 seconds", "STRETCH", "DROP: point 4, or 90s each") appear at your configured density, while "WRAP" and the overtime clock ("2:30 OVER") flash as high-contrast attention cues that ignore the density budget. Hold freezes the clock during technical trouble. The remote is your override authority: tap any point to mark it covered or skip it, jump between segments with make current, and the producer never un-marks anything you decided.

For OBS, add `/overlay` as a browser source: it is transparent and renders only the rail, the cue cards, and small connection and voice-tracking badges, so your live audience sees a clean frame while you see the producer.

What requires Ollama: only the coverage judgments, where a small local model (default `qwen3:4b`) reads the rolling transcript and proposes which points you have covered. Everything else in producer mode, the rail, the replanning, and every time cue, is deterministic code and works with no LLM at all; without Ollama you mark points covered from the remote yourself. Nothing metered, nothing cloud: the `[llm]` lane is local-first like every other lane.

## 11. Formats

Your `manticore/formats/` copies are yours to edit; each profile decides which stages run, carries structured density and beat-type frontmatter, and holds a Learnings section that retro appends to. Seven ship by default: talking-head, screen-tutorial (bans generated b-roll: real UI only), voiceover-explainer (narration is creator-recorded until the TTS lane lands), short (9:16 re-edit of a parent project), livestream-pack (an OBS asset pack, not a video), livestream-vod (footage-first post-production of a stream recording), course-lesson. A new format is a new markdown file.
5 changes: 5 additions & 0 deletions skills/mc-agent/customize.toml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ code = "HP"
description = "What can I do here? Everything installed, Manticore and beyond"
prompt = "Read {project-root}/_bmad/_config/bmad-help.csv (the merged catalog of every installed skill across all modules) and present what is actually available, grouped by module, surfacing only what is relevant to where the creator is. For anything Manticore-side needing more depth, load references/skills-map.md. If the catalog is missing, the studio is not built yet: route to onboarding."

[[agent.menu]]
code = "PR"
description = "Teleprompter: prompt me, run my show, producer mode with a rundown"
skill = "mc-prompter"

[[agent.menu]]
code = "GS"
description = "Grow the studio: add a new skill or capability to Manticore"
Expand Down
4 changes: 2 additions & 2 deletions skills/mc-pipeline/PIPELINE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ The master spec for the Manticore pipeline, owned by mc-pipeline (the router). I

Conventions used below:

- The studio config is the `[modules.manticore]` table in `{project-root}/_bmad/custom/config.toml` (personal overrides in `config.user.toml`), created by mc-setup and resolved with `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key modules.manticore`. Table names like `[owner]`, `[paths]`, `[video]`, `[render]`, `[style]`, `[cta]`, `[live]`, `[editor]`, `[transcription]`, `[assets]`, `[mcp]` refer to its sub-tables. (`[defaults.*]` names appear only inside mc-setup's `customize.toml`, the seed that mc-setup copies from; a resolved studio config has no `[defaults]` table.)
- The studio config is the `[modules.manticore]` table in `{project-root}/_bmad/custom/config.toml` (personal overrides in `config.user.toml`), created by mc-setup and resolved with `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key modules.manticore`. Table names like `[owner]`, `[paths]`, `[video]`, `[render]`, `[style]`, `[cta]`, `[live]`, `[editor]`, `[transcription]`, `[assets]`, `[prompter]`, `[llm]`, `[mcp]` refer to its sub-tables. (`[defaults.*]` names appear only inside mc-setup's `customize.toml`, the seed that mc-setup copies from; a resolved studio config has no `[defaults]` table.)
- `{projects-path}`, `{brand-path}`, `{formats-path}`, `{engines-path}` are the `[paths]` values resolved against `{project-root}`. If `[modules.manticore]` is empty, run mc-setup first; no stage skill proceeds without it.
- Per-skill defaults and overrides live in each skill's `customize.toml`, resolved with `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root}`. Skills read only their own folder and project files, never another skill's folder.
- "the creator" is the human owner configured in `[owner]`; skills address them by their configured name.
Expand All @@ -19,7 +19,7 @@ Format profiles select a subset of these stages (see the `stages:` frontmatter o
| 2 | braindump | mc-braindump | | `braindump.md` (verbatim) |
| 3 | outline | mc-outline | gate 1: outline | `outline.md` (hooks + outline + packaging promise) |
| 4 | script | mc-script | | `script.md` (lint passed, craft QA passed) |
| 5 | record | the creator | | `raw/*` recordings, constant frame rate |
| 5 | record | the creator | | `raw/*` recordings, constant frame rate. The mc-prompter service skill offers an optional teleprompter for this creator-owned stage. |
| 6 | cut | mc-cut | gate 2: cutplan | `transcript/words.json` (suffixed `<source-id>.words.json` when a project has multiple sources), `cut/candidates.json`, `cut/cutplan.md`, `cut/edl.json`, `cut/rough.fcpxml` (per `[editor] timeline-format`; `none` skips), `renders/preview.mp4` (fast low-res preview, re-rendered each iteration; once stage 8 has rendered overlays, the router sends the project back through mc-cut to re-render it with graphics composited) |
| 7 | beats | mc-beats | gate 3: beats | `beats/beats.md` (the beat table), `beats/STORYBOARD.md` |
| 8 | graphics | mc-graphics | | `graphics/` alpha MOVs + `graphics/HANDOFF.md`; on completion the router routes through mc-cut to re-render `renders/preview.mp4` with the overlays composited |
Expand Down
Loading
Loading