pi-aura
A polished TUI for the Pi coding agent: welcome header, responsive footer, framed editor, telemetry, copy buttons, and the bundled tidy transcript.
Package details
Install pi-aura from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-aura- Package
pi-aura- Version
1.0.0- Published
- Nov 4, 2026
- Downloads
- 335/mo · 335/wk
- Author
- sixteen-001
- License
- MIT
- Types
- extension
- Size
- 715.2 KB
- Dependencies
- 1 dependency · 3 peers
Pi manifest JSON
{
"image": "https://raw.githubusercontent.com/Sixteen-16-Bai/pi-Aura/main/assets/preview_dashboard_1.png",
"extensions": [
"./extensions/aura/index.ts",
"./extensions/aura/tidy/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-aura
English | 简体中文
Built with AI. Every line of code, test, and document here was written by an AI coding agent (Pi driving DeepSeek models) under human direction, review, and release management. The human owns requirements, acceptance, and publishing; the agent writes and verifies.
A polished terminal interface for the Pi coding agent — welcome header, dense footer, framed editor, telemetry, copy buttons, and a tidy transcript.

Highlights
| Welcome header | Pi's brand mark at 2×, a clock-aware greeting, the model, and an info grid — nine rows, no filler |
| Footer | Git, runtime, context, tokens, cost, live TPS, extension statuses — plus the real DeepSeek balance |
| Framed editor | Block, bar, and underline cursors; other extensions' editors stay compatible |
| Turn telemetry | TPS, TTFT, duration, stalls, tokens, list-price rate per 1M |
| Copy buttons | Clickable [Copy] on code blocks and your messages in fullscreen |
| Tidy transcript | Bundled pi-tidy 0.7.3: grouped tool folds, rounded frames, side-by-side diffs |
/aura settings |
Five tabs, English and 简体中文, live apply |
Install
pi install npm:pi-aura
One session: pi -e npm:pi-aura · Local checkout: pi install /path/to/pi-aura
Requires Pi 1.2.0+ and Node.js 22.19.0+. A Nerd Font unlocks the full icon set; unicode and ascii modes need none.
The welcome header
╭─ Pi v1.4.0 ────────────────────────────────────────────────╮
│
│ ██████ Good morning, Sixteen · ⌨ Deepseek-flash
│ ██ ██
│ ████ ██ model Deepseek-flash tools 16
│ ██ ██ cwd Z:\ skills pdf
│ branch main session local-ui
│
╰────────────────────────────────────────────────────────────╯
Greeting follows the hour; the name comes from PI_HEADER_NAME → git config user.name → OS user. The grid splits available width into two columns and falls back to one on narrow terminals. Set header: false to hand the slot back to Pi.
The footer
- Git — branch, ahead/behind, staged, modified, untracked, stashed, detached HEAD
- Runtime — 50+ detected runtimes with icons
- Context & tokens — usage, totals, cache-hit rate of the latest response
- Cost — USD or CNY, two decimals, display-only conversion
- Live TPS — estimated throughput while streaming, dimmed during tool calls
On narrow terminals it drops runtime and context first, then Git, session name, hostname, and timer; the cwd stays longest.
DeepSeek balance
With provider deepseek, the footer shows the account balance beside the cost: the CNY total_balance from GET https://api.deepseek.com/user/balance. The key is read from auth.json and sent only to that endpoint. Fetched at startup, cached ten minutes, refreshed in the background with a ten-second timeout — … while loading, -- on failure. It lives in the footerSegments.cost group.
Turn telemetry
> TPS 42.5 tok/s | ~ TTFT 1.2s | + 29.7s | ↑ 567 | ↓ 1.2k | ! stall 1x / 4.3s | ¥ 3.60/M
M = one million tokens; the last value is the list price per 1M tokens, not the session total. TPS is provider-reported output tokens over total generation time. Every field toggles in Telemetry.
Copy buttons
Fullscreen mode frames every fenced code block with its language and a [Copy] label, and adds one to each of your messages:
╭─ sh ─────────────── [Copy] ╮
│ pi install npm:pi-aura │
╰────────────────────────────╯
Copies without fences, preserving indentation and tabs. Streaming replies have no label until they finish. Toggle via General → Copy buttons (copyButtons).
Tool folding (pi-tidy)
Bundled pi-tidy 0.7.3 (MIT, see THIRD_PARTY_NOTICES.md) takes over the transcript: grouped tool folds with failure counts, rounded per-tool frames, side-by-side diffs, live background jobs, right-aligned User frames, and a framed final reply with the model and time. Boxes leave the last column to Pi's scrollbar. Settings live under tidy in settings.json; edit them in /aura → Tidy.
Settings
Run /aura. Tab/←/→ switch tabs, ↑/↓ move, Enter/Space toggle, Esc/q close.
| Tab | Contents |
|---|---|
| General | Enable, header, language, currency, inline footer, copy buttons, copy-on-select |
| Appearance | Icon mode |
| Footer | Individual footer segments |
| Telemetry | Telemetry and its fields |
| Tidy | pi-tidy options |
Stored in aura.json in Pi's agent directory (~/.pi/agent, PI_CODING_AGENT_DIR overrides). Tidy and copy-on-select write to settings.json instead.
Configuration
{
"header": true,
"settingsLanguage": "zh",
"currency": "cny",
"currencyRate": 7.2,
"cursorStyle": "underline",
"icons": { "mode": "nerd" }
}
| Option | Values | Default |
|---|---|---|
enabled |
true, false |
true |
header |
true, false |
true |
inlineFooter |
true, false |
false |
copyButtons |
true, false |
false |
settingsLanguage |
en, zh |
zh |
currency |
usd, cny |
cny |
currencyRate |
number | 7.2 |
cursorStyle |
block, bar, underline |
underline |
icons.mode |
auto, nerd, unicode, ascii |
nerd |
footerSegments.* |
booleans | various |
telemetry.* |
booleans | true |
tidy (settings.json) |
pi-tidy options | — |
fullscreenCopyOnSelect (settings.json) |
boolean | — |
currencyRate is CNY per USD, display-only. bar and underline cursors need terminal shape support. The full footerSegments and telemetry blocks are in the aura.json written by /aura.
Compatibility
Aura frames editors that keep Pi's native layout and cursor, mouse, and padding APIs, including CustomEditor extensions. It decorates the same instance, so ghost text, key handling, completion, and submit callbacks are preserved; editors registered through ctx.ui.setEditorComponent() are framed whether they arrive before or after pi-aura. Editors without native borders, or whose probe throws, stay unchanged.
Development
npm install
npm run typecheck
npm test
pi -e .
133 tests on node --test. CI covers Pi 1.2.0 and latest, Node 22.19.0 and 24, on Linux, Windows, and macOS. Fonts, mouse, and cursor support need a real terminal — check them with pi -e ..
Acknowledgements
- pi-haiku — footer structure, working timer
- pi-claude-code-tui — logo artwork, rounded editor border
- pi-zentui — footer segments, runtime detection, settings UI
- pi-tps — turn timing, stall detection, TPS
- pi-tidy — vendored transcript renderer (MIT)
Logo artwork derives from Pi's official install script. Thanks to the LINUX DO community.
How this was built
pi-aura is an AI-driven development experiment. Features were specified in conversation, implemented by the agent, and checked with tsc, the test suite, and manual terminal review before each commit. The history — including bug hunts, dead-code cleanups, and reverts — is the real working log, not a cleaned-up narrative.