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.2.2.tar.gz (291.7 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.2.2-py3-none-any.whl (71.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: atbbs-1.2.2.tar.gz
  • Upload date:
  • Size: 291.7 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.2.2.tar.gz
Algorithm Hash digest
SHA256 44cb2212a2977373aaaa71e46fdd44efd0d01cd4e4d6331b339879b15801945d
MD5 75f7f3b40e47a78b7e3cb5bcc15738cb
BLAKE2b-256 c9e977b1e88061c90749726e58ad9378f6f2a5353e29d997391faacb0b5bf35c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: atbbs-1.2.2-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.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d880053ff057d53b1ef12aacb43fc77b182f4a790743b83d0022d7bdc1e8a9e0
MD5 de0b78adc4569d79e7c8b020216539d6
BLAKE2b-256 2f4da39e8ecfe5053b23ddf89ac6dd4f839dfe681afd99fe9e0ebb09f19bb6b7

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