about mind-chat-v0
This is a prototype. Two users (alice on port 3031, bob on port 3032) each have a Solid pod backed by Community Solid Server v7. The chat room chat/general/lives on alice's pod with an ACL granting bob read+append.
What lives where
- On alice's pod: the room descriptor (
chat/general/index.ttl), the WAC ACL (chat/general/.acl), and per-day message files (chat/general/YYYY/MM/DD/chat.ttl) in the SolidOS long-chat layout. - On bob's pod:his profile and inbox. Bob owns no rooms in this demo — he's a member of alice's room via her ACL.
- On the chat app's server: nothing. No message store, no membership table, no analytics.
How real-time works
Each connected client subscribes to today's chat file via WebSocketChannel2023. On every PATCH the resource emits an update notification; the client re-GETs and renders. If the WebSocket fails, the UI falls back to 2-second polling.
Deferred to v1
- End-to-end encryption (X25519 + libsodium sealed-box)
- Cross-server federation (UMA tokens, foreign-pod inbox grants)
- Presence, typing indicators, read receipts
- Edits, deletes, reactions, threading (the data model supports them; the UI doesn't yet)
- Image uploads
- An indexer with a public-rooms directory