diff --git a/profile/README.md b/profile/README.md
index 7ccab6f..e083936 100644
--- a/profile/README.md
+++ b/profile/README.md
@@ -45,33 +45,34 @@
|
| [**rax**](https://github.com/piabrota/rax) | Rustic Agentic Runtime: a pure-Rust port of AX, the declarative orchestrator for agentic tasks on Agent Substrate. It keeps AX's API, so a manifest written for AX works here. | none | MPL-2.0, parts from AX Apache-2.0 |
|
| [**closed-source**](https://github.com/h0ffmann/closed-source) | *The god that failed*: a book on why closed source failed as a protection, for science first. Markdown in, PDF out, every reference checked, every release citable. | [h0ffmann.github.io/closed-source](https://h0ffmann.github.io/closed-source/) | text CC BY 4.0, code AGPL-3.0 |
| 🎶 | [**ihero**](https://github.com/piabrota/ihero) | A FOSS music player and game, in Rust. Coming: the repository holds only its licence. | none yet | MPL-2.0 |
+|
| [**room**](https://github.com/piabrota/room) | A personal site that is a 3D room, in three.js: camera shots, tapes to play on the TV, piabrota RADIO, rain, day and night, and a ▲ grid view with 24 h of wind and sea on the coast of Brazil. LOFI turns it into a page to read. | [room.piabrota.art](https://room.piabrota.art) | MPL-2.0 |
|
| [**nix-os**](https://github.com/piabrota/nix-os) | The NixOS configuration of the small VPS that serves piabrota.art/nixos. Every change is judged by what it adds to the closure and to memory. | [piabrota.art/nixos](https://piabrota.art/nixos) | MPL-2.0 |
| 🤖 | [**agents**](https://github.com/piabrota/agents) | Small agents that watch nix-os and its VPS, and report on GitHub as piabrota-ops. They open pull requests and never merge. | none | MPL-2.0 |
|
| [**mu**](https://github.com/piabrota/mu) | The company chart: the dogma, the standards, the journal and the index of the org's repositories. | none | CC BY 4.0, AGPL-3.0, MPL-2.0 |
| 道場 | [**dojo**](https://github.com/piabrota/dojo) | The umbrella of the piabrota projects. Being set up. | none yet | MPL-2.0 |
| | [**ondecomer**](https://github.com/aracyla/onde-comer) | A site that lists the restaurants of Brazil, with filters for category, location and more. For now it covers only the city of Rio de Janeiro. | [https://aracyla.github.io/onde-comer/](https://aracyla.github.io/onde-comer/) | N/A |
-The drawings load from each project's repository at a pinned commit; none is copied here. ihero,
-agents, dojo and ondecomer have no drawing yet.
+The drawings and the picture of the room load from each project's repository at a pinned commit;
+none is copied here. ihero, agents, dojo and ondecomer have no drawing yet.
## How it fits
-
+
How to read this figure
-**Takeaway.** Ten open projects, each on its own; three of them meet the web at piabrota.art.
+**Takeaway.** Eleven open projects, each on its own; four of them meet the web at piabrota.art.
**How to read.** One lane per kind of work. An arrow means "is served at", and its label is the
-path; "coming" means planned, not live. The red border marks the domain.
+path or the host; "coming" means planned, not live. The red border marks the domain.
**Not shown.** Each project's own site on GitHub Pages, and the tools they share: Nix, Rust,
archify.
**Evidence.** [`archify/fabric.json`](archify/fabric.json), the source of the figure. The paths
-come from alerts' `docs/HOSPEDAGEM.md` (`/alerts`), nix-os' `AGENTS.md` (`/nixos`) and pirsig's
-README, "Ways to run Pirsig" (`/pirsig`, coming).
+come from alerts' `docs/HOSPEDAGEM.md` (`/alerts`), nix-os' `AGENTS.md` (`/nixos`, and
+`room.piabrota.art` from `room.nix`) and pirsig's README, "Ways to run Pirsig" (`/pirsig`, coming).
diff --git a/profile/README.pt-BR.md b/profile/README.pt-BR.md
index 315cadd..3c914f0 100644
--- a/profile/README.pt-BR.md
+++ b/profile/README.pt-BR.md
@@ -46,33 +46,34 @@
|
| [**rax**](https://github.com/piabrota/rax) | Rustic Agentic Runtime: um port em Rust puro do AX, o orquestrador declarativo de tarefas agênticas sobre o Agent Substrate. O rax mantém a API do AX, então um manifesto escrito para o AX funciona aqui. | nenhum | MPL-2.0, partes do AX em Apache-2.0 |
|
| [**closed-source**](https://github.com/h0ffmann/closed-source) | *The god that failed*: um livro sobre por que o código fechado falhou como proteção, a começar pela ciência. Entra Markdown, sai PDF, toda referência é checada e toda versão é citável. | [h0ffmann.github.io/closed-source](https://h0ffmann.github.io/closed-source/) | texto CC BY 4.0, código AGPL-3.0 |
| 🎶 | [**ihero**](https://github.com/piabrota/ihero) | Um player de música e jogo FOSS, em Rust. Em breve: o repositório só tem a licença. | ainda não | MPL-2.0 |
+|
| [**room**](https://github.com/piabrota/room) | Um site pessoal que é um quarto em 3D, feito com three.js: planos de câmera, fitas para ver na TV, a piabrota RADIO, chuva, dia e noite, e uma vista ▲ grid com 24 h de vento e mar na costa do Brasil. O modo LOFI transforma o quarto em uma página para ler. | [room.piabrota.art](https://room.piabrota.art) | MPL-2.0 |
|
| [**nix-os**](https://github.com/piabrota/nix-os) | A configuração NixOS da pequena VPS que serve piabrota.art/nixos. Cada mudança é julgada pelo que adiciona à closure e à memória. | [piabrota.art/nixos](https://piabrota.art/nixos) | MPL-2.0 |
| 🤖 | [**agents**](https://github.com/piabrota/agents) | Agentes pequenos que vigiam o nix-os e a VPS, e relatam no GitHub como piabrota-ops. Os agentes abrem pull requests e nunca fazem merge. | nenhum | MPL-2.0 |
|
| [**mu**](https://github.com/piabrota/mu) | O chart da empresa: o dogma, os padrões, o diário e o índice dos repositórios da org. | nenhum | CC BY 4.0, AGPL-3.0, MPL-2.0 |
| 道場 | [**dojo**](https://github.com/piabrota/dojo) | O umbrella dos projetos do piabrota. Em montagem. | ainda não | MPL-2.0 |
| | [**ondecomer**](https://github.com/aracyla/onde-comer) | Um site que lista os restaurantes do Brasil, com filtros por categoria, localização e mais. Por enquanto, o site cobre só a cidade do Rio de Janeiro. | [https://aracyla.github.io/onde-comer/](https://aracyla.github.io/onde-comer/) | N/A |
-Os desenhos carregam do repositório de cada projeto, em um commit fixado. Nenhum desenho é copiado
-para cá. ihero, agents, dojo e ondecomer ainda não têm desenho.
+Os desenhos e a foto do quarto carregam do repositório de cada projeto, em um commit fixado.
+Nenhuma imagem é copiada para cá. ihero, agents, dojo e ondecomer ainda não têm desenho.
## Como se encaixa
-
+
Como ler esta figura
-**Em uma frase.** São dez projetos abertos, cada um por conta própria. Três deles chegam à web em piabrota.art.
+**Em uma frase.** São onze projetos abertos, cada um por conta própria. Quatro deles chegam à web em piabrota.art.
**Como ler.** Cada faixa é um tipo de trabalho. Uma seta significa "é servido em", e o rótulo da seta
-é o caminho. "Em breve" significa planejado, ainda não publicado. A borda vermelha marca o domínio.
+é o caminho ou o host. "Em breve" significa planejado, ainda não publicado. A borda vermelha marca o domínio.
**Fora da figura.** O site de cada projeto no GitHub Pages e as ferramentas em comum: Nix, Rust e
archify.
**Evidência.** [`archify/pt/fabric.json`](archify/pt/fabric.json) é a fonte da figura. Os caminhos vêm
-de `docs/HOSPEDAGEM.md` do alerts (`/alerts`), de `AGENTS.md` do nix-os (`/nixos`) e do README do
-pirsig, "Ways to run Pirsig" (`/pirsig`, em breve).
+de `docs/HOSPEDAGEM.md` do alerts (`/alerts`), de `AGENTS.md` do nix-os (`/nixos`), de `room.nix` do nix-os
+(`room.piabrota.art`) e do README do pirsig, "Ways to run Pirsig" (`/pirsig`, em breve).
diff --git a/profile/archify/fabric.json b/profile/archify/fabric.json
index 453f152..01076ea 100644
--- a/profile/archify/fabric.json
+++ b/profile/archify/fabric.json
@@ -1 +1 @@
-{"schema_version": 2, "diagram_type": "workflow", "meta": {"title": "The piabrota fabric: ten open projects, and where they meet the web", "locale": "en", "quality_profile": "showcase", "legend": {"mode": "hidden"}, "output": "fabric.html"}, "lanes": [{"id": "company", "label": "The company"}, {"id": "think", "label": "Think and write"}, {"id": "serve", "label": "Warn and host"}, {"id": "play", "label": "Play and listen"}, {"id": "web", "label": "On the web"}], "mainPath": ["pirsig", "site"], "nodes": [{"id": "mu", "lane": "company", "col": 0, "type": "database", "label": "mu", "sublabel": "the company chart", "width": 200}, {"id": "dojo", "lane": "company", "col": 1, "type": "database", "label": "dojo", "sublabel": "the umbrella, being set up", "width": 200}, {"id": "gramatico", "lane": "think", "col": 0, "type": "backend", "label": "gramatico", "sublabel": "plain pt-BR, a plugin", "width": 200}, {"id": "pirsig", "lane": "think", "col": 1, "type": "frontend", "label": "pirsig", "sublabel": "a second brain", "width": 200}, {"id": "closed", "lane": "think", "col": 2, "type": "backend", "label": "closed-source", "sublabel": "a book, md in, PDF out", "width": 200}, {"id": "alerts", "lane": "serve", "col": 0, "type": "backend", "label": "alerts", "sublabel": "official flood alerts", "width": 200}, {"id": "rax", "lane": "serve", "col": 1, "type": "backend", "label": "rax", "sublabel": "an agentic runtime", "width": 200}, {"id": "nixos", "lane": "serve", "col": 2, "type": "database", "label": "nix-os", "sublabel": "the NixOS VPS", "width": 200}, {"id": "ihero", "lane": "play", "col": 2, "type": "frontend", "label": "ihero", "sublabel": "music and a game, Rust", "width": 200}, {"id": "site", "lane": "web", "col": 1, "type": "external", "label": "piabrota.art", "sublabel": "the org's domain", "width": 200}, {"id": "agents", "lane": "serve", "col": 3, "type": "backend", "label": "agents", "sublabel": "watch nix-os, report", "width": 200}], "edges": [{"id": "e1", "from": "alerts", "to": "site", "label": "/alerts"}, {"id": "e2", "from": "pirsig", "to": "site", "label": "/pirsig, coming"}, {"id": "e3", "from": "nixos", "to": "site", "label": "/nixos"}]}
+{"schema_version": 2, "diagram_type": "workflow", "meta": {"title": "The piabrota fabric: eleven open projects, and where they meet the web", "locale": "en", "quality_profile": "showcase", "legend": {"mode": "hidden"}, "output": "fabric.html"}, "lanes": [{"id": "company", "label": "The company"}, {"id": "think", "label": "Think and write"}, {"id": "serve", "label": "Warn and host"}, {"id": "play", "label": "Play and listen"}, {"id": "web", "label": "On the web"}], "mainPath": ["pirsig", "site"], "nodes": [{"id": "mu", "lane": "company", "col": 0, "type": "database", "label": "mu", "sublabel": "the company chart", "width": 200}, {"id": "dojo", "lane": "company", "col": 1, "type": "database", "label": "dojo", "sublabel": "the umbrella, being set up", "width": 200}, {"id": "gramatico", "lane": "think", "col": 0, "type": "backend", "label": "gramatico", "sublabel": "plain pt-BR, a plugin", "width": 200}, {"id": "pirsig", "lane": "think", "col": 1, "type": "frontend", "label": "pirsig", "sublabel": "a second brain", "width": 200}, {"id": "closed", "lane": "think", "col": 2, "type": "backend", "label": "closed-source", "sublabel": "a book, md in, PDF out", "width": 200}, {"id": "alerts", "lane": "serve", "col": 0, "type": "backend", "label": "alerts", "sublabel": "official flood alerts", "width": 200}, {"id": "rax", "lane": "serve", "col": 1, "type": "backend", "label": "rax", "sublabel": "an agentic runtime", "width": 200}, {"id": "nixos", "lane": "serve", "col": 2, "type": "database", "label": "nix-os", "sublabel": "the NixOS VPS", "width": 200}, {"id": "ihero", "lane": "play", "col": 2, "type": "frontend", "label": "ihero", "sublabel": "music and a game, Rust", "width": 200}, {"id": "room", "lane": "play", "col": 0, "type": "frontend", "label": "room", "sublabel": "a 3D room, a site", "width": 200}, {"id": "site", "lane": "web", "col": 1, "type": "external", "label": "piabrota.art", "sublabel": "the org's domain", "width": 200}, {"id": "agents", "lane": "serve", "col": 3, "type": "backend", "label": "agents", "sublabel": "watch nix-os, report", "width": 200}], "edges": [{"id": "e1", "from": "alerts", "to": "site", "label": "/alerts"}, {"id": "e2", "from": "pirsig", "to": "site", "label": "/pirsig, coming"}, {"id": "e3", "from": "nixos", "to": "site", "label": "/nixos"}, {"id": "e4", "from": "room", "to": "site", "label": "room.piabrota.art"}]}
diff --git a/profile/archify/figures.lock b/profile/archify/figures.lock
index de27264..ce0a14f 100644
--- a/profile/archify/figures.lock
+++ b/profile/archify/figures.lock
@@ -1,2 +1,2 @@
-fabric 8f7431072134975f-208acba
-pt/fabric 7f1c436bc32c482e-208acba
+fabric 38f927c11e0ac1bc-208acba
+pt/fabric 2e4206213f2eaf99-208acba
diff --git a/profile/archify/pt/fabric.json b/profile/archify/pt/fabric.json
index 71e1da0..d06ee96 100644
--- a/profile/archify/pt/fabric.json
+++ b/profile/archify/pt/fabric.json
@@ -1 +1 @@
-{"schema_version": 2, "diagram_type": "workflow", "meta": {"title": "A fábrica piabrota: dez projetos abertos, e onde eles chegam à web", "locale": "pt-BR", "quality_profile": "showcase", "legend": {"mode": "hidden"}, "output": "fabric.html"}, "lanes": [{"id": "company", "label": "A empresa"}, {"id": "think", "label": "Pensar e escrever"}, {"id": "serve", "label": "Alertar e hospedar"}, {"id": "play", "label": "Tocar e ouvir"}, {"id": "web", "label": "Na web"}], "mainPath": ["pirsig", "site"], "nodes": [{"id": "mu", "lane": "company", "col": 0, "type": "database", "label": "mu", "sublabel": "o chart da empresa", "width": 200}, {"id": "dojo", "lane": "company", "col": 1, "type": "database", "label": "dojo", "sublabel": "o umbrella, em montagem", "width": 200}, {"id": "gramatico", "lane": "think", "col": 0, "type": "backend", "label": "gramatico", "sublabel": "pt-BR claro, um plugin", "width": 200}, {"id": "pirsig", "lane": "think", "col": 1, "type": "frontend", "label": "pirsig", "sublabel": "um segundo cérebro", "width": 200}, {"id": "closed", "lane": "think", "col": 2, "type": "backend", "label": "closed-source", "sublabel": "um livro, md vira PDF", "width": 200}, {"id": "alerts", "lane": "serve", "col": 0, "type": "backend", "label": "alerts", "sublabel": "alertas oficiais", "width": 200}, {"id": "rax", "lane": "serve", "col": 1, "type": "backend", "label": "rax", "sublabel": "um runtime agêntico", "width": 200}, {"id": "nixos", "lane": "serve", "col": 2, "type": "database", "label": "nix-os", "sublabel": "a VPS NixOS", "width": 200}, {"id": "ihero", "lane": "play", "col": 2, "type": "frontend", "label": "ihero", "sublabel": "música e jogo, em Rust", "width": 200}, {"id": "site", "lane": "web", "col": 1, "type": "external", "label": "piabrota.art", "sublabel": "o domínio da org", "width": 200}, {"id": "agents", "lane": "serve", "col": 3, "type": "backend", "label": "agents", "sublabel": "vigiam o nix-os", "width": 200}], "edges": [{"id": "e1", "from": "alerts", "to": "site", "label": "/alerts"}, {"id": "e2", "from": "pirsig", "to": "site", "label": "/pirsig, em breve"}, {"id": "e3", "from": "nixos", "to": "site", "label": "/nixos"}]}
+{"schema_version": 2, "diagram_type": "workflow", "meta": {"title": "A fábrica piabrota: onze projetos abertos, e onde eles chegam à web", "locale": "pt-BR", "quality_profile": "showcase", "legend": {"mode": "hidden"}, "output": "fabric.html"}, "lanes": [{"id": "company", "label": "A empresa"}, {"id": "think", "label": "Pensar e escrever"}, {"id": "serve", "label": "Alertar e hospedar"}, {"id": "play", "label": "Tocar e ouvir"}, {"id": "web", "label": "Na web"}], "mainPath": ["pirsig", "site"], "nodes": [{"id": "mu", "lane": "company", "col": 0, "type": "database", "label": "mu", "sublabel": "o chart da empresa", "width": 200}, {"id": "dojo", "lane": "company", "col": 1, "type": "database", "label": "dojo", "sublabel": "o umbrella, em montagem", "width": 200}, {"id": "gramatico", "lane": "think", "col": 0, "type": "backend", "label": "gramatico", "sublabel": "pt-BR claro, um plugin", "width": 200}, {"id": "pirsig", "lane": "think", "col": 1, "type": "frontend", "label": "pirsig", "sublabel": "um segundo cérebro", "width": 200}, {"id": "closed", "lane": "think", "col": 2, "type": "backend", "label": "closed-source", "sublabel": "um livro, md vira PDF", "width": 200}, {"id": "alerts", "lane": "serve", "col": 0, "type": "backend", "label": "alerts", "sublabel": "alertas oficiais", "width": 200}, {"id": "rax", "lane": "serve", "col": 1, "type": "backend", "label": "rax", "sublabel": "um runtime agêntico", "width": 200}, {"id": "nixos", "lane": "serve", "col": 2, "type": "database", "label": "nix-os", "sublabel": "a VPS NixOS", "width": 200}, {"id": "ihero", "lane": "play", "col": 2, "type": "frontend", "label": "ihero", "sublabel": "música e jogo, em Rust", "width": 200}, {"id": "room", "lane": "play", "col": 0, "type": "frontend", "label": "room", "sublabel": "um quarto 3D, um site", "width": 200}, {"id": "site", "lane": "web", "col": 1, "type": "external", "label": "piabrota.art", "sublabel": "o domínio da org", "width": 200}, {"id": "agents", "lane": "serve", "col": 3, "type": "backend", "label": "agents", "sublabel": "vigiam o nix-os", "width": 200}], "edges": [{"id": "e1", "from": "alerts", "to": "site", "label": "/alerts"}, {"id": "e2", "from": "pirsig", "to": "site", "label": "/pirsig, em breve"}, {"id": "e3", "from": "nixos", "to": "site", "label": "/nixos"}, {"id": "e4", "from": "room", "to": "site", "label": "room.piabrota.art"}]}
diff --git a/profile/img/fabric.png b/profile/img/fabric.png
index ab270a0..5fd6660 100644
Binary files a/profile/img/fabric.png and b/profile/img/fabric.png differ
diff --git a/profile/img/pt/fabric.png b/profile/img/pt/fabric.png
index 454c2fb..0c9c0fa 100644
Binary files a/profile/img/pt/fabric.png and b/profile/img/pt/fabric.png differ