Channel rooms
Create channels and per-channel users from a small admin page.
small-room websocket chat
A quiet, self-hosted chat room for people who want a place to slow down, speak plainly, and keep the interface out of the conversation.
why the name
VA-11 Chat takes inspiration from the mood of VA-11: late-night warmth, unhurried messages, and a small venue where people can say what they mean. The app keeps the stack simple so the room stays easy to understand, run, and trust.
what it does
Create channels and per-channel users from a small admin page.
Messages move over WebSocket connections without a hosted database.
Recent messages are encrypted at rest with AES-256-GCM.
Run one Node.js process with local JSON and JSONL storage.
basic docs
npm install
cp .env.example .env
ADMIN_PASSWORD=change-me COOKIE_SECRET=dev-cookie-secret MESSAGE_SECRET=dev-message-secret npm run dev
User login: http://localhost:3000/
Admin page: http://localhost:3000/admin
Set ADMIN_PASSWORD, COOKIE_SECRET, and
MESSAGE_SECRET before production use.
deployment
VA-11 Chat uses native WebSockets, so deploy it to a platform that supports persistent Node.js processes, such as a VPS or Render. If you keep local file storage in production, attach persistent disk storage and run a single instance.