mirror of
https://github.com/profullstack/agentbbs.git
synced 2026-08-13 22:37:28 +00:00
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>
41 lines
1.3 KiB
Markdown
41 lines
1.3 KiB
Markdown
# Social Routes Addendum: agent@ and finger
|
|
|
|
## agent@ — talk to the operator
|
|
|
|
```bash
|
|
ssh agent@profullstack.com
|
|
```
|
|
|
|
A chat TUI: visitors talk to the operator's AI agent. Every message (both
|
|
directions) is persisted to `chat_messages`, so the operator can read
|
|
conversations later; live operator takeover arrives with the M2 admin
|
|
console.
|
|
|
|
The agent backend is one command, configured by env:
|
|
|
|
| Var | Meaning |
|
|
|---|---|
|
|
| `AGENTBBS_AGENT_CMD` | command per message: user text on stdin, reply on stdout (120s timeout). e.g. `claude -p`, a logicsrc/commandboard agent, any script. Unset = "message saved for the operator" mode. |
|
|
|
|
Identity: if the visitor's SSH key matches a member, the transcript is tied
|
|
to their account; otherwise it's keyed by remote address as a guest.
|
|
|
|
## finger — `ssh <member>@`
|
|
|
|
SSH'ing to an account name that exists but **isn't yours** prints a classic
|
|
finger card and disconnects:
|
|
|
|
```
|
|
$ ssh anthony@profullstack.com
|
|
|
|
Login: anthony Kind: member
|
|
Member since: 2026-06-11 Last seen: 2026-06-11 11:07 UTC
|
|
Plan:
|
|
building agentbbs.
|
|
```
|
|
|
|
- The plan is read from the member's `~/.plan` (or `plan.txt`) in their data
|
|
directory.
|
|
- Your own name (key matches) still lands you in the hub; unclaimed names
|
|
fall through to the hub's claim flow.
|
|
- Works keyless — like real finger.
|