A hangout spot you reach over SSH: trivia, snake, a chat lobby with an online list, a meme gallery and a leaderboard, with a live clock in the header. No shell access — every connection lands in the TUI.
Chat lobby — live chat with everyone connected, plus an online list showing who's chatting (●) and who's elsewhere in the hub (○).
go build -o sshhub .
./sshhub # listens on :23234, creates hub.db and .ssh/id_ed25519
ssh -p 23234 localhost # connectFlags: -addr, -db, -hostkey, -dev (allow several sessions per person, handy for testing locally).
The repo pins a newer Go toolchain in go.mod; with Go 1.21+ installed it is downloaded automatically.
- Connecting with an SSH key: the key fingerprint is your account. You pick a nickname on first login and scores are saved.
- Connecting without a key (
ssh -o PubkeyAuthentication=no you@host): guest session, named after your SSH username, scores not saved. - Settings: key users can change their nickname (the leaderboard follows, since scores belong to the key) and clear all their scores. Theme choice is saved per key; guests keep it for the session.
- One session per person: logging in again (same key, or for guests same address and username) closes the older session. Run with
-devto turn this off.
- Trivia: edit
assets/questions.json(answeris the index intochoices; choices are shuffled at runtime). - Memes: drop
.txtor.ansfiles intoassets/memes/. A leadingNN-sets the order. Images can be converted with e.g.chafa --size 60x25 pic.png > assets/memes/07-pic.ans.
Assets are embedded, so rebuild after changes.
scripts/screenshots/screenshots.sh regenerates the images in docs/screenshots/. It runs a demo server with seeded players and chat bots, and records a scripted SSH session with VHS in headless Chrome, so nothing opens on your desktop. Needs vhs, ttyd, ffmpeg and Chrome/Chromium.






