Skip to content

woltspace chat: attach to a live session in the terminal #341

@woltspace-jerpint

Description

@woltspace-jerpint

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 shelldocker exec -it … bash (host shell in container)
  • woltspace chatdocker 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:

  1. Look up the wolt's most recent live session (running tmux + claude alive)
  2. If none, spawn a new one via start_session() (same path the lodge uses)
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions