@smoose/pi-footer

A compact footer/status bar extension for pi coding agent

Packages

Package details

extension

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

$ pi install npm:@smoose/pi-footer
Package
@smoose/pi-footer
Version
0.1.1
Published
May 29, 2026
Downloads
not available
Author
smoose
License
MIT
Types
extension
Size
86 KB
Dependencies
0 dependencies · 3 peers
Pi manifest JSON
{
  "extensions": [
    "./index.ts"
  ]
}

Security note

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

README

pi-footer

A compact footer/status bar extension for pi coding agent.

This plugin is a simplified take on nicobailon/pi-powerline-footer, with a smaller configuration model plus a few extra features such as custom segment ordering, custom extension-status items, rainbow coloring, and a prompted input editor.

Features

  • Powerline-style footer segments
  • Presets for different levels of detail
  • Fully custom segment order via footer.segments
  • Custom items sourced from extension statuses
  • rainbow color support for custom items
  • Responsive overflow: segments that do not fit on the first footer line move to the next line
  • Input editor polish:
    • left/right outer margin
    • single > prompt marker
    • multiline input alignment

Installation

pi install npm:@smoose/pi-footer

Basic configuration

Configure the plugin under the footer key in ~/.pi/agent/settings.json or project-local .pi/settings.json.

Minimal example:

{
  "footer": "default"
}

Object form:

{
  "footer": {
    "preset": "default"
  }
}

Presets

Available presets:

default
minimal
compact
full
nerd
ascii
custom

You can switch presets inside pi with:

/footer default
/footer minimal
/footer compact
/footer full
/footer nerd
/footer ascii
/footer custom

Running /footer with no arguments toggles the footer on/off for the current session.

Segment order

Use footer.segments to control the exact segment order.

{
  "footer": {
    "preset": "default",
    "segments": [
      "model",
      "thinking",
      "path",
      "git",
      "context_pct",
      "cache_read",
      "cost"
    ]
  }
}

The footer renders segments in the array order. If the line is too narrow, later visible segments overflow onto a second footer line.

If segments is omitted, the selected preset's default order is used and custom items are appended after preset segments.

Built-in segments

Supported built-in segment ids:

Segment Description
model Current model name
thinking Current thinking level, e.g. think:med
shell_mode Shell mode status, when available
path Current working directory
git Git branch and dirty state
subagents Reserved segment; currently hidden
token_in Input tokens
token_out Output tokens
token_total Input + output + cache tokens
cost Session cost or (sub) for subscription usage
context_pct Context usage percentage and window size
context_total Context window size
time_spent Session elapsed time
time Current time
session Session id prefix
hostname Hostname
cache_read Cache read tokens
cache_write Cache write tokens
extension_statuses Remaining extension statuses not lifted into custom items

Custom items

Custom items display values from pi extension statuses.

If another extension calls:

ctx.ui.setStatus("soul-mood", "👻 Susan·厌恶");

then you can show it in the footer with:

{
  "footer": {
    "preset": "default",
    "segments": [
      "custom:soul",
      "model",
      "thinking",
      "path",
      "git",
      "context_pct",
      "cache_read",
      "cost"
    ],
    "customItems": [
      {
        "id": "soul",
        "statusKey": "soul-mood",
        "color": "rainbow"
      }
    ]
  }
}

Custom segment ids are referenced as:

custom:<id>

For example:

custom:soul

Custom item fields

Field Description
id Custom item id; used by custom:<id>
statusKey Key from ctx.ui.setStatus(key, value); defaults to id
color Optional color name, hex color, or rainbow
prefix Optional prefix shown before the status value
hideWhenMissing Hide the item when no status exists; default true
excludeFromExtensionStatuses Exclude this status from extension_statuses; default true

Colors

Custom item colors can be:

Hex colors

{
  "color": "#00afaf"
}

pi theme color names

Examples:

accent
success
warning
error
muted
dim
text
thinkingHigh
thinkingMedium
borderMuted

Rainbow

{
  "color": "rainbow"
}

rainbow applies the plugin's built-in per-character rainbow coloring.

Example configuration

{
  "footer": {
    "preset": "default",
    "segments": [
      "custom:soul",
      "model",
      "thinking",
      "path",
      "git",
      "context_pct",
      "cache_read",
      "cost",
      "extension_statuses"
    ],
    "customItems": [
      {
        "id": "soul",
        "statusKey": "soul-mood",
        "color": "rainbow"
      }
    ]
  }
}