pi-cc-tui
Make pi's TUI look like Claude Code: tool calls, diffs, messages, spinner, input box, status line and dark theme
Package details
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": truein settings to match. - Claude Code's second status row (
⏵⏵ bypass permissions on …) has no pi equivalent and is not drawn.
License
MIT