@bismawy/pi-arnative

Refined aesthetics. Cohesive tools. Built for Pi. Warm themes, rounded tool boxes, tabbed header, compact footer and a /usage dashboard.

Packages

Package details

extensiontheme

Install @bismawy/pi-arnative from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@bismawy/pi-arnative
Package
@bismawy/pi-arnative
Version
0.9.1
Published
Nov 2, 2026
Downloads
4,434/mo · 1,146/wk
Author
bismawy
License
MIT
Types
extension, theme
Size
786.8 KB
Dependencies
0 dependencies · 3 peers
Pi manifest JSON
{
  "image": "https://raw.githubusercontent.com/bismawy/pi-arnative/main/assets/banner.webp",
  "themes": [
    "./themes/*.json"
  ],
  "extensions": [
    "./extensions/*.ts"
  ]
}

Security note

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

README

Arnative

Refined aesthetics. Cohesive tools. Built for Pi.

Custom badge badge license

Overview

pi-arnative replaces pi’s default terminal chrome with a unified visual interface.

  • Warm Themes: Contrast-checked OKLCH color palettes generated without drift (arnative plus 10 variants).
  • Tabbed Header: Compact box menu showing Directory, Model, Context, Skills, Extensions, and Shortcuts.
  • Rounded Tool Boxes: Status, spinner, runtime duration, and clickable [show] / [hide] output toggles.
  • Task List: todo tool, /todos view, and a boxed widget above the editor that auto-hides 30s after all tasks finish.
  • Enhanced Footer: 3-row status grid (Arnative (Full)) or single collapsible row (Arnative (Minimal)) tracking branch, diff, active duration, and token speed.
  • Working Spinners: 18 animated presets with live picker preview and optional [g] gradient sweep.
  • Transcript Clock: Per-message timestamps with clean bubble backgrounds.
  • Usage Dashboard: Real-time token counts and cost tracking across local sessions via /usage.
  • Custom Providers: Interactive /providers wizard to probe endpoints, pick models, set thinking levels, edit the base URL, provider id or API key, and save OpenAI-, Anthropic-, Gemini-, or Ollama-compatible channels to models.json and auth.json.
  • Model Heal: Background sync (/model-heal) that fills missing compat flags, /models token limits, and accepted reasoning effort levels in models.json.
  • Auto-compact: Automatic context compaction after a turn settles using smart window tiers or a fixed token budget.

Saved to ~/.pi/agent/arnative/config.json via /arnative:

  • Headers & Footers: Arnative (Full) (default), Arnative (Minimal) (footer only; click head text or press ctrl+alt+m to toggle), or Pi (system).
  • Animations: 18 presets (Arnative default, Pi (system), and alphabetical variants). Press [g] in the picker to toggle the Google gradient sweep.
  • Auto-compact: Off by default. Smart tiers trigger near ~200k tokens (≥768k→20%, ≥384k→40%, ≥192k→80%, <192k→pi core), or pick a fixed budget (100k to 400k).
  • Model heal: Full (default: offline compat flags, GET /models limits with 6h TTL, reasoning effort probe with 24h TTL), Flags (offline only), or Off. Hand-edited fields are never overwritten.
  • Task list (todo): Stored per session in ~/.pi/agent/arnative/todos/<session-id>.json (uninstall @juicesharp/rpiv-todo first to avoid tool name conflict). Click [click to expand] / [click to collapse] or press ctrl+alt+o (alt+o) to toggle; click ↑/↓ counters or press ctrl+alt+j/k (alt+j/k) to scroll. Auto-hides 30s after completion (set PI_ARNATIVE_TODO_HIDE_MS to override, 0 for immediate hide; expanding pauses the timer).

Install

pi install npm:@bismawy/pi-arnative

Requires a Nerd Font. On a fresh install, arnative is applied automatically if no theme is set; switch anytime via /arnative themes or /settings → Theme.

Local development:

npm run dev                  # run pi against this checkout, nothing installed
npm run overlay              # copy extensions/ lib/ themes/ into the installed npm package

To see a change before publishing it: npm run overlay, then press /reload in pi — pi re-evaluates extension TypeScript in the same process, so the reload loads the copied code with no reinstall and no restart. The package stays an npm install; nothing points pi at this directory. A module deleted here is pruned from the installed copy (a stale entry point would keep loading), and pi update --extensions restores the published code once a higher version exists. npm run overlay -- --dry-run lists what would move; PI_CODING_AGENT_DIR targets another agent dir.

Shortcuts

Key (Linux / Win) Action
ctrl+alt+t · alt+t Cycle header tabs
ctrl+alt+r · alt+r Quick reload (/reload)
ctrl+alt+n · alt+n New session (/new)
ctrl+alt+m · alt+m Toggle Minimal footer
ctrl+alt+o · alt+o Expand or collapse task list
ctrl+alt+j · alt+j Scroll task list down
ctrl+alt+k · alt+k Scroll task list up
Click [show] / [hide] · ctrl+o Toggle tool output box
← / Esc Step back to parent menu / close active screen
/arnative Settings menu (Themes, Headers, Footers, Animations, Auto-compact, Model heal, Providers, Usage)
/usage Token & cost dashboard
/todos Full task list recap
/providers Custom provider manager
/model-heal Run models.json heal passes now

Bind app.session.new in ~/.pi/agent/keybindings.json:

{
  "app.session.new": ["ctrl+alt+n", "alt+n"]
}
  • Windows / WSL: Windows Terminal maps Ctrl+Alt to AltGr; use alt+… or disable altGrAliasing.
  • macOS: Use ctrl+option+….
  • tmux / Herdr: Set PI_TUI_ESC_TIMEOUT=100 if Esc has a delay.

Architecture

File Role
extensions/arnative.ts /arnative settings menu and live preview pickers
extensions/section-headers.ts Tabbed header and resource box
extensions/footer.ts 3-row status grid, Minimal footer, and boxed editor
extensions/tools.ts Rounded tool boxes, spinners, duration, and [show] / [hide] toggles
extensions/todos.ts todo tool, boxed widget above editor, and /todos screen
extensions/animations.ts Spinner preset picker and live preview
extensions/autocompact.ts Smart and fixed-budget context compaction
extensions/model-heal.ts Automatic models.json heal triggers and /model-heal
extensions/timestamps.ts Message timestamps and bubble backgrounds
extensions/ui-render-tweaks.ts Contrast tweaks, selection styling, and UI polish
extensions/usage.ts Token and cost dashboard (/usage)
lib/todos.ts Task state, window layout, box rows, and session store
lib/spinner.ts Spinner preset catalog, frames, and gradient painters
lib/provider.ts Custom provider probe, model picker, and config writer
lib/model-heal.ts Compat flags, /models limit sync, and reasoning effort probe
lib/list-picker.ts Shared live-preview and multi-select picker component

Themes (themes/gen-themes.mjs + lib/color.ts): arnative · sun · zinc · violet · emerald · matrix · cyberpunk · synthwave · gruvbox · nord · dracula

npm test                              # Run self-checks and unit tests
npm run themes                        # Regenerate theme JSON files
npm run preview                       # Live preview in Pi and stamp .git/arnative-preview
git config core.hooksPath .githooks   # Enable pre-push preview verification hook

License

Distributed under the MIT license.

Author

Bisma