Skip to main content

Decentralized bulletin boards on atproto.

Project description

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

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-1.4.0.tar.gz (296.2 kB view details)

Uploaded Source

Built Distribution

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

atbbs-1.4.0-py3-none-any.whl (71.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: atbbs-1.4.0.tar.gz
  • Upload date:
  • Size: 296.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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-1.4.0.tar.gz
Algorithm Hash digest
SHA256 e62dbcb1dfd3e4baa0fac7d07b224e9cea7172435254ab6c29125f9ab5a2253c
MD5 47e71355e0c1e0c489fc3590ef1b9ebe
BLAKE2b-256 405b6ff742be1c913670a0e6356071d68db77b6cf3259b9d8fd8a4237d20aebc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: atbbs-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 71.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76ba8a46eaedaf1cf77247a8e4c5f80b12931a538bd8d33ed976303ff24263c1
MD5 8f5d7d275c2b9b7f7bef9b6cd2011461
BLAKE2b-256 90b1e02a255222132b02177684ee167f11565201ec7246e5c372adab06804b31

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