foglet · ssh-first terminal bbs · / BETA live at bbs.foglet.io GitHub

there is a door in the fog

foglet is a small, self-hostable bulletin board served over ssh. the web is only the porch light. the place itself is inside your terminal.

  ── try the public beta ──

  $ ssh bbs.foglet.io
  # bring a handle, a password, or later: the key your ssh-agent already knows
read the documentation →

── elixir/otp · postgres · phoenix as infrastructure · terminal ui over ssh

§ 01

what waits on the other side

one elixir application. one postgres database. one ssh daemon. a bbs with boards, threads, posts, board chat, door games, short public notes, and a sysop who can keep the lamps lit.

boards and threads

categories, boards, threads, replies, edits, soft deletion, read pointers, subscriptions, and stable per-board message numbers.

ssh-first sessions

the main product surface is the terminal UI served over ssh. a new login promotes the new connection and closes the older one.

account workflows

registration, login, verification, password reset, profile settings, preferences, and public-key management live inside the tui.

oneliners

short public notes for the front-room feeling: a quick signal that someone else was here, recently, and left a mark.

board chat

live chat rooms sit beside boards when a sysop enables them. talk in the same small room as the threads, with ephemeral or kept history.

door games

modern in-beam doors and external pty doors can live next to classic dropfile games, with launch rules and audit records under sysop control.

sysop tools

operator surfaces for users, boards, site settings, limits, invites, moderation snapshots, and break-glass mix tasks.

web as lobby

phoenix runs the landing page, health check, telemetry, pubsub, and operational pieces. it is not a browser forum.

§ 02 · featured feature

ssh public-key authentication

your ssh-agent can knock

── the key you already use, pointed at a small bbs.

── the premise

foglet users can add ssh public keys to their accounts from inside the terminal ui. after setup, the next login can use public-key auth instead of another password prompt.

keys can be labeled and removed, so a retired laptop does not become folklore. take the key off the account; keep the account.

── why it belongs here

bbs login should feel like opening a familiar shell, not entering a growth funnel. ssh keys let the operating system do what it is already good at: prove that this machine is allowed through.

the password is still there for setup and fallback. the key is the better ritual once the place knows you.

  ── after a key is on file ──

  $ ssh bbs.foglet.io
  Authenticated using "publickey".

  ╔══════════════════════════════════════════════════════╗
  ║  welcome back.                                      ║
  ║  the fog remembers this key.                        ║
  ╚══════════════════════════════════════════════════════╝

  foglet> _
§ 03

what it is / what it is not

foglet uses modern tools in service of an old-network feeling: slower, smaller, less extractive, and meant to be run by a person.

── what it is

  • terminal-native, end to end
  • ssh as the primary transport
  • one instance, one sysop, one world
  • built on elixir / otp / postgres
  • a place for boards, threads, posts, chat, oneliners, and doors
  • beta, live, and honest about its edges

── what it is not

  • a discord alternative
  • a federated system
  • a web forum with a terminal skin
  • a mobile-first experience
  • a hosted saas product
  • a finished moderation suite
§ 04

the stack, in one screen

runtime elixir/otp · supervised application processes
web shell phoenix for endpoint, landing page, health, telemetry, pubsub, and livedashboard
database postgresql via ecto · uuid primary keys · citext handles
ssh server erlang :ssh daemon under the app supervision tree
auth passwords · ssh public keys · configurable registration modes
tui raxol screens rendered for the ssh session
ops health endpoint · break-glass mix tasks · runtime configuration
§ 05

enter, or read the source

foglet is beta software. the public instance is an invitation, not a promise that every corridor is finished.

  $ ssh bbs.foglet.io

github.com/bmanturner/foglet-bbs →

── foglet · a small bbs you reach over ssh · nothing here is for sale ──

ssh bbs.foglet.io · source github.com/bmanturner/foglet-bbs foglet · beta