WolfBBS is a self-hosted, SSH-first bulletin board system with a Wildcat-style ANSI experience, modern web companion, IRC bridge, doors, file areas, and turnkey installation.
The canonical public repo is Awassee/wolfbbs.
WolfBBS gives you classic BBS texture with a modern operator control plane and turnkey install/upgrade workflows.
Quick links:
- Install now
- Release v2.1.9 notes
- Screenshot showcase
- Feature datasheet
- First 30 minutes as sysop
- Running a community
- Documentation hub
- Open source and licensing
- Security policy
- Contributing
- Releases
WolfBBS is currently shipped as v2.1.9 with:
- clean package generation via
scripts/package-dist.sh --clean --version v2.1.9 - checksum + manifest output per bundle under
dist/v2.1.9/ - full acceptance validation (
go test, verifier fast/smoke, automated manual acceptance) - one-command readiness validation via
scripts/feature-complete.sh - a simplified web shell with grouped status/tools menus, compact legacy nav rails, and lower-noise dense pages
- refreshed screenshots and public docs that match the shipped UI
- updated GitHub-facing product pages (
README,docs/SHOWCASE.md,docs/DATASHEET.md,docs/PRODUCT_GUIDE.md)
| Lane | Primary surfaces | Why this lane exists |
|---|---|---|
| Caller | SSH ANSI, /today, /boards, /chat, /doors |
keeps daily interaction fast, social, and game-friendly |
| Sysop | /admin/setup, /admin/launch, /admin/config, /admin/ops |
gives operators a direct launch and maintenance control plane |
| Community | /events, /challenges, /clubhouse, IRC bridge |
creates repeat visit loops and shared momentum |
| Distribution | bootstrap.sh, install.sh, release tarballs |
supports quick install, upgrade, repair, and uninstall lifecycle |
- Paste one command (Linux):
curl -fsSL https://raw.githubusercontent.com/Awassee/wolfbbs/main/bootstrap.sh | bash - Sign in to
/admin/setupusing the bootstrap sysop from installer output. - Validate caller surfaces in this order: SSH,
/boards,/chat,/doors,/scores.
WolfBBS is built for operators who want the feel of a classic board without the usual setup pain.
Retro caller experience: ANSI/TUI menus, message boards, private mail, doors, newscan, and classic operator views.Modern access layer: web companion, admin console, live chat, IRC bridge, password reset, health checks, and packaging.Low-friction operations: paste-and-run bootstrap, guided installer menu, upgrade and repair commands, Docker-first deployment.Community-ready: callers, moderators, sysops, guest tours, directory, bulletins, one-liners, scores, and public-facing discovery surfaces.
| Capability | What it does | Why it matters |
|---|---|---|
| ANSI BBS | SSH-first caller experience with message boards, files, chat, doors, newscan, and classic menus | Delivers the nostalgic interaction model people actually want |
| Web companion | Browser-based boards, mail, chat, admin, setup, status, and discovery routes | Makes the board usable for modern users and operators |
| IRC bridge | Shared channel state between web chat and IRC clients | Lets existing IRC users join the same community without a custom client |
| Sysop control center | Setup wizard, config center, audit views, diagnostics, and door/file/chat administration | Reduces day-two operational burden |
| File base and doors | Uploads, indexing, queue management, scores, trophies, and integrated games | Gives the board depth beyond message threads |
| Packaging and lifecycle | Bootstrap installer, release tarballs, repair, doctor, upgrade, uninstall | Makes the product practical to deploy and maintain |
| Highlight area | Core features | What this gives you |
|---|---|---|
| Terminal-first caller UX | ANSI menus, message boards, private mail, doors, score surfaces | classic BBS feel with modern reliability |
| Multi-surface access | SSH + web companion + IRC bridge | one community layer across different clients |
| Sysop operations | setup wizard, launch center, config, audits, diagnostics | lower friction on day one and day two |
| Release and lifecycle | bootstrap installer, package artifacts, upgrade/repair/uninstall commands | practical deployment path for non-developer operators |
Full product datasheet: docs/DATASHEET.md
WolfBBS is a good fit if you want to:
- host a hobbyist retro board with modern onboarding
- run an internal community hub with SSH, web, and IRC access
- launch a retro-gaming or door-game focused community
- experiment with BBS-style interaction without building a stack from scratch
curl -fsSL https://raw.githubusercontent.com/Awassee/wolfbbs/main/bootstrap.sh | bashThis path does not require git to be installed first.
curl -fsSL https://raw.githubusercontent.com/Awassee/wolfbbs/main/bootstrap.sh | bash -s -- --install-brewThis path also works without a preinstalled git client.
More visuals and route-level notes: docs/SHOWCASE.md
| If you want to... | Use this | Why |
|---|---|---|
| get WolfBBS running as fast as possible | bootstrap installer | installs dependencies, downloads the latest packaged app bundle, and starts the stack |
| inspect or modify the code locally | clone the repo | best for operators who also want a working tree |
| download a packaged bundle | GitHub Release tarball | best for controlled installs and offline handoff |
Source checkout flow:
git clone https://github.com/Awassee/wolfbbs.git wolfbbs
cd wolfbbs
bash install.shPackaged app bundle flow:
tar -xzf wolfbbs_<version>_<os>_<arch>.tar.gz
cd wolfbbs_<version>_<os>_<arch>
bash install.sh --yesThe paste-and-go bootstrap path now aims for the same bundle-first experience. It should not need git for a normal install.
Build clean v2.1.9 distro bundles locally:
scripts/package-dist.sh --clean --version v2.1.9 \
--platform linux/amd64 --platform linux/arm64 \
--platform darwin/amd64 --platform darwin/arm64| Role | Best starting point | What it is for |
|---|---|---|
| sysop | /admin/setup |
identity, safety baseline, bootstrap actions, first health checks |
| moderator | /chat, /boards, /admin/chat |
live moderation and day-to-day community visibility |
| caller | /today, SSH, /boards, /chat, /doors |
the actual board experience plus the fastest daily brief |
| visitor | /connect, /tour, /help |
orientation before committing to an account |
After install, WolfBBS prints the connection summary and bootstrap sysop credentials. The recommended first-run flow is:
- Open
/admin/setupto complete identity, safety, and bootstrap checks. - Open
/admin/launchto see the operator launch verdict and direct next actions. - Open
/admin/configto tune site text, runtime flags, services, and operator preferences. - Seed default boards and confirm the mailbot bootstrap action.
- Create at least one non-sysop user or moderator from
/admin/users. - Schedule at least one event in
/admin/events, then verify/eventsand/events/recaps. - Configure an active season in
/admin/challenges, then verify/challengesand/clubhouse. - Run upgrade safety checks in
/admin/upgrade-safetyand validate artifacts in/admin/backups. - Connect over SSH and verify the caller-facing ANSI flow.
- Open
/boards,/chat,/doors, and/scoresto confirm the public experience.
The installer also writes:
<prefix>/FIRST_STEPS.txtwith exact URLs, commands, and next actions<prefix>/SERVICE_STATUS.txtafterbash install.sh --status
Default local endpoints:
- SSH:
ssh localhost -p 2222 - Web admin:
http://localhost:8080/admin - Web chat:
http://localhost:8080/chat - IRC:
localhost:6667 - IRC TLS:
localhost:6697when enabled
bash install.sh --status
bash install.sh --doctor
bash install.sh --port-audit
bash install.sh --debug-bundle
bash install.sh --repair
bash install.sh --start
bash install.sh --stop
bash install.sh --restart
bash install.sh --logs
bash install.sh --upgrade
bash install.sh --rapid-upgrade
bash install.sh --uninstall --purge --yes
bash install.sh --clean-uninstall --yesIn-BBS upgrade:
bash install.sh --repair--repair backfills in-app upgrade env wiring on older installs. Then in the SSH main menu press / and enter /app upgrade.
WolfBBS is open source under the MIT License.
- licensing details: docs/OPEN_SOURCE.md
- contribution terms: CONTRIBUTING.md
Full doc hub: docs/README.md
- Start Here: fastest route from install to a usable board
- Quickstart: fast path from download to first login
- Install Guide: install modes, lifecycle commands, and packaging
- Product Guide: positioning, use cases, and operator workflow
- Datasheet: concise feature and deployment profile
- Showcase: GitHub-facing feature highlights and screenshot tour
- Operator Playbook: which operator surface to use, and when
- Post-Release Triage: first-72-hours release loop and hotfix rules
- Next Feature Wave: what to build after the hardening/trust tranche
- Troubleshooting: symptom-driven fixes and recovery path
- Feature Reference: route, binary, and surface inventory
- Acceptance Contract: MUST/SHOULD acceptance criteria
Regenerate screenshot assets:
scripts/capture-doc-screenshots.shCallers: ANSI login, plain-language main menu, guest tour, boards, private mail, bulletins, who’s online, last callers, files, doors, multi-room chatCommunity: IRC bridge, one-liners, clubhouse, seasonal challenges, directory, discovery queue, events calendar + recaps, today brief, scoreboards, file picksOperators: admin setup wizard, config center, users, boards, files, doors, events/challenges, upgrade safety, backup browser, release dashboard, audit, health, diagnosticsDistribution: release bundles, bootstrap installer, upgrade flows, smoke verification, packaging checksums
You should be able to say yes to all of these:
- I can sign into
/admin. /admin/setupand/admin/configreflect my board name and host.- SSH login works and the ANSI menu feels right.
/chatworks and mirrors to IRC if IRC is enabled./boardshas seeded or starter content./doorsand/scoresrender without dead ends.bash install.sh --doctorreturns a usable health report.
go test ./...
go build ./...
scripts/verify.sh --fast
scripts/security-audit.sh
scripts/qa-functional.sh
scripts/run-e2e.sh
scripts/package-dist.shWarm-environment shortcuts:
WOLFBBS_SKIP_NPM_INSTALL=true WOLFBBS_SKIP_BROWSER_INSTALL=true scripts/run-e2e.sh --no-go --no-tui
WOLFBBS_WEB_E2E_MIN_FREE_MB=800 scripts/run-e2e.sh --no-go --no-tuiOne-command QA runner:
scripts/build.sh --quick
scripts/build.sh --fullIf local Node is 25+, use Node 24 on macOS:
brew install node@24
export PATH="$(brew --prefix node@24)/bin:$PATH"
scripts/run-e2e.shscripts/manual-acceptance.sh --guidedThis writes docs/manual-acceptance-latest.md with PASS, FAIL, and SKIPPED results by manual spec ID.
docs/START_HERE.mddocs/ACCEPTANCE_SPEC.mddocs/OPERATIONS.mddocs/manual-acceptance.mddocs/screens.mddocs/admin.mddocs/chat.mddocs/irc-compat.mddocs/doors.mddocs/message-network.mddocs/mods.md








