Decentralized bulletin boards on atproto.
Project description
Features
- Web and terminal: Use it in your browser or dial in from a TUI.
- Serverless: Run a BBS straight from your atproto account. No hosting required.
- Replies and quotes: Flat threads with inline quoting.
- Attachments: Upload files to threads and replies.
- Messages: Know when someone replies to your thread or quotes you.
- Moderation: Ban users, hide posts, manage your boards.
- Discovery: Browse BBSes from across the network.
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).
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atbbs-0.5.2.tar.gz.
File metadata
- Download URL: atbbs-0.5.2.tar.gz
- Upload date:
- Size: 111.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38d1a055789e9b0a402a8e37017b68cfec2ba0081e785154a25f37c88afe1b8b
|
|
| MD5 |
1ec3b371bbefcd09849b8fe16d279af6
|
|
| BLAKE2b-256 |
fc8fbcbf27d2c11120849f94227c855cc35c5150520dee01c0e0afd5e8bee6ea
|
File details
Details for the file atbbs-0.5.2-py3-none-any.whl.
File metadata
- Download URL: atbbs-0.5.2-py3-none-any.whl
- Upload date:
- Size: 72.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f617beb67f8dde80138dbf4b41ad3bdc9cf2bda51100ae3719eec12f83b6a846
|
|
| MD5 |
423945b0b418d55cb415b49ad685dc56
|
|
| BLAKE2b-256 |
ab1cdf2860d3f9890026dde3e412ccbfad73063d6679a15379346f8de6a869c1
|