Video calls (PairUX→ASCII), agent@ chat, and finger routes

ssh video-<code>@ joins a PairUX/LiveKit call rendered as truecolor
ASCII (▀ half-blocks, 2 pixels per cell); video@ prompts for a code.
Codes are minted by PairUX only. Pipeline: VP8 RTP → PLI keyframe
requests → ivfwriter remux → ffmpeg decode/scale → RGB24 → ANSI →
bubbletea over the SSH PTY. Subscriber-only, no audio in v1.

ssh agent@ opens a persisted chat with the operator's agent —
AGENTBBS_AGENT_CMD runs per message (stdin→stdout), e.g. `claude -p`.

ssh <member>@ with someone else's name prints a classic finger card
(.plan, member since, last seen) and disconnects; your own name still
enters the hub.

cmd/lkpublish: dev publisher for testing (explicit -fps pacing; lksdk
IVF replay mispaces from file timebase alone, measured 1fps from a
15fps file; dimensions required or dynacast pauses the track).

Verified end-to-end against livekit-server --dev: 128k truecolor cells
/ 20k distinct colors streamed over a real SSH session; chat round-trip
and finger card verified over SSH. Go toolchain pinned to 1.26 via
mise.toml (lksdk requirement).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Anthony Ettinger 2026-06-11 11:43:38 +00:00
parent f3b085a08f
commit 9b0f465946
14 changed files with 1397 additions and 46 deletions

View file

@ -4,15 +4,18 @@
by Profullstack, Inc.
```bash
ssh bbs@profullstack.com # the hub: arcade (DOOM, snake), leaderboards — guests welcome
ssh join@profullstack.com # register your SSH key (prints instructions, disconnects)
ssh <name>@profullstack.com # the hub as a member: saves, your own WADs, leaderboards
ssh pod@profullstack.com # your own Linux pod — members, $1/mo via CoinPay
ssh bbs@profullstack.com # the hub: arcade (DOOM, snake), leaderboards — guests welcome
ssh join@profullstack.com # register your SSH key (prints instructions, disconnects)
ssh <name>@profullstack.com # the hub as a member — or finger someone else's name
ssh pod@profullstack.com # your own Linux pod — members, $1/mo via CoinPay
ssh video-<code>@profullstack.com # join a PairUX video call as truecolor ASCII
ssh agent@profullstack.com # chat with the operator's AI agent
```
No browser, no install, no client download. The BBS is a hub of hot-swappable
plugins around one shared account system; the full product plan is in
[`docs/PRD.md`](docs/PRD.md) and [`docs/pods.md`](docs/pods.md).
[`docs/PRD.md`](docs/PRD.md), [`docs/pods.md`](docs/pods.md),
[`docs/video.md`](docs/video.md), and [`docs/social.md`](docs/social.md).
## Status
@ -21,6 +24,8 @@ plugins around one shared account system; the full product plan is in
| M0 — core hub (wish server, auth, plugin contract, SQLite) | ✅ |
| M1 — arcade (doom-ascii + Freedoom, sandbox, saves, leaderboards) | ✅ |
| Pods (`pod@`, rootless containers, CoinPay membership) | ✅ |
| Video (`video-<code>@`, PairUX/LiveKit → ASCII streaming) | ✅ |
| `agent@` chat (configurable agent backend) + finger | ✅ |
| M2 — admin console | ⬜ |
| M3 — AgentGames (agent-vs-agent ladder; spec on logicsrc.com) | ⬜ |
| M4 — Files (cl1.tech SFTP workspaces) | ⬜ |