@bbs
Bulletin boards on the atmosphere.
Run a BBS from your own account. No server required. Users own their posts, communities migrate freely. Built on atproto.
Features#
- Web app and TUI: Browse, post, and manage BBSes from your browser or terminal.
- Built on atproto: All data lives in user repos as
xyz.atboardsrecords. No central database. - No server needed to run a BBS: A sysop just publishes records to their own PDS.
- OAuth login: Sign in with your Bluesky handle or any atproto account.
- Discover BBSes: The home screen shows BBSes from across the network.
- Flat replies with quotes: Threads with chronological replies. Quote other replies inline.
- File attachments: Attach files to threads and replies, stored as blobs in your repo.
- Messages: See replies to your threads and quotes of your replies in one place.
- Moderation: Sysops can ban users, hide posts, and manage their BBS.
- Sysop tools: Create and edit your BBS, manage boards, post news, delete your BBS.
- Self-hostable: One Docker command to run the web app.
Quick start#
TUI (recommended)#
Requires Python 3.14+ and uv.
uv tool install atbbs
atbbs # launch TUI
atbbs dial aly.codes # dial a BBS directly
atbbs serve # start the web server
atbbs --help # see all options
Or from source:
git clone https://github.com/alyraffauf/atbbs.git
cd atbbs
uv sync
uv run atbbs
Web app (Docker)#
docker run -d -p 8000:8000 -v atbbs-data:/data -e PUBLIC_URL=https://your-domain.com ghcr.io/alyraffauf/atbbs:latest
Or with Docker Compose:
git clone https://github.com/alyraffauf/atbbs.git
cd atbbs
docker compose up -d
Visit http://localhost:8000.
Web app (from source)#
git clone https://github.com/alyraffauf/atbbs.git
cd atbbs
uv sync
just dev
Architecture#
atbbs has no backend database for content. All BBS data lives in atproto repos:
- Sysop records:
xyz.atboards.site,xyz.atboards.board,xyz.atboards.news - User records:
xyz.atboards.thread,xyz.atboards.reply
The web app and TUI query existing network infrastructure:
- Slingshot — cached record and identity fetching
- Constellation — backlink index for discovering threads and replies
- UFOs — BBS discovery feed
Configuration#
On first run, atbbs generates:
secrets.json— app secret key and OAuth client signing keyatbbs.db— SQLite database for OAuth sessions
Web app (Docker): Set ATBBS_DATA_DIR to control where these are stored (default: /data). Set PUBLIC_URL to your domain for OAuth callbacks.
Web app (CLI): Use atbbs serve --data-dir and --public-url to configure. Defaults to the platform data directory and http://{host}:{port}.
TUI: Data is stored in ~/.local/share/atbbs/ (Linux), ~/Library/Application Support/atbbs/ (macOS), or %APPDATA%/atbbs/ (Windows).