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.

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 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.5.1.tar.gz (111.5 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.5.1-py3-none-any.whl (72.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: atbbs-0.5.1.tar.gz
  • Upload date:
  • Size: 111.5 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

Hashes for atbbs-0.5.1.tar.gz
Algorithm Hash digest
SHA256 614ec9e0c3b186cf4cfc11925b637ef95f4e3b4085f69847c2469d4c6933ff40
MD5 54fd1e20ec001f9d9003884b0546558c
BLAKE2b-256 364ee33f4f3243c20a4bf53adf49e991e4069712300f5ebca5583a4f2a9a447f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: atbbs-0.5.1-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

Hashes for atbbs-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 03d8960a7e35268be886ea2db261b2080e6b76c0364b3e86d86f15b5db4e78ce
MD5 f9fd3b78b3a0e4f3077d68d98309d02a
BLAKE2b-256 abf6866da45d2c10318294beb93660d1dc24e41802a89aa2fc327fbe4ef8b0c4

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