@matheusbbarni/pi-run-timer

A Pi extension that shows how long the current run has been going.

Packages

Package details

extension

Install @matheusbbarni/pi-run-timer from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@matheusbbarni/pi-run-timer
Package
@matheusbbarni/pi-run-timer
Version
0.1.3
Published
Aug 26, 2026
Downloads
601/mo · 25/wk
Author
matheusbbarni
License
MIT
Types
extension
Size
14.8 KB
Dependencies
0 dependencies · 1 peer
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

@matheusbbarni/pi-run-timer

npm Pi package

Live elapsed time for the current Pi run.

A compact timer sits above the editor:

Running • 3m9s
Worked • 3m9s

The clock starts when you submit a prompt, keeps ticking across retries and compaction, and holds the last duration when the run finishes. The next prompt starts it over.

Features

  • Shows Running • 3m9s while a run is in progress
  • Switches off the live widget when the run settles and leaves Worked • 3m9s in the transcript
  • Keeps running while async pi-subagents are still working, then records the full wall time
  • Also writes the same label to Pi's working message and footer status
  • Stays visible with themes such as amp-themes that hide the built-in working row
  • Writes a Worked • 3m9s line into the transcript when a run settles
  • Also records the time if you quit mid-run
  • No-ops the live widget in print/JSON mode; still prints the duration on stderr

Install

pi install npm:@matheusbbarni/pi-run-timer

From this repo:

pi -e ./pi-run-timer

Or as a local package:

pi install ./pi-run-timer

[!TIP] If Pi is already open, run /reload.

How it works

This is a widget, not Pi's built-in working row. Themes that replace the streaming chrome still show the timer because it renders above the editor.

Vanilla Pi also gets the same label on the working message and in the footer, so the duration is visible even without the widget.

When a run finishes, a muted Worked • 3m9s line is appended to the session. That entry is not sent to the model, so you can scroll back and compare run times.

Development

npm install
npm test
npm run typecheck