A single HTML file keeps the artwork inspectable
Open a film's index.html in a browser and press play: riso-windowseat puts its pictures in Canvas 2D and its sound in Web Audio. The repository pairs finished pieces with the code and instructions used to make them. Window Seat follows a train journey through a fixed window. The practical attraction is that you can change the scene directly instead of treating a rendered movie as the only editable material.
Our 51.6 MB checkout contained 99 files and roughly 2,444 source lines. That modest code count helps explain the appeal of reading individual works, although the checkout also carries previews and other assets. I wouldn't choose it as a general video-production system. I'd choose it to study or make procedural art with a deliberately narrow print aesthetic, where the drawing rules are part of the finished work.
What happened when we ran it
Our sandbox installed the tools at commit 1275fda in 9 seconds, adding 21 packages and using 91 MB on disk. We ran the npm project under tools/ on October 12, 2026, using lab-node:22 in a fresh, unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets. There was no build script or target, so the build step was skipped. That is an absent step, not a successful build.
The test command failed with exit 1 after 5 seconds. Its log ends with ERR_ASSERTION: the actual value was an empty string, while the expected match was /t=(72|89\.966667).*not repeatable/. Node.js reported version 22.23.2. The tail establishes that the expected diagnostic text wasn't present. It does not establish why the text was missing, whether browser startup failed, or whether a film rendered differently on repeated seeks.
Npm audit reported 0 known vulnerabilities across all listed severities. Our scan found 0 CI workflow files, no Dockerfile, and no tests directory. The source does contain test files under tools/, so the missing directory isn't proof that testing was omitted. Still, the available command didn't pass in our environment. An audit result and a functioning install don't repair that failure or certify the quality of an exported film.
Rendering needs browser downloads and an MP4-capable encoder
The documented authoring path changes into tools/, then runs installation, browser setup, and the test command. The tools guide explains that setup downloads the Chromium and Firefox builds expected by Playwright. MP4 export requires ffmpeg with libx264 support. You can point FFMPEG at your own binary. Playwright's bundled ffmpeg is described as suitable for WebM only, so the encoder choice matters.
The 91 MB installed footprint we measured isn't a budget for every browser download, render, and export you might make. The supplied measurements don't separate those later costs. Watching a shipped HTML file is a different commitment from authoring through Claude Code, which requires access to that tool. The repository's instructions and reusable skills help direct the coding session, but they don't replace your decision about the story or your inspection of its output.
Exact-frame seeking is useful even when the suite fails
The documented interface exposes window.__riso and a synchronous seek(t) function. Asking for the same moment repeatedly should produce the same pixels, including on a fresh page. That is useful for investigating a transition: you can return to the frame rather than hope to pause playback in the right place. Still export and film export share this time-based contract, and the tooling includes contact sheets and audio inspection.
Our 5-second failure limits how much confidence I'd place in the checking machinery without further work. The workflow test source deliberately creates a non-repeatable fixture and expects a diagnostic about a late frame, which matches the pattern missing from the supplied log. That context explains what the assertion asks for. It doesn't identify the underlying failure. Before depending on this harness for delivery, get that documented check working in your intended environment.
Offline deliverables and sample credits constrain reuse
The browser harness blocks requests outside its allowed local and embedded URL schemes. That makes sense for a self-contained artwork, but it rules out casually adding a remote font, image, or live data feed to the checked deliverable. Choose p5.js if interactive browser experimentation matters more than this contract. Choose Remotion if React compositions and a broader video workflow fit your project better. Neither alternative automatically supplies this repository's risograph drawing choices.
Installing only 21 packages in our run doesn't make every included asset interchangeable with the MIT code. The README identifies Window Seat's piano recordings as CC BY 3.0 and supplies an audio-sources file. It also identifies separate reference and sample licenses for other works. If you publish a derivative, inspect the credits attached to the material you actually reuse. Keeping the scene in one HTML file doesn't erase attribution obligations.
September activity supports a trial, not an unattended pipeline
GitHub lists the last push as September 25, 2026, with 0 open issues and PRs. The v1.0 release arrived on September 22, and a closed Passenger pull request was updated on September 25. That is recent development with little public support traffic to judge. The quiet queue gives no evidence that the fresh-container failure is already understood or fixed. The release principally distributes rendered films, so it shouldn't be read as a compatibility guarantee for the tools.
For a checkout of 99 files, the craft records give you unusually direct access to how the pieces were constructed and where their authors see weaknesses. Use that access: inspect the frame that carries the story, then watch the result at normal speed and listen to it. I'd borrow the drawings and the inspection discipline now. I'd make a passing local harness a condition before handing it an unattended export job.

