Show HN: A music video made end to end by Claude Code, full production repo A music video for the Suno song "Always Allow" was produced end to end by Claude Code across six sessions between 28 and 30 Sep 2026, using Midjourney v8.2 for stills, Seedance 2.5 for moving and singing shots, sync-2-pro for lip-sync repair, and Remotion for code-drawn graphics. The production consumed roughly 3,700 tool calls and 1.1 billion tokens and cost $76.60 across fal and OpenRouter, plus a Midjourney subscription, against a brief that paused paid calls at $150 and set a hard stop at $400. The 4:37 video is published on YouTube and X, with the full production repo including runlog.csv, ledger.csv, and song analysis files released alongside it. The full production record for the music video to Always Allow , a Suno song sung by an AI agent asking for "Always allow". The video was made end to end by Claude Code in six sessions between 28 and 30 Sep 2026, with the owner giving notes at checkpoints. It follows the method behind @anabology's ESCAPE VELOCITY https://x.com/anabology/status/2103534482930491441 : - Midjourney v8.2 made every still, driven in the browser by Claude in Chrome. - Seedance 2.5 through OpenRouter made the moving and singing shots, each conditioned on its still and the exact slice of the vocal. - sync-2-pro through fal repaired the lip sync, and the result was measured afterwards, not judged by eye. - Remotion drew everything else in code, on the beat: every piece of type, UI, chart and transition, plus the print texture over the footage. Watch the video 4:37 on YouTube https://www.youtube.com/watch?v=zlL5Rwyquyg or X https://x.com/brudvik/status/2109685404383228023 . The video file itself isn't in this repo. Nobody gave the agent a BPM. tools/analyze song.py runs librosa's beat tracker on the MP3, keeps only the beats with kick and bass under them, and fits a smooth curve through those, because the tempo drifts between 133.97 and 134.43 BPM and a fixed grid would slip. Bar 0 is where the kick comes in at the first drop, and every 4th beat from there is a downbeat. The result, production/analysis/song.json , holds every beat and downbeat time. Everything in the compositor snaps to those times and to the word times in production/analysis/words.json , which come from force-aligning the lyric sheet to the vocal stem wav2vec2, checked against Whisper . 1. BRIEF.md : the instructions every session started from, including the spending limits and the fixed rules. 2. PLAN.md : the song's section map, the first-pass treatment, the pipeline and the cost estimate. 3. research/escape-velocity.md : how the reference video was made. 4. LESSONS.md : what each session learned the hard way, from Midjourney's UI to Seedance's face filter. The other docs call it HANDOVER.md , its name during the run. 5. production/storyboard/QA NOTES.md : the decisions at each checkpoint, the agent's own and the owner's. 6. production/runlog.csv and production/ledger.csv : what each session did, with its tool calls and tokens, and every paid API call. - 6 sessions, about 3,700 tool calls and 1.1 billion tokens production/runlog.csv . - $76.60 across fal and OpenRouter production/ledger.csv , plus a Midjourney subscription. The brief paused paid calls at $150 and set a hard stop at $400. - 119 shots, 67 Midjourney plates, 31 Seedance clips 25 repaired with sync-2-pro , and 14 chapters of code graphics. Always Allow.mp3, Lyrics Suno .txt the song and its Suno lyric sheet BRIEF.md, PLAN.md, LESSONS.md the brief, the plan, the lessons from each session research/ the reference video; lip-sync model research tools/ Python: song analysis, alignment, the Midjourney and Seedance pipeline, sync checks, depth, mattes, tracking, delivery tests/ tests for the paid-call guard, the clip loop and the closure check production/ analysis/ song.json beat grid, sections , words.json word times storyboard/ STORYBOARD.md, shots.json, board.py, Midjourney prompts and manifest, sync reports, QA notes style/ STYLE BIBLE.md, casting and look tests comp/ the Remotion compositor see ANIMATION GUIDE.md ledger.csv, runlog.csv spend per call; one row per session Only the master MP3 is published. The Suno stems production/stems/ , the lip-sync test clips, the Midjourney plates, the Seedance clips, depth maps, mattes and renders are all left out, so the paths to them in the storyboard and sync reports point at nothing. Without them you can still rerun the song analysis, which reproduces song.json exactly, the tests and the lyric layout check. The studio falls back to storyboard cards where footage is missing. A full render needs the media. - Python 3.12 or 3.13: python -m venv .venv , then .venv/Scripts/python -m pip install -r tools/requirements.txt -r tools/requirements-avsync.txt . That covers tools/analyze song.py and the tests .venv/Scripts/python -m unittest discover -s tests . Each heavier tool has its own tools/requirements- .txt . - Node 22: in production/comp , npm ci , then npm run scan it lists the media it finds and writes the git-ignored src/data/ .generated.json , then npm run check:lyrics or npm run studio . - Keys for the paid tools FAL KEY , OPENROUTER API KEY go in .env , which is git-ignored. The commands in the docs are written for Windows .venv/Scripts/python ; on macOS and Linux use .venv/bin/python . The code and docs are under the MIT License LICENSE . The song Always Allow.mp3 and its lyrics Lyrics Suno .txt aren't covered by it: all rights reserved.