pi-cc-tui

Make pi's TUI look like Claude Code: tool calls, diffs, messages, spinner, input box, status line and dark theme

Packages

Package details

extensiontheme

Install pi-cc-tui from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-cc-tui
Package
pi-cc-tui
Version
0.1.0
Published
Oct 5, 2026
Downloads
182/mo · 28/wk
Author
nightsum
License
MIT
Types
extension, theme
Size
30.8 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions/cc-tui.ts",
    "./extensions/cc-tools.ts",
    "./extensions/cc-statusline.ts"
  ],
  "themes": [
    "./themes/claude-code.json"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-cc-tui

Make pi look like Claude Code.

❯ 你好,只回一个字

 ⏺ 好

────────────────────────────────────────────────────────────────────────────────
❯ █
────────────────────────────────────────────────────────────────────────────────
  ➜ my-app ██░░░ 41% 410k/1000k ⚡ 4.1ktok 69/s $3.20 +215 -3 Opus 5.5 (high) ⏱ 12s      55% until auto-compact

简体中文

Install

pi install npm:pi-cc-tui

Then pick the theme with /theme → claude-code, or set it in ~/.pi/agent/settings.json:

{ "theme": "claude-code" }

Try it once without installing: pi -e npm:pi-cc-tui

What it changes

Input box — ❯ prompt, wrapped lines indented under it, full-width gray rules above and below. Mouse clicks still land on the right column.

User messages — gray block with a dim ❯ , no blank padding rows.

Assistant text — ⏺ marker with a 2-column hanging indent. Code blocks without ``` fences, quotes with a dim ▎, links as OSC 8 hyperlinks.

Tool calls — ⏺ Bash(cmd) / Update(file) / Write(file), dot green / red / gray by state, results under ⎿ . Edits show Added N lines, removed N lines with the red/green row diff and word highlight; failures show Error: Exit code N plus stderr in red. Consecutive reads, searches and listings collapse into Read 2 files, listed 1 directory (ctrl+o to expand).

Working line — ✻ Brewing… (12s · ↓ 1.2k tokens) above the input instead of inside its border, and ✻ Brewed for 34s · done 7:09 PM when the turn ends.

Status line — one line, same segments, glyphs and colors as a popular Claude Code statusLine script:

Segment Meaning Color
➜ my-app current directory sage / sky blue
██░░░ 41% 410k/1000k context used green → amber at 50% → coral at 80%
⚡ 4.1ktok 69/s output tokens in the last 60s shown only while generating
$3.20 session cost gray → amber at $1 → coral at $5
+215 -3 lines written / edited this session green / coral
Opus 5.5 (high) model, thinking level when high / xhigh / max lavender / amber
⏱ 12s time since last reply amber at 4 min, ✗ coral at 5 min (prompt cache expired)
55% until auto-compact right-aligned, from pi's compaction.reserveTokens gray

Theme claude-code — Claude Code's dark palette. Body text uses the terminal's default foreground and inline code / links use the same 256-color indexes as Claude Code (153 / 12), so both apps render identically in the same terminal. Code blocks use the 16-color ANSI palette and diffs use Monokai, like Claude Code dark.

Pairs well with

This package draws tool calls itself. If you also run pi-cc-extensions, turn off the parts that overlap in ~/.pi/agent/pi-cc-extensions.json:

{ "mode": "off", "enableCustomFooter": false, "enableWorkingMessage": false, "enableAgentSummary": false }

Terminals pi doesn't recognise (JetBrains, for one) get links as text (url). Turn on hyperlinks in ~/.pi/agent/settings.json:

{ "terminal": { "hyperlinks": true } }

Notes

  • The input box, messages, markdown and spinner tweaks patch pi's built-in components at load time. A pi release that renames those methods would make them no-ops, not crash.
  • Thinking stays visible (click or Shift+Tab to fold); Claude Code hides it. Set "hideThinkingBlock": true in settings to match.
  • Claude Code's second status row (⏵⏵ bypass permissions on …) has no pi equivalent and is not drawn.

License

MIT