Repository navigation
Description
Problem
Muse Code panes have no Chat. herdr labels them muse (process detection), and Ovis already draws the Muse mark, but nothing reads Muse's session log, so Chat answers "Conversation unavailable" and the phone falls back to Terminal.
herdr has no Muse integration, so a Muse pane carries no agent_session. Choosing a log by working directory or by newest file is unsafe: on my machine five Muse panes run in one repository, and three of them were started without a session id in argv.
Proposal
Read the Muse session log (${XDG_DATA_HOME:-~/.local/share}/muse/sessions/YYYY/MM/DD/<uuid>/session.jsonl) through the existing conversation API, pager and Chat view. Reading makes no model call and needs no Muse configuration.
Binding. Each session directory holds a .session.lock with pid=<pid> and, on recent builds, host=<host>. Take the pane's one Muse foreground process, then the top-level locks that name its pid (and this host, when a host is written) and were written at or after the process started. Drop sessions whose log ends with session.end: Muse writes it when the TUI switches to another session. Bind only when exactly one session is left; otherwise keep Terminal.
Muse never deletes these locks, so the start-time check excludes a pid the OS reused, and the session.end check follows an in-TUI /resume. On my machine all seven live Muse processes map to exactly one session this way, including the four that argv alone cannot name.
First scope. User prompts (runtime.user_intent.accepted), assistant text, reasoning summaries, tool calls with their results (error, denied and exit-code state), compaction summaries, the model label, and history paging. Each would follow later in its own PR, one at a time: prompt cards (Muse logs approval/requested and run/user_input_prompt_requested), send verification, Earlier sessions and resume (muse resume <id>, session-index.db), the command catalog, todos and plan, subagents, and images.
The record types that carry the transcript are the same from Muse 1.4.2 to 1.4.12 (checked against local logs; 1.4.12 only adds bookkeeping records).
Where
Chat and prompt cards
Where it exists today
Ovis reads native transcripts for Claude Code, Codex, Grok, Antigravity and the other agents in Supported agents; this adds Muse to that list. For Muse itself, Collie, another herdr web client (MIT), reads Muse session logs for its History and Chat. Its record mapping informed this proposal. Collie binds a pane by argv and working directory; the lock-based binding above is new.
Workarounds and alternatives
Terminal works today. Binding by working directory and newest file mixes up panes in one folder. Binding only by muse resume <uuid> in argv misses a plain muse launch and an in-TUI switch. Muse's session-index.db lists sessions, but not the process that holds each one.
Activity
feat(chat): read native Muse Code conversations (devswha#1706)