Skip to content

alyraffauf/atbbs

Repository files navigation

Build License: AGPL v3 Ko-fi

@bbs logo

@bbs

Build a community from your existing account.

Tightly curated, fully portable, open by design.

Built on atproto.

@bbs screenshot

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

Requires Node.js and just.

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 key
  • atbbs.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).

License

AGPL-3.0

About

Portable, decentralized forums on the AT Protocol with retro vibes.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors