The artwork in 15 seconds
- Choose one of the organism's 20 abilities: gravity, memory, sound, touch, depth, agency, and more.
- Ask it one question.
- That ability is permanently erased from the shared world, its body recompiles, and every future visitor inherits the loss.
One question costs one law. When all 20 are gone, the world dies.
This is not a filter or a prerecorded animation. The audience edits the executable rules that keep the artwork alive.
Inspiration
Most interactive art lets the audience change an image while the system creating it remains safe. I wanted to make a conversation in which attention has a permanent cost—and where participation changes what the artwork can ever become next.
What it does
LAST WORDS is one shared digital organism with twenty executable abilities.
Hovering or focusing on an ability previews its loss. Submitting a question commits it: the server burns the chosen word, sets its corresponding law to zero, and advances the shared world to a new build.
The browser inserts that changed genome into real GLSL source and recompiles the fragment shader. Every other visitor receives the same state and sees the same damaged body. The result is not a personalized picture; it is one collectively authored life with an irreversible history.
The organism also answers from a finite content-word ledger. Every content word displayed in its reply is spent for everyone. A visitor can revive a lost language word by typing it, but an erased physical law never returns within that world.
After the twentieth law disappears, the final answer becomes the world's farewell. Its genome, losses, and last words remain as a read-only archived edition. A successor world is born carrying a lineage scar from the one that died.
How I built it
The backend uses Python, FastAPI, and SQLite. A short BEGIN IMMEDIATE transaction ensures that two simultaneous visitors cannot erase the same ability. Response generation happens outside the write lock; a second transaction validates and spends every displayed content word.
The public version uses a deterministic, law-aware responder constrained by the same finite ledger. The code also supports Gemini, Vertex AI, and Claude providers, with server-side validation, retry, and visible redaction so a model cannot silently use a word the organism has already lost.
The frontend is framework-free HTML, CSS, and JavaScript. A custom WebGL engine generates and compiles new GLSL after each committed mutation, with Canvas 2D as a fallback. Web Audio creates the mutation sound.
The public deployment runs on Google Cloud Run with generation-checked Cloud Storage snapshots so the shared SQLite world survives container restarts.
Challenges
The hardest problem was making loss real rather than theatrical. Shared state required atomic mutation, conflict handling, durable persistence, and synchronization across visitors.
A second challenge was enforcing finite language. A prompt is not enough, so the server independently validates every reply against the current word ledger.
The final challenge was making the technical proof visible without turning the artwork into a developer dashboard. The interface keeps the organism central while exposing its build number, changed shader constant, and compile result.
Accomplishments
I built an artwork where the audience changes future possibilities, not merely the current appearance. The deletion is shared, the visual rules really recompile, the vocabulary is software-enforced, and completed worlds remain as distinct archived editions.
What I learned
Technology becomes the artistic medium when removing it destroys the meaning of the work. Without networking, transactions, live compilation, and a finite shared ledger, LAST WORDS could not exist.
What's next
I want to build an installation version where the organism is projected at room scale while visitors use their phones to choose its next loss, and to turn each archived mutation sequence into a replayable visual score.
Built With
- css3
- fastapi
- glsl
- google-cloud
- google-cloud-run
- html5
- javascript
- python
- sqlite
- web-audio-api
- webgl
Log in or sign up for Devpost to join the conversation.