Portable, decentralized forums on the AT Protocol with retro vibes. https://atbbs.xyz
  • TypeScript 57.7%
  • Python 41%
  • HTML 0.3%
  • Nix 0.3%
  • CSS 0.3%
  • Other 0.4%
Find a file
2026-06-02 11:58:13 -04:00
.github/workflows add ci for telnet server 2026-04-11 11:25:23 -04:00
assets README.md: add screenshot 2026-04-05 23:56:25 -04:00
cli rewrite webui as react SPA (#7) 2026-04-09 12:24:19 -04:00
core core/slingshot: partially revert record fetching changes 2026-06-02 11:44:32 -04:00
data move back to cdn.basky.app 2026-05-25 10:11:45 -04:00
lexicons migrate lexicons! 2026-04-16 12:22:52 -04:00
opengraph opengraph: cache og images 2026-04-18 10:19:00 -04:00
telnet package atbbs-telnet properly 2026-06-02 11:58:13 -04:00
tests add python tests for core logic 2026-04-27 20:53:50 -04:00
tui move backlink filters to constellation params 2026-05-06 10:45:42 -04:00
web v1.4.2 2026-06-02 11:47:27 -04:00
.gitignore add flake 2026-06-02 11:46:34 -04:00
.python-version init 2026-04-03 18:35:56 -04:00
docker-compose.yml add ci for telnet server 2026-04-11 11:25:23 -04:00
Dockerfile extract shared data 2026-04-21 14:25:13 -04:00
Dockerfile.telnet extract shared data 2026-04-21 14:25:13 -04:00
flake.lock add flake 2026-06-02 11:46:34 -04:00
flake.nix package atbbs-telnet properly 2026-06-02 11:58:13 -04:00
justfile add python tests for core logic 2026-04-27 20:53:50 -04:00
LICENSE.md add README,d 2026-04-03 18:40:25 -04:00
package-lock.json v1.4.1 2026-05-28 23:27:27 -04:00
pyproject.toml package atbbs-telnet properly 2026-06-02 11:58:13 -04:00
README.md move from ufos -> lightrail for bbs discovery 2026-04-18 20:50:11 -04:00
uv.lock v1.4.2 2026-06-02 11:47:27 -04:00

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