Context: rooms & sessions
What the platform holds for the station. There is no key to write: this page says what exists today.
The room
A room is a person's space with the station. It has a short code (u35mub), the same on every
door: the tenant's site, Claude, ChatGPT. It holds the selection, the open journey, what
the person said about themselves (remember), and the records of what was submitted, which
any door reads back.
A room starts anonymous. The code opens the room: whoever holds it sees the selection and the records, and can submit. See Current limits.
When a person signs in inside a room, the room becomes theirs (see Auth). Its code becomes an address, no longer a key: everything the room holds opens only to them, signed in.
The session
A session is a visit. A room has several: reopening the room during the same visit does not create a session; opening it from another door does.
The conversation thread
- What the agent sees: its history, stored server-side per room, in the
agent.room_threadstable and the agent's threads. - What the person sees: the room's thread, stored server-side (
room_messages). The agent writes it at the end of each turn. It keeps what is displayed: the person's messages, the agent's answers, the rendered frames. It never keeps the instructions given to the model, nor the tools' arguments, nor their raw results. A failed turn leaves nothing. - On opening, the widget and the PWA ask the server for the thread. The browser no longer writes the thread and no longer keeps it.
- A room that has an owner gives its thread only to them, signed in. Otherwise the person sees
"This conversation belongs to an account. Sign in to see it.", with the sign-in steps. Once
signed in, the conversation shows. Signed in as another account, they see "This space belongs
to someone else." While the conversation is locked, that message stands alone: no invitation or
suggestions, and nothing can be typed. Signing in takes one's own address: the room's is never
offered to someone who is not its owner. The selection, what was remembered (
remember) and the history follow the same rule: others see only that the room is locked, and that they can sign in. The assistant can neither read nor change them either, in the widget as in Claude or ChatGPT.
This thread is not the model's memory. Claude and ChatGPT keep their own conversation.
What the browser keeps
| where | what |
|---|---|
localStorage | the room code (forgotten after 30 days), the sign-in key (convoy_holder), a visitor identifier for audience measurement, the narration's sentences |
sessionStorage | the session identifier, the displayed selection, a pending turn |
A new tab resumes the last room and the sign-in: nobody signs in again per tab. A session stays one visit in one tab.
In the target, only room_id and session_id remain, in sessionStorage
(Context).
How long
On the server side, nothing expires on its own. The browser forgets the room code after 30 days.
The messages browsers sent before the server wrote the thread stay in the database. They are never read back. They are not erased yet.
An operations script, sweep-room-data.sh, is run by hand. By default it only reports; with
--purge, it erases the data of deleted stations (rooms, events, logs, routes) and the agent's
threads that have no room, beyond 30 days. The target's default durations (24 h for an empty room,
90 days of inactivity) are not applied yet.