N°10 · Video studio · 2026 · Tailnet only
H3 Studio
Video, recasts and voiceovers come out of one studio, and a budget guard refuses any job that would take spend past my cap.
- Client
- Internal, my own video and voice work
- Role
- Author · product, engineering, ops
- Built with
- Node 22, Hono, SQLite, React 19, Vite, ffmpeg, the MiniMax-H3 and ElevenLabs APIs, an MCP server for Claude Code
- Status
- Live on my own server · private repo
- Live at
- h3.kamol.dev, reachable only from my private network (tailnet). It isn’t open to the public, by design.

What it does
- 01
Recast, cut at the shot
Swap the people in a clip and keep its motion and cuts. Hard cuts are found with ffmpeg, whole shots are packed into chunks of 15 seconds or less for MiniMax-H3, and the results are trimmed and stitched back in order.
- 02
A budget guard that refuses first
Before a job is sent, settled and in-flight spend are added to its estimate. If the total would pass the cap ($5 of MiniMax, 10,000 ElevenLabs characters), the job is refused, not billed.
- 03
A story needs its source
On the TokensAt10 episode desk, each story slot needs a character, a script and a source citation before it can be produced: voice first, then video, then a kept take. Kept takes export with a manifest of scripts, citations and costs.
The thing to see

Proof
- 16MCP tools, so Claude Code runs the same jobs, ledger and episode desksrc/mcp/tools.ts
- 13tests, all passing offline against mocked providers on Oct 21, 2026npm test
- 15 slongest chunk sent to MiniMax-H3 in one task; longer clips are split at their cutssrc/core/h3plan.ts
No spend total or take count is published. Costs come from the rate card and each provider’s reported usage, and none has been checked against an invoice.
On screen




Captured from the live studio over my private network on Oct 21, 2026, with every write request blocked. It holds no episodes or videos yet, so most screens are empty states.