What
woltspace chat should give me a terminal version of the telegram experience: pick a wolt, drop into a live chat with it. The platform decides which session to attach to (most recent active, or spawn one) — same mental model as picking a chat thread in Telegram.
Today:
woltspace shell → docker exec -it … bash (host shell in container)
woltspace chat → docker exec -it … claude --dangerously-skip-permissions (spawns a fresh claude, unrelated to any wolt or session — basically useless)
There's no way to attach to a wolt's running conversation from the host terminal. If I want to talk to a wolt I have to open the lodge in a browser.
Proposal
Wolt-first, like the telegram /wolt picker:
woltspace chat # interactive picker over wolts
woltspace chat <wolt-name> # attach to that wolt's active session
woltspace chat <wolt> --new # force a new session for that wolt
woltspace chat --session <slug> # escape hatch: attach by raw session slug
Selecting a wolt:
- Look up the wolt's most recent live session (running tmux + claude alive)
- If none, spawn a new one via
start_session() (same path the lodge uses)
docker exec -it CONTAINER tmux attach -t <slug>
Picker rendering: list wolts with their creature emoji, name, and a hint about session state (● running, · idle, + new).
Why
- Faster than opening the lodge for quick check-ins
- Works over SSH where a browser isn't handy
- Same muscle memory as picking a wolt in Telegram — pick the wolt, start typing
- Same muscle memory as
woltspace shell
Implementation notes
- tmux session name == session slug (set in
start_session()), so attach is a one-liner
- Wolt list comes from
container/lib/wolts.py discovery (or hit FastAPI /wolts)
- Active session per wolt: filter
/sessions by wolt prefix in slug, pick most recent live one
- 'New session' path should call the same
start_session() the lodge calls — one entry point
- Lodge browser TUI mirroring the same tmux is fine (pair-programming feel), worth a one-line note in the attach banner
Open questions
- Detach key — surface
C-b d in a banner before attach so users don't feel stuck
- Naming collision — current
chat does something else; repurposing is breaking but the current behavior has ~zero users. Lean toward repurpose. Alternative: keep chat as fresh-claude, add woltspace talk for the picker.
- Picker UI — fzf if available, fall back to numbered prompt? Or a plain numbered prompt always (no extra dep)?
- Singletons — wolf/dog probably shouldn't appear in the picker (not chat targets), same logic as telegram
What
woltspace chatshould give me a terminal version of the telegram experience: pick a wolt, drop into a live chat with it. The platform decides which session to attach to (most recent active, or spawn one) — same mental model as picking a chat thread in Telegram.Today:
woltspace shell→docker exec -it … bash(host shell in container)woltspace chat→docker exec -it … claude --dangerously-skip-permissions(spawns a fresh claude, unrelated to any wolt or session — basically useless)There's no way to attach to a wolt's running conversation from the host terminal. If I want to talk to a wolt I have to open the lodge in a browser.
Proposal
Wolt-first, like the telegram
/woltpicker:Selecting a wolt:
start_session()(same path the lodge uses)docker exec -it CONTAINER tmux attach -t <slug>Picker rendering: list wolts with their creature emoji, name, and a hint about session state (
● running,· idle,+ new).Why
woltspace shellImplementation notes
start_session()), so attach is a one-linercontainer/lib/wolts.pydiscovery (or hit FastAPI/wolts)/sessionsby wolt prefix in slug, pick most recent live onestart_session()the lodge calls — one entry pointOpen questions
C-b din a banner before attach so users don't feel stuckchatdoes something else; repurposing is breaking but the current behavior has ~zero users. Lean toward repurpose. Alternative: keepchatas fresh-claude, addwoltspace talkfor the picker.