The MakeRoll UGC pipeline kit runs on your own Mac. It takes a short 2D animated show (script beats, characters, their voices, a visual style) through eight stages and ends with a captioned 1080 × 1920 video. It won't call the video done until its own scorer rates it 95/100 or higher.
Re-running picks up from cache. A paid image or voice line is bought again only when its inputs change, so fixing one line of the script doesn't re-buy the whole cast.
# one command, eight stages$./ugc run1 teardown 2 script
3 cast 4 voice
5 mouths 6 animate
7 assemble 8 score# exit 0 only at 95/100 or higher
8 stagesEach one cached on a hash of its inputs
3 paidOnly cast, voice and mouths call a paid model
95/100Hard gate. Below it the run exits 2
Free dry runPrints the plan and the estimate, spends nothing
It suits creators and small brands who want to make episodic 2D character shorts and don't mind typing commands into a terminal on a Mac. You won't write code. You edit plain text and JSON files, then run the commands on this page. It isn't a phone app, it doesn't post anything for you, and it can't promise anyone will watch.
The kit is the animated-story version of the pipeline. The photoreal UGC ads in MakeRoll's case studies came from a separate ad workflow that isn't part of the kit.
A real run, not a mock-up
What one run produces
Below is the kit's starter episode as ./ugc run rendered it on 1 Oct 2026, from a fresh unzip of the kit. Nothing was edited after the score stage passed it. The copy here is re-encoded to 720 × 1280 so it loads quickly. The kit writes 1080 × 1920.
One Prompt, the starter episode. 74.7 s, two characters, 25 script lines. The captions are part of the picture. The CC button adds the same lines as a text track for screen readers.
Gate score96.89/100
The pass mark is 95. Lip sync scored 25 of 25 and voice delivery 12 of 15, the lowest of the eight checks.
Voice spend$0.0725
The only paid call in this run, measured as the treg balance before the run minus the balance after. The stills and mouth shapes came from the starter pack's cache.
Wall time237 s
Two invocations. The first bought the voice lines, then its own trim check failed on one line and it stopped after 50.8 s (exit 1). Running it again reused the cached voice, spent nothing more and finished in 186.2 s.
PlatformmacOS
macOS 26.6 on an Apple silicon Mac.
The same episode on a second machine
Machine
Score
Voice spend
Wall time
macOS 26.6, Apple silicon (the video above)
96.89
$0.0725
237 s in 2 runs
Ubuntu 24.04 arm64, fresh container
98.26
$0.0725
253 s in 1 run
Both runs were on 1 Oct 2026. Scores come from each run's final/quality_report.json, spend is the treg balance before the run minus the balance after, and wall time comes from the kit's own run log. A first episode with a new cast also buys its stills and mouth shapes, see running costs.
Nadia and Greg are AI-generated fictional characters. AI models made their faces and voices, and they aren't real people, MakeRoll members or customers. The video says "Made with AI" in the picture.
Connect your AI agent
One line in. The kit sets itself up.
After a Lifetime payment the bot sends you a member key and one line for your AI agent. Paste that line into an agent that can run commands in your terminal, such as Claude Code or Codex, and it installs the kit and checks it. Nothing to unzip.
A
Give your agent this line
The bot's message has it with your own key filled in, so copy it from Telegram. It looks like this:
Set up the MakeRoll UGC pipeline: https://makeroll.com/ugc-pipeline/agent.md key: mrk_...
The agent reads agent.md, a short public instruction file, then runs the installer below with your key.
B
Or run the installer yourself
Same result, no agent needed. Replace YOUR_KEY with the key from the bot's message.
curl -fsSL https://makeroll.com/ugc-pipeline/install.sh | sh -s -- YOUR_KEY
It downloads every kit file with your key, checks each one against its SHA-256 checksum, unpacks the kit into ~/makeroll-ugc-pipeline, saves the key to ~/.makeroll/key where only you can read it, runs the kit's own install.sh, and adds the MakeRoll skill for Claude Code and other agents. It's safe to run again, it picks up where it stopped, and it never uses sudo without asking.
What the agent does
It installs and verifies the kit, runs ./ugc doctor and then a free dry run, and shows you the estimated spend. It starts a paid run only after you say yes, and it never passes --force or --allow-orphans without your OK.
The one step that's yours
Sign in to treg.to, which pays for the AI calls. Run treg login, finish the sign-in in the browser that opens, and decide whether to top up. Step 2 shows how. Your agent can't sign in for you, and it shouldn't try.
Your key is personal. Don't paste it into a public chat or commit it to a repository. Lost it, or think someone else has it? Send /pipeline newkey to the bot and the old key stops working. Prefer to do it all by hand? The setup steps below cover the same ground.
How you get it
Four steps, from bot to agent
The guide, the system requirements, the licence and the refund policy are public. The kit goes only to Lifetime members. The bot sends your member key, and the key unlocks the download, so there's no account to manage.
Choose Lifetime in the bot
Open @MakeRollMembershipBot and pick Lifetime. Also included with the $199 one-time plan, and separate from the core service, is a personal licence to the kit. Weekly membership doesn't include it. Read the licence and the refund policy before you pay. The kit is final once it's delivered.
The bot replies with a secure Stripe Checkout link. Stripe handles the card, so MakeRoll never sees the number.
Get your member key
After verified payment the bot sends your members-room invite, then your member key (it starts with mrk_), the line for your AI agent, the installer command, and one file, the core kit zip, for a manual setup. The installer downloads the rest with your key. Lost the key? Send /pipeline newkey to the bot while your Lifetime membership is active.
Connect your agent
Give your AI agent the line from the bot, or run the installer yourself, as shown above. The setup steps below cover the manual route and everything after the install.
Step by step
From key to first video
Every command below has a copy button. Run them in a terminal, in order. If your agent or the installer has already set the kit up, check step 2 and go on from step 4. Steps 1 to 5 cost nothing (the top-up in step 2 adds credit, it doesn't spend it), and step 6 is the first one that can spend from your treg.to balance.
01
Check the system requirements
You need a Mac with macOS 13 or later, Python 3.9 or newer, ffmpeg with ffprobe, the treg command line tool 0.22 or newer (step 2 installs it), a treg.to account with credit and an internet connection. Leave about 1 GB of free disk. A clean test install with one finished episode used about 0.7 GB, plus about 0.1 GB for treg.
install.sh also has an apt route for Ubuntu 22.04 or newer, but so far only the macOS route has been tested end to end. On Windows, the only route is WSL2 with Ubuntu, and it's untested. Check Python and ffmpeg now.
Missing ffmpeg? With Homebrew installed, one command adds both ffmpeg and ffprobe.
brew install ffmpeg
02
Set up treg.to
Every paid call (character stills, voice lines, mouth shapes) goes through treg.to, which keeps the AI vendors' keys on its own servers and bills each call to a prepaid balance you control. You pay treg directly, per call, and only for calls the pipeline makes. You don't need accounts with Google, OpenAI or MiniMax.
2a Install uv
The treg tool needs Python 3.12 or 3.13, and a stock Mac ships 3.9, so its installer stops unless uv is there first. uv downloads the right Python by itself and doesn't touch your system Python. Skip this if uv --version already prints a version.
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv --version
2b Install the treg command line tool
curl -fsSL https://treg.to/install.sh | sh
treg --version
You want 0.22.0 or newer, and treg update upgrades an older one. If you see treg: command not found, run uv tool update-shell and open a new terminal window.
2c Sign in
treg login
Your first sign-in creates the account. A browser opens with GitHub, Google or an emailed code. Check that the code it shows matches the one in your terminal, and if it asks you to name a team, any name works. If the terminal asks New here? Want a quick setup?, answer n, since the pipeline doesn't need it. No browser on that machine? Run treg login --email you@example.com and type the 6-digit code from the email.
2d Make sure you have a team
treg org ls
treg bills a team, and the pipeline spends from the active one, marked with *. If the list is empty or sign-in said Active org: None, sign in at treg.to in your browser, name your first team there, then run treg login again.
2e Check your balance and top up
treg balance
New accounts usually get $1.00 of free credit once, though treg doesn't promise it. If you get it, it covers one first episode of the starter show. After that, the smallest top-up is $10. To add $10, run the command below. It prints a Stripe payment link, and the balance updates seconds after Stripe confirms. Bigger top-ups get bonus credit (5% at $50, 10% at $100, 15% at $200).
treg topup 10
One secret does live on your computer: your treg token, in ~/.treg/config.json, readable only by you. Anyone with that file can spend your balance, so never share or commit it. The treg tool also sends anonymous usage stats (command, exit code, duration, OS), which export TREG_TELEMETRY=0 turns off.
03
Install the kit
Run the installer with the member key from the bot. It downloads the core kit and the starter files, checks them and installs everything into ~/makeroll-ugc-pipeline. Keep the kit out of Desktop, Documents and Dropbox, where a synced file can be moved to the cloud while a run reads it and the run stalls.
curl -fsSL https://makeroll.com/ugc-pipeline/install.sh | sh -s -- YOUR_KEY
cd ~/makeroll-ugc-pipeline
ORThe manual route
Prefer to unpack it yourself? Save the core zip from the bot's message, unzip it into your home folder and run install.sh with your key. install.sh then downloads the starter files by itself.
cd ~
unzip ~/Downloads/makeroll-ugc-pipeline-v2.zip
cd makeroll-ugc-pipeline
MAKEROLL_KEY=YOUR_KEY ./install.sh
Saved the zip somewhere else? Type unzip with a space, drag the file into the terminal window to paste its path, then press Return. The starter show needs the starter files. Its hand-made character stills and pose plates can't be generated, so without them preflight stops the starter run (exit code 4) before anything is spent.
install.sh checks Python, ffmpeg and ffprobe, a caption font and the treg command line tool from step 2. Run by hand, it asks before it installs anything. The Python packages (numpy, SciPy, Pillow) go into a private .venv folder inside the kit, nothing system-wide, and it never runs sudo without showing you the exact command first. It's safe to run again, and ./install.sh --check only reports.
04
Run the doctor
./ugc doctor
It checks your environment, every file the stages need and the cost model. When something's wrong it names the file or tool and exits with code 6, long before anything can spend money.
05
Do a dry run Free
./ugc run --dry-run
You get the plan for all eight stages and the estimated spend, worked out from the kit's price table. Nothing executes, nothing is submitted and nothing is charged. It still tells you whether preflight would refuse to start, for example because your treg balance won't cover the estimate.
06
Make the video Spends credit
./ugc run
The stages run in order. If one stops, fix what it names and run the same command again. Finished stages are skipped, and stills or voice lines whose inputs haven't changed come from disk instead of being bought twice.
Exit code 0 means the video passed the 95/100 gate. Exit code 2 means the video exists but scored under the gate, and the report tells you which dimension lost the points.
Preflight says the balance is too low (exit code 4)? Nothing was spent. Check with treg org ls that the team with credit is active, top up with treg topup 10, then run ./ugc run again.
07
Find your video
The finished master lands at final/one_prompt_master.mp4 inside the kit folder. The score report, with every dimension and its points, sits next to it at final/quality_report.json.
The kit's starter show is “One Prompt”, a 25-line office skit with two characters, Greg and Nadia. With the starter files installed, their stills, mouth shapes and poses are already built, so the first real run only pays for the voice. The kit's own test run on macOS scored 96.89/100 for $0.0725 of voice, with about 4 minutes of paid stages.
08
Make your own episode
./ugc new my-show
This creates ~/ugc-shows/my-show, a copy of the starter show's inputs (cast stills, mouth shapes, script, voice plan) that shares the kit's engine, so an engine fix reaches every show. Write your lines in production/beats.json, one beat, speaker and line each, then sync the voice plan and check the estimate.
cd ~/ugc-shows/my-show
python3 bin/plan_voice.py --write
./ugc run --dry-run
With the same characters, only the voice lines are new, which makes it the cheapest kind of run. Want your own cast? Run ./ugc new my-show --blank instead. You get an empty template and a checklist of every value still marked TODO in production/project.json, such as the script, the voice plan, the set and style prompts and each character's look.
09
Everyday commands
./ugc status
What's built, what's stale, what's broken and who holds the run lock.
./ugc log
Past runs with exit code, score, estimate, real spend and wall time.
./ugc cost
Your balance, spend grouped by endpoint and any paid job still in flight.
./ugc run --from voice
Resume from one stage and run everything after it.
./ugc run --only score
Run exactly one stage. Handy for re-scoring after a manual edit.
./ugc run --force
Ignore the cache and rebuild everything, paid stages included, so it spends credit again. You rarely need it.
Running costs
What a run costs you
MakeRoll doesn't charge per video. Your own treg.to balance pays each paid call at treg's price, and only three stages make paid calls. Cast draws the character and set stills, voice speaks the lines with word timings, and mouths draws each character's mouth shapes. The other five run on your computer for free.
Stage
What it buys per episode
treg price
Cost
cast
6 images, character and set stills
$0.03 per image
$0.1800
voice
1,642 input characters, dialogue audio + word timings
$0.60 per 10,000
$0.0985
mouths
42 images, mouth-shape
$0.008 per image
$0.3360
5 other stages
teardown, script, animate, assemble, score, all on your computer
free
$0.0000
A new cast, first episode
Every paid call, nothing cached yet. A dry-run estimate, not a measured run
$0.6145 estimate
Next episode, same characters
Stills and mouth shapes come from cache, so only the voice lines are bought
$0.0725 measured $0.0985 estimate
Prices come from treg's catalog and its settled ledger, checked 1 Oct 2026, on the two-character show the kit's starter is built from (the-alignment-series / ep01-im-on-the-call). The next-episode figure is a measured run on 26 Sep 2026, and the kit's starter episode measured the same, 96.89/100 for $0.0725. Preflight wants a balance of at least 1.15 times the high estimate, $0.71 for a new cast's first episode, or the run refuses to start. treg's prices can change, so the dry run is the number to trust on the day.
Before any paid stage starts, preflight compares the estimate with your balance and refuses to begin if it's short. It also refuses any run whose estimate is above your own cap, budget.max_run_usd in project.json ($1.00 for the starter show). An empty balance stops a run at the start, not halfway through a paid job. treg sets its own prices and can change them. ./ugc run --dry-run shows the estimate before you commit, and ./ugc cost shows what you've actually spent.
Under the hood
Eight stages, each one checked
Every stage declares the files it must leave behind, and the runner checks they're real. An mp4 has to decode with a non-zero duration, a JSON file has to parse and carry its keys, and a PNG can't be a blank fill. Empty output never counts as success.
1Free
teardown
Loads the reference measurements the final score grades against, and fails early if any are missing.
research/targets.json
2Free
script
Measures the screenplay against seven countable comedy defects and refuses a script built wrong, before anything is paid for.
production/beats.json
3Paid
cast
Draws the characters and the set. Every still is anchored to one master shot, so faces stay the same from shot to shot.
production/stills/
4Paid
voice
Speaks every beat to its own audio file and saves the exact time each word starts and ends.
audio/beatNN.mp3
5Paid
mouths
Draws seven mouth shapes per character in the show's own style, then turns the word timings into a frame-by-frame mouth track.
mouths/
6Free
animate
Holds each still steady and moves only the mouth and eyelids on top, the way limited 2D animation does.
production/clips/
7Free
assemble
Cuts to the real audio rather than script estimates, burns in the captions and masters the file.
final/
8Free
score
Rates the master on eight weighted dimensions. Under 95/100, the run exits 2.
final/quality_report.json
Runs on your computerCalls a paid model through treg.to
The 95/100 gate
What the score measures
Before it scores anything, the scorer fires each detector at a test signal it must catch. If a detector misses its own test, that dimension scores 0 and reads BROKEN. It never reports a pass because it found nothing.
Lip sync carries the most weight. It compares mouth movement with the speech in each shot and is also checked against reversed audio, so a mouth flapping at random can't score.
Lip sync 25
Voice delivery 15
Animation cadence 10
Edit rhythm 10
Caption craft 10
Audio master 10
Technical container 10
Disclosure and branding in the picture 10
0
Every stage ran or was cached, and the video cleared 95/100.
1
A stage failed or left an implausible file.
2
The video exists and was scored, but under 95.
3
No score report, so no claim of success.
4
Preflight refused, for example a low balance or an outstanding paid job.
5
Another run already holds the lock.
6
The doctor found something broken.
Before you post
The characters are AI. Tell your viewers.
Every character the pipeline draws and voices is AI-generated and fictional. The starter show's project.json sets a disclosure line, and the score stage checks it's really in the picture. When you publish, switch on the platform's AI-content label too.
Never present a character as a real person, customer, reviewer or testimonial. In the US the FTC's rule on fake reviews bans testimonials from people who don't exist, and EU consumer law has similar rules. MakeRoll's own case pages label every character the same way: an AI-generated fictional character, not a real MakeRoll member, customer or testimonial. The checks MakeRoll runs before anything ships are on the AI video disclosure rules page.
A passing score means the craft checks passed (sync, timing, captions, sound). It says nothing about views, followers or sales. No run promises any of those, or even a passing score.
Licence summary
What you can do with the kit
Licence version 2026-10-01. You can read the full licence before you pay, and it ships in the kit as LICENSE.md. Here's the short version. If the two ever differ, the full text wins.
You may
Install and run the kit on computers you own or control, and keep backups. Change the code, prompts and settings for your own use.
Make videos for your own brand and for clients, as long as you run the kit yourself and deliver the finished videos.
You may not
Share, resell, lend or publish the kit or a changed copy, including to teammates, clients or other members. Asking for help with a short excerpt in the private MakeRoll room is fine.
Offer the kit, or anything built on it, as a hosted service, app, bot or API that other people run.
Your videos
As far as MakeRoll is concerned, what you make belongs to you. The AI providers treg calls for you have their own terms, and whether AI output can be copyrighted depends on where you live.
When it ends
The licence is personal to you. It ends if you withdraw, if your Lifetime payment is refunded in full, or if it's charged back. Then your member key stops working, and you stop using the kit and delete every copy within 14 days. Your mandatory consumer rights stay as they are.
Not natively. treg has no Windows installer and the kit needs bash. The only route is WSL2 with Ubuntu, following the Linux steps inside the Ubuntu terminal, and nobody has tested it yet. For treg login there, open the printed link in your Windows browser or use treg login --email.
Do I need to know how to code?
No. You type the commands on this page and edit text and JSON files in any editor. Reading an error message helps, and ./ugc doctor names the file or tool that's wrong.
Can I post or sell the videos I make?
Yes, for your own brand and for clients. As far as MakeRoll is concerned the videos belong to you. You're responsible for your inputs (nobody's likeness, voice or audio without permission), the terms of the AI services treg calls for you, and each platform's AI-disclosure rules. Read the disclosure rules before you publish.
What about refunds?
Lifetime Checkout lists two items with their own prices, the kit licence at $149 and the lifetime membership at $50, $199 in total. The kit is final once it's supplied, which is when the bot sends your member key, seconds after payment. At checkout you ask for that and accept that you lose your right of withdrawal for the kit. Within 14 days of payment, /withdraw or makeroll.com/withdraw/ still refunds the unused part of the $50 membership-service share, pro rata. Instead of a refund window you get 90 days of written setup help at support@makeroll.com. The refund policy has the details, including your rights if the kit doesn't work as described.
A full refund, a refund of the kit licence or a chargeback ends your licence and revokes your member key, so the installer, your agent and /pipeline stop working. Stop using the kit and delete every copy within 14 days. A withdrawal from the membership after the kit was supplied doesn't: your licence and key stay.
Can it spend money without asking?
Only the cast, voice and mouths stages spend, and only when their inputs changed or you pass --force. The dry run shows the estimate first. Preflight refuses to start when your balance won't cover it or a paid job from an earlier run is still outstanding, and paid work is never retried automatically.
What if my video scores under 95?
The run exits with code 2 and keeps everything. Open final/quality_report.json, find the dimension that lost points, fix that input and run ./ugc run again. Only the stages after your change re-run.
Can Michael set it up for my brand?
Setup help from Michael Lip for your own brand or site is an optional extra for Lifetime members, on request. It's agreed in writing, no outcome is promised, and you pay your own AI generation costs either way.
Is this guide only for members?
Anyone can read it, and every command here is the real one. Only the kit itself is limited to Lifetime members. The bot sends the member key that unlocks it after payment, and agent.md and the installer are public too.
One command. Your show.
Lifetime is $199 once. It covers the MakeRoll core service for its lifetime, at least 24 months, and a personal licence to this kit, which is separate from the core service. Checkout lists them as two items: the kit licence at $149 and the lifetime membership at $50. AI generation costs are yours, paid straight to treg.to.