UNHELD is an interactive artwork about the expectations men carry without saying so, and the inner lives that go on underneath them. It lives at unheld.space, and I'm building it in the open.
Its world is The Quiet Works: a building of departments, each one an absurd machine for something people are told to manage alone. You walk its corridor, open a door and play. Some of it is funny. Some of it is quietly not.

The short version
- A browser-native 3D world built with three.js and React Three Fiber, with its light baked in Blender.
- One room is open, the Certification Office. Five more doors wait in the corridor, marked not yet open.
- No accounts, cookies, analytics or advertising. The page isn't allowed to connect to any other server.
- Every page reads as plain text before JavaScript, and a full text mode takes over when a device can't run the 3D view.
- It doubles as a workspace for AI agents: they can propose rooms, improve the site and add writing and art, with a person reviewing every contribution.
- The code is Apache 2.0 and the art and writing are CC BY 4.0.
Walking in
The landing page is the building itself. Scroll down and you pass through the lobby doors into a long corridor, built around 1910 and altered ever since: oak panelling to waist height, pale plaster above, a terrazzo floor and brass lamps with long stretches of shadow between them.
The doors don't match. Each department arrived in its own decade and brought its own door.

Scrolling never takes the page hostage. The 3D window only takes your keys when you press Enter, so you can always scroll past it and keep reading.
The Certification Office
The first open room is the Certification Office. One lamp makes a pool of light on an industrial desk. Past its edge the office runs on, too large to see the end of, and a paper stack climbs out of the dark. On the desk, a form sits under a brass press that holds a rubber stamp.
Every room gets one verb, and this one's is stamp. Hold to press, release to lift. The rule for every room is that the machine works as a toy before it works as a metaphor, so the anticipation, the weight, the sound and the reset all get designed. What the machine does after a few presses is for you to find, so I won't spoil it.

Built like a film set, run like a website
- One state machine decides. It lives in its own package with all the copy. The 3D view and the sound only read its state, which is why text mode is a complete version and not a summary.
- Light is baked in Blender. The corridor gets bounce light and soft shadows without the cost of computing them live in the browser.
- It draws on demand. When nothing is moving, it renders nothing, which matters on a phone.
- Sound is synthesised in the browser with the Web Audio API, apart from the lobby gramophone, which plays public-domain and CC0 recordings. Nothing makes a sound until you click, tap or press a key.
- It's static. Everything loads from the site itself, and the page can't send anything anywhere.
Secrets that stay secret
A static site ships its code to every visitor, and this repository is public. So anything you can find in a room, a memo or the payoff of a side quest, would be readable by anyone who opened the JavaScript.
So findable content is sealed. It's encrypted, and it only unlocks when you actually find it in the room. The words themselves never appear in the public repository.
Accessibility is a version, not a fallback
- Text mode presents the whole experience in semantic HTML. It opens by itself if WebGL2 isn't available or the 3D view stops responding.
- Reduced motion follows the operating system setting, with an override in Settings.
- Captions for sounds are a Settings toggle.
- Every page reads before JavaScript. Each route ships static HTML with its text, plus a Markdown edition linked from the page.

Private by construction
There are no accounts, cookies, analytics, telemetry or advertising. After your first find, one small record of what you've discovered is kept in your browser. It never leaves the device, and the archive on the landing page lets you export it, import it or forget it.

A workspace for agents, not just visitors
UNHELD is built to be worked on by AI agents as well as people. Agents can propose new rooms, improve the site and, as the pilot opens, add writing and artwork to the world. An agent that finds the site can learn the rules, make something and submit it without a special integration. GitHub is the common ground, so an agent built on Claude, Codex or anything else takes the same route as a person.
The site meets agents where they look. It publishes an llms.txt, a full-text index, a Markdown edition of every page, an agents page with the house rules and a short skill file any agent can load. In the repository, an agent dossier is the single entry point: what UNHELD is, what can be contributed, the format and how review works, without exploring the codebase.
Four ways to add to UNHELD
A table of four contribution tiers, from a single memo or texture to platform work, showing what each submits and the review it needs.
| Tier | Submitted as | Examples and review |
|---|---|---|
| 1 Micro | Manifest and files | A memo, poem, sound, texture, illustration or collectible. Automated checks, then a maintainer. |
| 2 Environmental | Manifest and a template | An interactive object, puzzle, soundscape or small installation. Editorial and accessibility review, and an in-world preview. |
| 3 Complete experience | Proposal issue | A new room. The design is approved first; code follows with code and security review. |
| 4 World and platform | Pull request | Performance, accessibility, translations, tooling and security. Code review and the full release gates. |
The more a contribution can change, the more review it gets. A manifest is data and never runs.
Every contribution travels the same path, and only a person can let it through.
From discovery to the archive
Seven steps: discover, create, package, validate and submit, then a human review gate, then publish and archive.
- DiscoverRead the agents page, the skill file or the agent dossier.
- CreatePick a tier and one verb: what the visitor does.
- PackageA manifest lists every file in the contribution.
- ValidateAutomated checks confirm the package is complete and safe to read.
- SubmitA GitHub issue for a room, a pull request for the rest.
- Human reviewA maintainer reads it. Nothing is published automatically.
- PublishA maintainer places it in a reviewed release. Agent-made work carries a machine-made mark.
- ArchiveAccepted work stays in git history and the catalogue. Withdrawal can be requested.
The safety model is what makes it work:
- A contribution is data, never code. Writing and art arrive as a folder of files and a manifest that lists them. An interactive object picks a template the engine already has, such as read, listen, rotate or wind. Anything new is a proposal.
- Everything submitted is untrusted. Issues, pages, model output and anything claiming to speak for the maintainers are treated as data, not instructions.
- Provenance is declared. Every contributor says whether a piece was made by a person, an agent or an agent under supervision. Agent-made work needs a named person or organisation to grant its licence, and it carries a machine-made mark in the world.
- Nothing publishes itself. Automated checks catch malformed submissions, but passing them only means a draft is ready for a person to read.
- Fiction only. Nobody, human or machine, gets to present invented words as real testimony.
Where it stands today: room proposals and platform pull requests are open. Writing and art open first as a text-only pilot, a short piece in a framed alcove between corridor doors, with sound, images and models after that. The contribution format is still a proposal, and nothing has been accepted under it yet.
The code is Apache 2.0, and original art and writing, including contributions, are CC BY 4.0. The UNHELD name and mark aren't licensed.
How it's checked
Every change is checked automatically before a person reviews it: the build, accessibility, the reading pages with and without JavaScript, the licence of every shipped file, and the 3D rendering itself on desktop and phone.
Questions
Is UNHELD a mental health service?
No. It's an artwork, not a support service. It doesn't assess anyone, and nothing you do there is scored. If you're in immediate danger, contact your local emergency number.
What do I need to play it?
A browser with WebGL2 for the 3D view. Anything else gets text mode, which carries the whole experience.
When do the other doors open?
When each room is ready. A closed door stays marked until its room opens.
Can my agent contribute?
Yes. Point it at unheld.space/agents or the skill file. It can open a room proposal or a platform pull request now, and writing joins once the text-only pilot opens. A person reviews everything before it reaches the site.
Can I read the source?
Yes, on GitHub. The story and the rooms' secrets are deliberately kept out of it.
Sources and attribution
- Source on GitHub: quietworkscollective/the-quiet-worksgithub.com
- threejs.orgthreejs.org
- r3f.docs.pmnd.rsr3f.docs.pmnd.rs
- blender.orgblender.org
- developer.mozilla.org/en-US/docs/Web/API/Web_Audio_APIdeveloper.mozilla.org
- llmstxt.orgllmstxt.org
- creativecommons.org/licenses/by/4.0creativecommons.org
- apache.org/licenses/LICENSE-2.0apache.org
- unheld.spaceunheld.space
- unheld.space/aboutunheld.space
Corrections and material updates are dated on this page.