44by Profullstack, Inc.
55
66``` bash
7- ssh bbs@profullstack.com # the hub: arcade (DOOM, snake), leaderboards — guests welcome
8- ssh join@profullstack.com # register + confirm email by code, then the Premium offer
9- ssh < name> @profullstack.com # the hub as a member — or finger someone else's name
10- ssh pod@profullstack.com # your own Linux pod — FREE for verified members
11- ssh domain@profullstack.com # point your domain at your homepage (Premium)
12- ssh video-< code> @profullstack.com # join a PairUX video call as truecolor ASCII
13- ssh agent@profullstack.com # chat with the operator's AI agent
7+ ssh join@bbs.profullstack.com # new here? register + confirm your email, get your account
8+ ssh < name> @bbs.profullstack.com # your BBS: hub, arcade, your pod, chat, domains — all inside
149```
1510
16- ** Membership:** verified-email members are ** free** — each gets a Docker pod
17- (` ssh pod@ ` ) and a homepage at ` https://host/~name ` . ** Premium** ($10 one-time,
18- lifetime) adds a personal ` name@host ` email (via forwardemail.net) and custom
19- domains.
11+ Just two SSH front doors: ** ` join@ ` ** to onboard a new key, then
12+ ** ` <name>@ ` ** for everything else — the hub, your pod, the arcade, chat, and
13+ domains are all reached from there.
14+
15+ ** Membership:** a verified-email account is ** free** — you get a personal Docker
16+ pod and a homepage at ` https://bbs.profullstack.com/~name ` . ** Premium** ($10
17+ one-time, lifetime) adds a personal ` name@bbs.profullstack.com ` email (via
18+ forwardemail.net) and custom domains.
2019
2120No browser, no install, no client download. The BBS is a hub of hot-swappable
2221plugins around one shared account system; the full product plan is in
@@ -29,7 +28,7 @@ plugins around one shared account system; the full product plan is in
2928| ---| ---|
3029| M0 — core hub (wish server, auth, plugin contract, SQLite) | ✅ |
3130| M1 — arcade (doom-ascii + Freedoom, sandbox, saves, leaderboards) | ✅ |
32- | Pods (` pod@ ` , rootless containers, CoinPay membership ) | ✅ |
31+ | Pods (rootless containers, free for verified members ) | ✅ |
3332| Video (` video-<code>@ ` , PairUX/LiveKit → ASCII streaming) | ✅ |
3433| ` agent@ ` chat (configurable agent backend) + finger | ✅ |
3534| M2 — admin console | ⬜ |
@@ -43,7 +42,7 @@ plugins around one shared account system; the full product plan is in
4342go build -o agentbbs ./cmd/agentbbs
4443scripts/fetch-assets.sh # build doom-ascii + fetch Freedoom (optional)
4544./agentbbs # listens on :2222
46- ssh -p 2222 bbs @localhost
45+ ssh -p 2222 join@localhost # onboard, then: ssh -p 2222 <name> @localhost
4746```
4847
4948Configuration (env):
@@ -53,13 +52,14 @@ Configuration (env):
5352| ` AGENTBBS_ADDR ` | ` :2222 ` | listen address |
5453| ` AGENTBBS_DATA ` | ` ./data ` | SQLite db, host key, per-user dirs |
5554| ` AGENTBBS_ASSETS ` | ` ./assets ` | doom binary + wads |
56- | ` AGENTBBS_HOST ` | ` profullstack.com ` | hostname shown in messages |
55+ | ` AGENTBBS_HOST ` | ` bbs. profullstack.com` | hostname shown in messages |
5756| ` AGENTBBS_SANDBOX ` | ` auto ` | ` bwrap ` / ` prlimit ` / ` none ` |
5857| ` AGENTBBS_POD_IMAGE ` | ` debian:stable-slim ` | pod base image |
5958| ` AGENTBBS_POD_MEM ` / ` AGENTBBS_POD_CPUS ` | ` 512m ` / ` 1 ` | pod caps |
6059| ` AGENTBBS_POD_KEEP ` | unset | ` 1 ` keeps pods running after disconnect |
61- | ` AGENTBBS_COINPAY_PAY_TMPL ` | coinpay default | pay command shown to users |
62- | ` AGENTBBS_COINPAY_VERIFY_CMD ` | unset | verifier; exit 0 = paid |
60+ | ` COINPAY_API_KEY ` | unset | CoinPay API key (Premium payments) |
61+ | ` AGENTBBS_COINPAY_MERCHANT_ID ` | unset | CoinPay merchant/business id |
62+ | ` AGENTBBS_FORWARDEMAIL_API_KEY ` | unset | forwardemail.net key (Premium email) |
6363
6464Ops:
6565
@@ -86,15 +86,16 @@ Full details, required secrets, and ops commands: [`docs/deploy.md`](docs/deploy
8686- ** Plugins** (` internal/plugin ` ): ` ID/Title/Description/RequiresAuth/New ` ; a
8787 plugin owns the session until it emits ` ExitMsg ` . Adding a feature is one
8888 interface implementation plus one registration.
89- - ** Routing** : SSH username selects the surface — hub, onboarding, or pod.
89+ - ** Routing** : SSH username selects the surface — onboarding (` join@ ` ) or your
90+ hub (` <name>@ ` ); pods/arcade/chat/domains are features inside the hub.
9091- ** Pods** (` internal/pods ` ): rootless Podman preferred, hardened Docker
9192 fallback; per-user volume; cpu/mem/pids caps; no host root, ever.
9293- ** Sandbox** (` internal/sandbox ` ): bubblewrap (ro rootfs, no net, private
9394 scratch) or prlimit for arcade binaries.
9495- ** Store** (` internal/store ` ): SQLite behind an interface (Postgres later is a
9596 driver swap). Users, sessions, scores, pod subscriptions.
96- - ** Payments** (` internal/payments ` ): CoinPay CLI integration + HMAC payment
97- references; manual grant path for ops.
97+ - ** Payments** (` internal/payments ` ): CoinPay REST API (coinpayportal.com) for
98+ the $10 lifetime membership + HMAC payment references; manual grant for ops.
9899
99100## License
100101
0 commit comments