GPT-6 Astra in Codex CLI 0.156.1
skills off
Zoom, inline player and more ways to view

The model's own page, run in a sandboxed frame only when you ask (a page that needs its own origin opens in a new tab on a separate demo site). Phones get a full-screen player capped at 1.5x pixel density (2x on larger screens) so it stays smooth; the original page runs uncapped. Tap inside for sound.
Recorded from the live demo. Preview video recorded by this site from the live demo. The moving picture above is that preview; the button runs the real page.
Wall time 15m 59sCost $3.44 estimated

Review
“The Light We Leave”: Nori, a small traveller in a golden hooded raincoat, carries the valley's last light, loses it in a storm, finds a smaller shivering light and shares the warmth, and the light takes root as a glowing tree that guides everyone home.
The full review
“The Light We Leave”: Nori, a small traveller in a golden hooded raincoat, carries the valley's last light, loses it in a storm, finds a smaller shivering light and shares the warmth, and the light takes root as a glowing tree that guides everyone home. It's a real little film: painterly layered hills and a village under a big moon, rain, fireflies and stars, a clear dusk → storm → night → dawn arc, storybook subtitles, scene titles, and a closing title card. The character is consistent throughout and emotes. Its own WebAudio score follows the story. It's clearly richer and more cinematic than the raw one-shot baseline (Opus 5.5 at low effort: flat shapes, a basic bob-walk). Caveat: that baseline is a different model at a much lower effort, so this is harness+model vs raw, not a controlled A/B.
Verdict by test runner.
OK. Finished on its own (task_complete) after 16 min. It ended by printing the whole index.html as its final message, as the prompt asked. 0 console errors in our capture.
Attempt 1 of 3
Every try of this model in this harness on this prompt, oldest first. A later attempt is the cell's result: attempt 3.
- Attempt 1 OK this run15m 59s$3.442026-09-23
- Attempt 2 ended in an infrastructure failure, not a model result17m 43s$3.162026-09-25
- Attempt 3 OK the cell's result27m 50s$6.792026-09-25
Bugs
- Cross-dissolves leave a brief double-exposed character (two Noris overlap for a moment in scene changes)
- The walk cycle is small at the film's wide framing, so legs and arms read more as a shuffle than a full stride
- The final ~1 s of the soundtrack is silent before the hold frame
Scores
AI judge
Not scored
No rubric for this prompt
Visitor votes and reviewer grades are not available yet.
- AI judge
- AI judge: the test runner (model claude-opus-5-5), scoring by visual review of the 1600 px render against the pre-registered rubric. No AI-judge score exists for this result: there is no rubric for this prompt, so no score is shown and none is made up.
- Visitors
- Public voting with a blind reveal is coming: you score the output first, then see the other scores.
- Reviewer
- The reviewer's own grade appears here once it is added.
Scores compare results for the same prompt only. AI-judge boards rank runs within one prompt, equal totals sharing a rank; scores from different prompts are never averaged.
Downloads
Files actually published for this run. Original output, site-made previews and post-run conversions are labelled separately.
The exact prompt
agentic harness (save index.html; may check in chromium), 3,402 characters. Every result for this prompt
Write a single self-contained HTML file that plays an original animated short film, about 50 seconds long, drawn entirely in code. Hard technical rules: - One file: HTML + inline <script> (+ optional inline <style>). No external images, fonts, libraries, audio files or network requests of any kind. Every frame is drawn procedurally with Canvas 2D (or WebGL if you prefer). - The canvas renders at a fixed internal resolution of 1920x1080 and is scaled with CSS to fit the window (letterboxed, black background). - The animation starts automatically on page load and is driven ONLY by requestAnimationFrame and the timestamp from performance.now() (measure elapsed time from the first frame). Everything on screen must be a pure function of elapsed time t, so the film is deterministic and can be captured frame by frame. No Math.random() at draw time — use a seeded PRNG / hash noise so frames are identical run to run. No setTimeout/setInterval for animation. - Define window.FILM_DURATION (seconds). After the film ends, hold the final frame. - Soundtrack: write an original WebAudio score (melody, chords, a little percussion or ambience, and sound cues that match story moments) synced to the same timeline. Put ALL audio scheduling in a function window.buildSoundtrack(ctx, startTime) that schedules every note/effect on any BaseAudioContext (so it also works on an OfflineAudioContext). Also expose window.renderSoundtrack = () => an OfflineAudioContext(2, 44100*FILM_DURATION, 44100) render of it returning a Promise<AudioBuffer>. For live viewing, start the soundtrack on the first click/tap/keypress (browsers block autoplay) aligned to the current film time; show a small unobtrusive "tap for sound" hint until then. Use only oscillators, noise buffers you generate, filters, gain envelopes — no samples. - No console errors. The film (this is a showcase of what you can animate — make it genuinely beautiful and moving): - An ORIGINAL story with a small emotional arc (setup, a problem or longing, a turn, a warm resolution). A single consistent main character — any character you like — who appears in every scene and is recognisably the same design throughout. - At least 4 distinct scenes, with real transitions between them (e.g. wipes, iris, match cuts, cross-dissolves, camera moves through space). - Expressive character animation: a proper walk cycle (legs, arms, body bob), blinking, and facial emotion changes (e.g. curious, sad, surprised, joyful) that follow the story. - A virtual camera that pans, zooms and tracks, with parallax layers for depth. - Lighting and time-of-day changes across the film (e.g. dawn → day → dusk → night, or a storm clearing), with colour grading, glows, and shadows. - Particles and weather (rain, snow, fireflies, leaves, dust, stars — your choice, at least two kinds). - On-screen story text / subtitles in a tasteful storybook style that tell the story in a few short lines. - A cohesive art direction: a warm, hand-made "paper cut-out / storybook" look is welcome (textured paper, soft edges, slight wobble), but choose what serves your story. - End with a title of your film and a gentle closing frame. Output ONLY the complete HTML file, starting with <!DOCTYPE html> and ending with </html>. No explanation, no markdown fences. Save it as index.html in the current directory. You may open it in headless chromium to check it and iterate.
How it was made
Step by step
The prompt, every agent turn and tool call (tool name and a one-line summary; inputs and outputs are not shown), then the final message. The full transcript is 6.6 MB; it is published as a scrubbed, compressed download rather than shown on the page.
Show all 33 steps
Loading the timeline…
Download the full transcript Codex CLI rollout JSONL, 114 KB, gzip. Scrubbed: anything that looks like a key, token, e-mail address or phone number is replaced, and account details and the test machine's file paths are removed.
Cost breakdown
Headline cost $3.44, estimated from the token counts at list price.
| Tokens by type | Tokens | $ per 1M | Cost |
|---|---|---|---|
| Input (uncached) | 48 | $10.00 | $0.0005 |
| Cache write | 52,933 | $10.00 | $0.5293 |
| Cache read | 510,768 | $1.00 | $0.5108 |
| Output | 48,027 | $50.00 | $2.4013 |
| of which reasoning | 9,914 | billed as output |
- Total computed from tokens
- $3.4419
- Total reported by the harness
- none
Tokens from the Codex rollout's final token_count (input_tokens 563,749 includes 510,768 cached + 52,933 cache-write; uncached = remainder 48). Largest context 69.6K (<272K tier). Codex prints no dollar figure.
Prices: project price table 2026-09-22 (OpenAI Standard tier, prompts <=272K); cache write not published, priced at input rate, 2026-09-23.
Run notes
- TUI screenshots: tui/codex_astra_js_short/
- Mode: interactive TUI in tmux 160x48, inside bubblewrap sandbox (private /tmp and HOME; no access to other runs or the project files)
- Self review: Drove its own headless Chromium over the DevTools protocol from Python: rendered and viewed frames (2 image views), checked determinism (same frame twice = identical), measured draw time per frame, and rendered the OfflineAudioContext soundtrack to check its levels. One patch after review.