cd /news/developer-tools/pi-more-than-a-coding-harness · home topics developer-tools article
[ARTICLE · art-118176] src=mkaz.blog ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

Pi, more than a coding harness

Developer mkaz built Halftrack, a personal trainer app powered by the Pi coding harness, which uses natural language commands to log and query running workouts. The app, available on GitHub, demonstrates Pi's extensibility through custom launchers, system prompts, skills, and TypeScript extensions, all generated by Pi itself.

read3 min views3 publishedSep 1, 2026

I’m a big fan of the Pi coding harness. Pi is a coding tool like Claude Code, but minimalist and open, so can be completely customized to your liking. I primarily use gpt-5.6 through an OpenAI subscription with Pi, thank you OpenAI for being open to other tools. You can also connect directly to APIs. I’ve used Pi with Fireworks to connect to open weight models like Kimi, Deepsek, or Qwen.

Pi supports skills, prompts and most powerfully extensions. You write extensions in Typescript, or better put, Pi is built to understand Pi, so you ask it to build you the extensions you want.

I’ve written a few extensions:

pi-mkaz-sidebar- a sidebar with infopi-modoro- a pomodoro timerpi-mkaz-alert- play a sound when done

So, when I was about to build a simple command-line utility to help me track my runs (I’m starting to train for a half-marathon, it’s close to 10 years since I ran my last) I turned to Pi. So, instead of creating a script that accepts commands and parameters, can I make Pi be the app?

It was relatively straight-forward to do, and it works quite well. Now instead of building commands for each request I can simply use text:

Log run on the treadmill for 36:00 and 3.0 miles.Show my last five workouts. How many miles have I run in the last eight weeks?What was my average pace this month? Show my workout calendar for August 2026.

The source is available at: https://github.com/mkaz/halftrack

Though I recommend just using for inspiration and build out your tool however you want it to work.

How its built #

One of my favorite parts about Pi is it is self-aware, not in a dumb AI consciousness way, but it understands its own documentation, how to build prompts, skills, and extensions. So as everyone will tell you, just ask Pi for what you want it to do.

Launcher

I created a custom launcher that disables all the built-in parts and specifies the system prompt, extension, and skills for the personal trainer app.

exec pi \
  --model "$MODEL" \
  --system-prompt "$(<"$ROOT/trainer/SYSTEM.md")" \
  --no-context-files \
  --no-builtin-tools \
  --no-extensions \
  --extension "$ROOT/trainer/extensions/halftrack.ts" \
  --no-skills \
  --skill "$ROOT/trainer/skills/workout-tracking" \
  --no-prompt-templates \
  --no-themes \
  --session-dir "$SESSION_DIR" \
  --name "Halftrack" \
  "$@"

Using $@

to pass in arguments even lets me one shot a request like so:

halftrack.sh -p "Log todays run of 3.5 miles in 37:48"

System Prompt

Halftrack loads its own system prompt which I will likely expand as I get further. I’ll include additional details on training plans and guidance. Right now the simple prompt is working well for me.

Skill

I’ve created a single skill so far for understanding and tracking runs. Right now it intertwines with the extension’s storage part. For better software design, I should probably separate the two into distinct pieces, but it’s all working now, and I’m not really looking to reuse parts.

One future skill I’ll probably create is for termgraph, a graphing tool for terminals I built. Termgraph was original built for graphing my runs, I would just record my runs in csv files and then pipe those into termgraph. So I’ll want some graphs and charts at some point, so I’ll integrate in.

Extension

The extension was all built by Pi. The extension creates the sidebar, suppresses the screen, modifies the status line, and includes the commands for storing the data. It is a bit of a catch-all extension.

It was initially based off my coding sidebar, pi-mkaz-sidebar, but now has expanded for the rest of the features of the personal trainer app.

Again, just tell Pi what you want in your extension and it’ll build it for you.

Summary #

A pretty simple tool and probably can be done with other coding harnesses to some degree. What I really like about Pi is I can disable all the pieces I don’t want, customize the interface, and tweak away.

It makes it really easy to build mini-LLM apps that scratch a personal itch.

── more in #developer-tools 4 stories · sorted by recency
── more on @pi 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/pi-more-than-a-codin…] indexed:0 read:3min 2026-09-01 ·