Skip to content

A Pi pane shows no model in the chat input box until its first reply #2583

Closed

Description

@arjun-zosma

What happened

A Pi pane shows no model in the chat input box until its first reply. For Claude Code and Codex the
pill names the model as soon as the pane opens; for Pi it stays at "No model".

What you expected

The pill names the model Pi is on from the moment the chat is opened, and changes when the model is
changed in the pane.

How to reproduce

  1. New session → Pi. Do not send anything yet.
  2. Open Chat for that pane.

Also reproduced with no UI at all, against Ovis main @ 64ae5e7 with Pi 1.4.0: create the pane
through the bridge (POST /api/workspace/create {"agent":{"kind":"pi"},"cwd":"/tmp/ovis-repro"}) and
poll GET /api/pane/conversation?pane_id=<pane>.

What you see

Chat shows "No model", and the read behind it returns nothing about the model:

{"workspace_id":"w4:p4","agent":"pi"}

no model, no thinkingLevel, for as long as the pane has had no turn. The ~/.pi/agent/sessions/
directory for that pane's folder stays empty. The pill starts working by itself after the first reply.

Environment

  • Ovis version / build: main @ 64ae5e7, and the installed plugin build 3081164-0
  • How you run it: herdr plugin (server/supervisor.ts + server/managed.ts), headless, on a desktop
    Arch box (Pi's own TUI is not involved)
  • Browser: Chromium
  • Agent: pi 1.4.0, ~/.pi

What I think is going on

Pi keeps its model outside the transcript, so there is nothing for the transcript path to read:

  • a fresh pi --mode rpc process answers get_state with model: null;
  • a begun session's JSONL header has no model line either — the first model_change record only
    appears once a turn has run (and Pi draws the model as a name from its catalog, not as
    provider/id);
  • what Pi does show is its footer row, one line, at any pane width:
    ~/code/zosmaai/ovis 0.0%/262k (auto) zorro-davidau-3.8-flash-next • xhigh,
    and the same choice in ~/.pi/agent/settings.json (provider + model).

Ovis already reads a start screen for Claude (claude-transcript), Codex (codex-transcript) and
gjc (gjc-transcript) in server/start-screen.ts, but no screen is registered for pi-transcript,
so a Pi pane that has not had a turn reports no model and no thinking level.

A PR is on the way that reads that footer row the same way the other start screens are read, keeps it
fresh for panes that have not had a turn yet (Pi rewrites its footer when the model is changed with
Ctrl+P), and, since Pi's launch flags were never declared, passes a model and thinking level chosen
at New Session as --model and --thinking, with a first message handed over behind -- as
Codex's already is.

Activity

  1. added a commit that references this issue on Nov 4, 2026
    819ab41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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