mirror of
https://github.com/alyraffauf/atbbs.git
synced 2026-06-04 06:46:55 +00:00
Portable, decentralized forums on the AT Protocol with retro vibes.
https://atbbs.xyz
- TypeScript 57.7%
- Python 41%
- HTML 0.3%
- Nix 0.3%
- CSS 0.3%
- Other 0.4%
| .github/workflows | ||
| assets | ||
| cli | ||
| core | ||
| data | ||
| lexicons | ||
| opengraph | ||
| telnet | ||
| tests | ||
| tui | ||
| web | ||
| .gitignore | ||
| .python-version | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.telnet | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| LICENSE.md | ||
| package-lock.json | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
@bbs
Build a community from your existing account.
Tightly curated, fully portable, open by design.
Built on atproto.
Features
- Web and terminal: Use it in your browser, dial in from a TUI, or connect via telnet.
- 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.
Install
Requires Python 3.14+.
uv
uv tool install atbbs
Homebrew
brew install alyraffauf/tap/atbbs
Usage
atbbs # launch TUI
atbbs dial aly.codes # dial a BBS directly
atbbs --help # see all options
Web app
Docker
docker run -d -p 8080:80 -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
PUBLIC_URL=https://your-domain.com docker compose up -d
From source
git clone https://github.com/alyraffauf/atbbs.git
cd atbbs
cd web && npm install && cd ..
uv sync
just dev # run dev server with hot reload
just fmt # format code
just build # build for static deploy (set PUBLIC_URL)
just docker # build docker image
Architecture
atbbs has no backend database for content. All BBS data lives in atproto repos:
- Sysop records:
xyz.atbbs.site,xyz.atbbs.board - Moderation records:
xyz.atbbs.ban,xyz.atbbs.hide - User records:
xyz.atbbs.post,xyz.atbbs.pin,xyz.atbbs.profile
The web app and TUI query existing network infrastructure:
- Slingshot — cached record and identity fetching
- Constellation — backlink index for discovering threads and replies
- Lightrail — BBS discovery via collection listing
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 PUBLIC_URL to your domain for OAuth callbacks (required).
TUI: Data is stored in ~/.local/share/atbbs/ (Linux), ~/Library/Application Support/atbbs/ (macOS), or %APPDATA%/atbbs/ (Windows).