Skip to main content

Decentralized bulletin boards on atproto.

Project description

Build License: AGPL v3 Ko-fi

@bbs logo

@bbs

Bulletin boards on atproto. Web app and terminal client.

@bbs screenshot

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.

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 serve            # start the web server
atbbs --help           # see all options

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.

From source

Requires Node.js and just.

git clone https://github.com/alyraffauf/atbbs.git
cd atbbs
npm install
uv sync
just dev     # run dev server with hot reload
just fmt     # format code
just build   # build docker image

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
  • Moderation records: xyz.atboards.ban, xyz.atboards.hide
  • 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 key
  • atbbs.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

AGPL-3.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atbbs-0.7.0.tar.gz (224.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

atbbs-0.7.0-py3-none-any.whl (78.0 kB view details)

Uploaded Python 3

File details

Details for the file atbbs-0.7.0.tar.gz.

File metadata

  • Download URL: atbbs-0.7.0.tar.gz
  • Upload date:
  • Size: 224.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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

Hashes for atbbs-0.7.0.tar.gz
Algorithm Hash digest
SHA256 33ae0c0cc9435c40a7816b56048456f7ad019835fd10c97539b9a28330ebde06
MD5 c899d4940bbb529bd7419e76d188e4d0
BLAKE2b-256 0e7a9a2849a4a674838d9d181a838f748d7a3cbd52e91996709695c745a6bd1b

See more details on using hashes here.

File details

Details for the file atbbs-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: atbbs-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 78.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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

Hashes for atbbs-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 439642e563a4f585cbb659f61fd0565f47b465c68b2f2cf13c9f91406f35c83f
MD5 ccb26c59f79d2d9a1a0cec3309453e7b
BLAKE2b-256 2f2690384f7d996e310b88aea840e37b512a2097222cf1463dc66e5d624a8d63

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page