{"schema_version":"1","site":"https://decosa.ai","id":"animatic-studio","num":"50","name":"Script to animatic","tool_name":"Turn a script into an animatic","short":"Animatic","blurb":"Paste a short script or ad brief and get a timed animatic. Qwen3.8-27B breaks it into shots that each cite their script lines; code checks that every line is covered and inserts the dialogue word for word, and the grounding check flags shots that add events the script does not have. Frames come from Wan2.2-VACE-Fun-A14B, optional motion from the same model, temp dialogue from stock voices the consent ledger allows. Edit any shot and re-render just that one. The MP4 carries shot numbers, timecode, a C2PA credential and a signed record of which steps were AI and which were your edits. Previsualisation that saves a storyboard artist's first pass, not a replacement for one.","status":"live","labels":{"industry":["entertainment","creative-media"],"job":["generate","attest"],"input":["text"],"deploy":["hosted","selfhost"],"status":"live","output":["media","record"],"data":["confidential"],"hardware":"gpu-96","licence":"permissive"},"industries":["entertainment","creative-media"],"runs_in":["hosted","selfhost"],"part_of":["studio-film"],"built_from":["grounding","studio-render","consent-gate","content-credentials","signed-record"],"models":"Qwen3.8-27B · Wan2.2-VACE-Fun-A14B · Kokoro-82M","where":"Hosted for sample and original scripts; self-host keeps unreleased scripts in-house","hardware":"1× RTX PRO 6000 (96 GB): Qwen3.8-27B for the shot list, and about 34 GB for Wan2.2-VACE-Fun-A14B (fp8) in ComfyUI; the voices run on CPU","final_artifact":"An MP4 animatic with shot numbers, timecode and an AI label (C2PA credential embedded), a shot-list CSV, a storyboard PDF and a signed record of AI steps and human edits.","self_host_first":false,"verification":{"receipt_coverage":"partial","summary":"Receipt per model call (shot list and grounding); render receipt and C2PA credential on the MP4; signed consent decisions; a signed record of AI steps and human edits","manual_qa":{"hosted":{"date":"2026-09-26","result":"pass","p50_ms":531000,"p95_ms":null,"runs":null,"receipts_per_run":16,"cost_per_run_usd":0.0069},"selfhost":{"date":"2026-09-26","result":"pass","method":"Fresh clone of the branch into a clean directory, docker build of the api image plus the Kokoro layer from the assemble prompt, compose with named volumes, pointed at the already-running local Qwen3.8-27B (direct route) and ComfyUI; the rehearsal bundle; then torn down.","notes":"9 of 9 rehearsal checks passed (render 576 s, C2PA stamped, record verified), no script text in the container logs. Found on the way: frames could not be moved from the work volume to the data volume (cross-device rename); fixed with a regression test."},"known_limits":["Frames are rough and characters are only partly consistent from shot to shot (no identity adapter).","Frames aren't checked against existing characters; review for resemblance before sharing. A vague look can drift towards a familiar character (in testing, a one-line robot description came out close to a well-known film robot).","Long speeches stretch their shots past the drafted length; the timeline shows by how much.","The grounding check also marks harmless staging details as partial; a person decides.","Renders share one GPU with other demos: several minutes per animatic, longer when the queue is busy.","C2PA credentials use a development certificate, so public validators show the issuer as untrusted."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Shot-list coverage of lines needing a shot, before any code repair","value":"100% in 10 of 10 runs","unit":null,"n":10,"split":"synthetic","note":"5 scripts x 2 runs, 78 required lines per pass"},{"name":"Invented dialogue","value":"0","unit":null,"n":10,"split":"synthetic","note":"0 by construction: dialogue is cited by line id and inserted by code"},{"name":"Grounding verdicts on shot actions: supported / partial / unsupported / contradicted","value":"128 / 17 / 3 / 3","unit":null,"n":151,"split":"synthetic","note":"Of the 6 hard flags read by hand, 2 were real and 4 over-strict"},{"name":"Planted invented actions judged unsupported","value":"10 of 10","unit":null,"n":10,"split":"synthetic","note":"66 unplanted shots in the same pass: 57 supported, 9 partial, 0 unsupported or contradicted"},{"name":"Character identity (CLIP cosine to sheet), unlocked vs locked look (default)","value":"0.528 vs 0.690","unit":null,"n":18,"split":"synthetic","note":"Nearest-sheet accuracy 0.33 vs 0.75 (12 frames; chance about 0.42)"},{"name":"Model cost per shot list","value":"$0.0035-0.013","unit":null,"n":null,"split":"synthetic","note":"At the gateway list price; render GPU time not billed in the demo"}],"dataset":"5 scripts: 3 original CC0 (screenplay, 30 s ad, game cutscene) and 2 public-domain stage plays (Wilde, Glaspell); 18 single-character shots for the consistency test.","held_out":false,"caveats":["No held-out split: the Last Lamp sample was used during development, and prompt rules were added after a first run on it.","The planted inventions are blunt on purpose, and the plants and the checker have the same author; a subtle invention lands in partial at best.","Whole-frame CLIP scores are confounded by background and framing: read them as differences between arms, not absolute truth.","Frames are not checked against existing characters; one robot came out close to a well-known film robot and was withdrawn. Review for resemblance before sharing.","A shot-list prompt rule and a judge fix went in after these numbers and are not re-measured."],"date":"2026-09-26","doc_url":"https://decosa.ai/metrics/evals/animatic-studio"},"stack":{"summary":"Qwen3.8-27B breaks a script of up to about two pages into shots that each cite their lines. Code checks coverage and inserts dialogue word for word; the grounding check flags shots that add events. Wan2.2-VACE-Fun-A14B draws a sheet per character and a frame per shot (optional motion), Kokoro-82M reads the lines in voices the consent ledger allows, and ffmpeg cuts an MP4 with shot numbers, timecode and an AI label. Edit any shot and re-render only that one. For indie filmmakers, agencies and game teams: previsualisation that saves a storyboard artist's first pass, not a replacement for one.","tagline":"Paste a short script or ad brief, get a timed animatic with a checked shot list, consented temp voices and a signed record of what was AI and what was you.","deployment":"hosted-or-self-host","regulatory_note":"Not legal advice. The cut carries a burned-in \"AI-generated animatic (previs)\" label and a C2PA credential, and every voice is checked in the consent ledger (tool 47) first. Laws below were read on 25 Sep 2026 by the disclosure pre-flight tool (49) and not re-read for this page: EU AI Act, Regulation (EU) 2024/1689 (https://eur-lex.europa.eu/eli/reg/2024/1689/oj), Art. 50(2) machine-readable marking of synthetic video applies from 2 Aug 2026 (later for systems already on the market) and Art. 50(4) asks deployers to disclose deepfakes; New York General Business Law 396-b (https://www.nysenate.gov/legislation/bills/2025/S8420/amendment/A), in force 9 Jun 2026, requires a conspicuous disclosure when an advertisement includes a synthetic performer, which matters only if an animatic is itself run as an ad. Copyright: the US Copyright Office's report on copyrightability (29 Jan 2025, https://www.copyright.gov/ai/) says AI output is protectable only where a person determined enough of the expression; the record shows which steps were yours. Script rights are yours to have; the samples are original (CC0) or public domain.","components":[{"id":"llm","role":"Drafts the shot list (line ids, framing, action, duration) and a look per character; the same model is the grounding judge that checks each shot against its lines","name":"Qwen3.8-27B (NVIDIA NVFP4)","hf_repo":"nvidia/Qwen3.8-27B-NVFP4","license":"Apache-2.0","params":"27.8B","quant":"NVFP4 (MLP) + FP8 (attention/GDN), FP8 KV cache","vram_gb":57,"memory_gb_estimate":null,"engine":"vLLM 0.29.0","receipt_coverage":"strong","in_hosted_demo":true,"tiers":["all"],"alternative_to":null},{"id":"frames","role":"Character sheets, one still per shot (text only: every frame repeats each visible character's look), and optional image-to-video motion from a shot's still","name":"Wan2.2-VACE-Fun-A14B","hf_repo":"alibaba-pai/Wan2.2-VACE-Fun-A14B","license":"Apache-2.0","params":"A14B (two 14B experts, high and low noise)","quant":"fp8_e4m3fn weights","vram_gb":null,"memory_gb_estimate":null,"engine":"ComfyUI v0.34.0-36-g30bdda1e, core WanVaceToVideo","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["standard"],"alternative_to":null},{"id":"lightning","role":"4-step distillation LoRAs for Wan2.2 (used at 6 steps, cfg 2 for stills)","name":"Wan2.2-Lightning T2V 4-step LoRAs","hf_repo":"lightx2v/Wan2.2-Lightning","license":"Apache-2.0","params":null,"quant":"bf16","vram_gb":null,"memory_gb_estimate":null,"engine":"ComfyUI LoraLoaderModelOnly","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["standard"],"alternative_to":null},{"id":"tts","role":"Temp dialogue in stock voicepacks, only for speakers the consent ledger allows","name":"Kokoro-82M","hf_repo":"hexgrad/Kokoro-82M","license":"Apache-2.0","params":"82M","quant":"fp32","vram_gb":0,"memory_gb_estimate":null,"engine":"kokoro 0.9.4 KPipeline on CPU","receipt_coverage":"partial","in_hosted_demo":true,"tiers":["all"],"alternative_to":null},{"id":"c2pa","role":"C2PA content credential on the MP4, with the consent-ledger links of the voiced speakers","name":"c2pa-rs via c2pa-python","hf_repo":null,"license":"MIT OR Apache-2.0","params":null,"quant":null,"vram_gb":0,"memory_gb_estimate":null,"engine":"provenance kit (vertical 07)","receipt_coverage":"none","in_hosted_demo":true,"tiers":["all"],"alternative_to":null},{"id":"ltx","role":"Longer, higher-resolution motion shots on your own GPU","name":"LTX-2.3 22B","hf_repo":"Lightricks/LTX-2.3","license":"LTX-2 Community License Agreement","params":"22B","quant":"bf16 / distilled","vram_gb":null,"memory_gb_estimate":null,"engine":"ComfyUI LTX nodes","receipt_coverage":"none","in_hosted_demo":false,"tiers":["best"],"alternative_to":null},{"id":"ref-edit","role":"Reference-image editing to keep a character's face and costume from the sheet","name":"Qwen-Image-Edit","hf_repo":"Qwen/Qwen-Image-Edit","license":"Apache-2.0","params":"20B","quant":null,"vram_gb":null,"memory_gb_estimate":null,"engine":null,"receipt_coverage":"none","in_hosted_demo":false,"tiers":["alternates"],"alternative_to":null},{"id":"h3","role":"Motion shots with native audio from a shot's still (image-to-video)","name":"MiniMax-H3 (licence pending)","hf_repo":"MiniMaxAI/MiniMax-H3","license":"MiniMax H3 Community License today (it excludes the US, EU, UK and Korea); a licence for our use is pending","params":"33.1B (transformer) + 33.4B (text encoder)","quant":"BF16 with CPU offload on one card; no offload on two","vram_gb":null,"memory_gb_estimate":133,"engine":"diffusers ModularPipeline (MiniMax-H3 blocks)","receipt_coverage":"none","in_hosted_demo":false,"tiers":["best"],"alternative_to":null}],"tiers":[{"id":"lite","label":"Lite · breakdown only, no GPU renderer","summary":"The checked shot list, character bible, grounding verdicts and CSV, without frames or voices.","components":["llm"],"hardware":"The text model (or a remote endpoint); no render GPU","quality_evidence":[{"metric":"Model coverage of script lines","value":"100% in 10 of 10 runs","source":"decosa-api docs/evals/animatic-studio.md, 2026-09-26"},{"metric":"Planted invented events flagged by the grounding check","value":"10 of 10","source":"decosa-api docs/evals/animatic-studio.md, 2026-09-26"}],"latency_note":"measured: seconds to under a minute per script","in_hosted_demo":false,"receipt_coverage":"strong","receipt_note":"Every model call is receipted.","hosting":null},{"id":"standard","label":"Standard · the hosted demo","summary":"Shot list and grounding on Qwen3.8-27B, frames and motion on Wan2.2-VACE-Fun-A14B in the shared ComfyUI, Kokoro voices, C2PA and the signed record.","components":["llm","frames","lightning","tts","c2pa"],"hardware":"1x RTX PRO 6000 96 GB for the text model plus about 34 GB of GPU for the renderer while a job runs","quality_evidence":[{"metric":"Script lines covered by the model's shot list, before code repair","value":"100% in 10 of 10 runs (5 scripts, 78 required lines)","source":"decosa-api docs/evals/animatic-studio.md, 2026-09-26"},{"metric":"Invented dialogue in the cut","value":"0 by construction (the model cites line ids; code inserts the words); 0 quoted phrases outside the cited lines in 10 runs","source":"decosa-api docs/evals/animatic-studio.md, 2026-09-26"},{"metric":"Planted invented events flagged by the grounding check","value":"10 of 10 (unsupported)","source":"decosa-api docs/evals/animatic-studio.md, 2026-09-26"},{"metric":"Character consistency (CLIP ViT-L/14 similarity of each frame to its character sheet)","value":"0.69 with each look repeated in every frame vs 0.53 without; nearest-sheet identification 0.75 vs 0.33 (18 frames, 3 scripts). Reference-image conditioning scored 0.81 but copied the sheet's pose, so it is off.","source":"decosa-api docs/evals/animatic-studio.md, 2026-09-26"},{"metric":"Render time per full animatic on the shared GPU","value":"359-726 s for 7-18 shots (6 runs); about 13 s per frame when the GPU is free; 45-47 s to re-render one shot","source":"measured on our server 2026-09-26"}],"latency_note":"measured on our server: several minutes per full animatic on a shared GPU; under a minute to re-render one shot","in_hosted_demo":true,"receipt_coverage":"partial","receipt_note":"Model calls get Decosa API receipts on the gateway route; renders carry a server-signed receipt and C2PA.","hosting":null},{"id":"best","label":"Best · self-host with LTX-2.3 or MiniMax H3 (licence pending) motion","summary":"Standard plus LTX-2.3 or MiniMax H3 (licence pending) for motion shots on your own GPU, if the licence suits you. Not wired in or measured here.","components":["llm","frames","lightning","tts","c2pa","ltx","h3"],"hardware":"not measured","quality_evidence":[{"metric":"Any","value":"not measured yet","source":null}],"latency_note":"not measured","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":null,"hosting":null}],"alternates":[{"id":"ref-edit","label":"Reference-based consistency","components":["ref-edit"],"hardware":"1x 96 GB card (a 20B edit model; not measured)","use":"An edit model conditioned on each character sheet (Qwen-Image-Edit, Apache-2.0) to hold faces and costumes across shots. Not installed here.","status":"not built"}],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:<tag> (publishing soon)","purpose":"GET /animatic/info, /animatic/samples, /animatic/voices; POST /animatic/shotlist, /animatic/runs/{id}/render, /animatic/runs/{id}/shots/{n}/render; GET /animatic/runs/{id}, /animatic/runs/{id}/shotlist.csv|pdf, /animatic/records/{id}. Runs the studio worker (needs ffmpeg and tesseract in the image)."},{"name":"comfyui","port":8188,"image":null,"purpose":"Wan2.2-VACE-Fun-A14B stills and motion for the studio worker (built from source; see the studio tool)."},{"name":"decosa-llm","port":8114,"image":"${DECOSA_REGISTRY}/decosa-llm:0.1.0","purpose":"Qwen3.8-27B OpenAI endpoint (hosted: behind our gateway)."}],"tools":[{"name":"ComfyUI","url":"https://github.com/comfyanonymous/ComfyUI","license":"GPL-3.0","purpose":"Runs the Wan2.2-VACE graphs for the studio worker, one job at a time."},{"name":"FFmpeg","url":"https://ffmpeg.org","license":"LGPL-2.1+ (GPL build on our server)","purpose":"Assembly: slate, per-shot segments, subtitles, shot numbers, timecode, AI label, AAC dialogue track."},{"name":"Tesseract OCR","url":"https://github.com/tesseract-ocr/tesseract","license":"Apache-2.0","purpose":"The disclosure pre-flight label check (49): is the AI label readable on sampled frames?"},{"name":"Pillow","url":"https://python-pillow.org","license":"MIT-CMU (HPND)","purpose":"The sketch filter and the storyboard PDF."},{"name":"Project Gutenberg texts","url":"https://www.gutenberg.org/ebooks/844","license":"Public domain in the US (Wilde 1895; Glaspell 1916, eBook #10623)","purpose":"The public-domain sample (Earnest) and an eval script (Trifles)."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB, shared","fits":true,"notes":"Measured on our server 2026-09-26: the frames render in the studio ComfyUI on GPU0 next to the live services (about 34 GB for Wan2.2-VACE fp8 while a job runs); Qwen3.8-27B runs on GPU1; voices on CPU."},{"tier":"1x 24-32 GB card","fits":null,"notes":"Not tested. The shot list, grounding and CSV (lite tier) need only the text model or a remote endpoint."},{"tier":"CPU only","fits":false,"notes":"Parsing, coverage, voices, assembly and exports run on CPU; frames need a GPU."}],"latency":[{"lane":"Script to checked shot list (model call plus one grounding call per shot)","typical_ms":20500,"source":"measured on our server 2026-09-26: 7.9-29.6 s over 10 runs of 5 scripts (8-24 shots), gateway route under load"},{"lane":"Full render, 15 shots with 1 motion shot (49 s of animatic)","typical_ms":359000,"source":"measured on our server 2026-09-26: one run, shared GPU0 quiet"},{"lane":"Full render, 18 shots (154 s of animatic)","typical_ms":409000,"source":"measured on our server 2026-09-26: one run, shared GPU0"},{"lane":"Full render, 7 shots (25 s), GPU busy with other renders","typical_ms":726000,"source":"measured on our server 2026-09-26: one run while sibling jobs held the studio ComfyUI"},{"lane":"Re-render one shot and re-cut","typical_ms":47000,"source":"measured on our server 2026-09-26: one run (model load included)"}],"benchmark":null,"notes":["Dialogue is never written by the model: it cites line ids and code inserts the script's words, so invented dialogue is impossible by construction; action text can still add things, which the grounding check flags.","Character consistency comes from repeating each character's look in every frame prompt; there is no identity adapter. Reference-image conditioning in Wan2.2-VACE was tried and measured (eval) and is not the default.","The sketch look is a code filter (grayscale, colour dodge) over the model's frame, applied the same way to motion clips.","LTX-2.3 motion is self-host only (community licence) and is not wired into this pipeline yet.","Frames aren't checked against existing characters; review for resemblance before sharing. Spell out each character's shape, colour and silhouette."]},"buyer_facts":[{"label":"What it replaces","value":"The first pass: breakdown, rough frames and timing. A storyboard artist still stages, draws and cuts the real thing."},{"label":"Grounded shot list","value":"Every shot cites its script lines. In 10 of 10 eval runs the model's own list covered every line; dialogue is inserted word for word by code, and 10 of 10 planted invented events were flagged."},{"label":"Consent","value":"Every temp voice is checked in the consent ledger before the render and the decision is signed; a refused voice is subtitled instead. Stock voices only, nothing cloned."},{"label":"AI and human record","value":"A signed record lists the model's shot list, each of your edits by shot and field, the consent checks, frames, voices and the cut, with hashes. No script text in it."},{"label":"Cost per animatic","value":"A fraction of a cent of model time for the shot list and grounding (measured); rendering takes GPU-minutes on the shared card (measured), not billed in the demo."},{"label":"Data retention","value":"Hosted: the script, shot list, frames, voices and MP4 are kept 7 days so you can edit and re-render, then deleted. Frames and the MP4 open only through signed links that expire within hours and are given to the session or key that made the run. The signed record is public by design (anyone with its link can verify it): it holds hashes only and does not lead to your frames. Logs hold ids and counts, never script text."},{"label":"What leaves the box","value":"Hosted: the script goes to Decosa's API and its model server through our gateway. Self-host: nothing."}],"data_handling":{"page":"/data#animatic-studio","self_host":{"level":"confidential","leaves":"nothing","summary":"Runs on your machine; nothing is sent to Decosa or a third party by default."},"hosted":{"level":"operator-processed","demo_only":false,"summary":"TLS to Decosa's server, then decrypted and processed by Decosa's API server, with the open models run by NEAR AI through OpenRouter, with Reka AI as the only fallback under Decosa's account.","gpus":"operator-contracted","third_parties":[],"retention":"Hosted: the script, shot list, frames, voices and MP4 are kept 7 days so you can edit and re-render, then deleted. Frames and the MP4 open only through signed links that expire within hours and are given to the session or key that made the run. The signed record is public by design (anyone with its link can verify it): it holds hashes only and does not lead to your frames. Logs hold ids and counts, never script text.","used_for_training":false,"encrypted_while_processed":false},"sealed_tier":{"applies":false,"note":"The sealed tier (raw chat only, never use-case pipelines) is paused at launch (/docs/sealed-tier)."},"external_calls":[]},"console":{"href":"/apps/animatic-studio","input":"animatic","lanes":[{"id":"shotlist","title":"Shot list","kind":"list"},{"id":"voices","title":"Temp voices","kind":"list"},{"id":"animatic","title":"Animatic","kind":"list"},{"id":"record","title":"AI and human record","kind":"json"}],"samples":[{"n":1,"id":"last-lamp","title":"Last lamp","deep_link":"/apps/animatic-studio?sample=1&autorun=0"},{"n":2,"id":"night-shift-ad","title":"Night shift ad","deep_link":"/apps/animatic-studio?sample=2&autorun=0"},{"n":3,"id":"salvage-cutscene","title":"Salvage cutscene","deep_link":"/apps/animatic-studio?sample=3&autorun=0"},{"n":4,"id":"earnest-handbag","title":"Earnest handbag","deep_link":"/apps/animatic-studio?sample=4&autorun=0"}],"deep_link_params":{"sample":"1-based index into samples, or a sample id","autorun":"1 = start the run once the sample is loaded; 0 (default) = only preselect","reduce-motion":"1 = turn off animations"}},"api":{"base":"https://api.decosa.ai","contract":"/api/contract.json","contract_markdown":"/api/contract.md","reference":"/docs/api","keys":"/account/keys"},"prompts":{"hosted":"/prompts/animatic-studio-hosted.md","selfhost":"/prompts/animatic-studio-selfhost.md","assemble":"/prompts/animatic-studio-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/animatic-studio.zip","bundle_url":"https://decosa.ai/samples/animatic-studio.zip","folder":"/samples/animatic-studio/","expected":"/samples/animatic-studio/expected.json","files":["/samples/animatic-studio/expected.json","/samples/animatic-studio/inputs/ad-script.txt"],"bytes":1704,"checks":["every action, dialogue and on-screen-text line is covered by a shot","each dialogue line is spoken exactly once, in the script's words","the shot list has at least four shots","the shot list and the grounding check made receipted model calls","the house voice for the VO is allowed by the consent ledger","the performer whose consent covers another campaign is refused","the render finishes","the finished cut has a signed record of AI steps and human edits","every model call has a signed receipt"],"licence":"ad-script.txt: written for Decosa (CC0); Hollin Oats is a made-up brand.","about":"A 30-second ad script for a made-up brand. The shot list must cover every action, dialogue and on-screen-text line, and each dialogue line must be spoken exactly once, in the script's own words. The render casts the voice-over with a Decosa house voice (allowed) and DANA with a fictional performer whose consent covers a different campaign (refused by the consent ledger, so her line is subtitled). The render takes a few minutes of GPU; the step polls until it is done and checks the signed record.","run":{"containers":"docker compose exec api python scripts/rehearse.py animatic-studio","checkout":"python scripts/rehearse.py animatic-studio --bundle animatic-studio.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py animatic-studio"},"guidance":"Set up with a coding agent (we recommend Claude Code with Claude Opus 5.5; any capable coding agent works) on mock data only, run the rehearsal until every check passes, then run your own data locally yourself. Never give the agent real data during setup."},"hardware_fit":{"check":"/self-host/hardware?use=animatic-studio","data":"/api/hardware.json","tiers":[{"id":"lite","gpu_gb":57.6,"basis":"stack","unknown":[]},{"id":"standard","gpu_gb":91.6,"basis":"estimate","unknown":[]},{"id":"best","gpu_gb":153.6,"basis":"estimate","unknown":[]},{"id":"alternate-ref-edit","gpu_gb":49,"basis":"estimate","unknown":[]}],"mac":null},"links":{"page":"/apps/animatic-studio","json":"/use-cases/animatic-studio.json","metrics":"/metrics/animatic-studio","console":"/apps/animatic-studio","console_sample":"/apps/animatic-studio?sample=1&autorun=0","stack":"/apps/animatic-studio#stack","try_live":"/apps/animatic-studio#live","watch":"/apps/animatic-studio#watch","build":"/apps/animatic-studio#build","self_host":"/apps/animatic-studio#self-host","prompts":{"hosted":"/prompts/animatic-studio-hosted.md","selfhost":"/prompts/animatic-studio-selfhost.md","assemble":"/prompts/animatic-studio-assemble.md","mac":null}}}