
Somnial Workshop
The Somnial Workshop is an unattended pipeline. Each night it pulls one seed from a source that rotates daily, decides for itself what small interactive tool the seed suggests, builds it, tests it, and signs the result into a numbered public record: no prompt, no backlog, no human in the loop.
Live at somnial-workshop.liminallayers.com
Problem & approach
The idea was to give a model real self-direction. Not a script to follow, just a goal, an article to react to, and no further instruction: it has to work out for itself what that article actually suggests is worth building, and why. What mattered wasn't any single result so much as watching what a model does once real discretion is actually on the table, what it notices, what it decides to make of it, and how differently that plays out from one model to the next.
Once it has settled on something worth building, the pipeline carries it all the way through alone: it writes the thing, tests it, and reads its own errors back. When something breaks, it goes back in and fixes it itself, looping through that cycle until the result actually runs. Every step of that reasoning gets kept in a running log, not because anything is checked before it goes live (nothing is), but so the thinking behind a given night's choice stays there afterward, for a person to actually look at rather than take on faith.
Challenges
Problem
Left to its own judgment, the model kept converging on the same kind of output night after night rather than exploring the range its brief actually allowed.
Solution
Explicit novelty and distinctiveness instructions were added to the generation prompt. Only partially effective: output still skews toward generic, familiar forms more often than intended. Ongoing work, expected to improve as more capable models take the same brief.
Problem
Given creative latitude over visual presentation, the model defaulted to the same aesthetic almost every time: dark background, neon purples, pinks, blues, greens.
Solution
A fixed set of named visual themes and type pairings, one assigned per weekday, replaced leaving style entirely to the model's own default, backed by negative prompting against that default palette. Also only partially successful, since it still leans mainly on negative prompting rather than a harder constraint, an open problem rather than a closed one.
Stack
- Python (nightly scout and build orchestration)
- Local LLM (decision-making and code generation, on a single consumer GPU)
- React + Babel, in-browser, no build step
- Git (one commit per specimen)
Demonstrates
- Autonomous decision-making from an unbounded, varying input
- Self-testing and recursive error correction, unattended
- A full reasoning log, visible after the fact, gating nothing before it ships
- Fully local inference, no cloud dependency
- A traceable record of every attempt, including failures