Back to browse
Pu.sh – a full coding-agent harness in 400 lines of shell

Pu.sh – a full coding-agent harness in 400 lines of shell

by nahimn·Apr 30, 2026·92 points·28 comments

AI Analysis

●●●BangerWizardryBig BrainDark Horse

Parsing JSON and managing agent state in pure awk is absolute terminal wizardry.

Strengths
  • Implements a full reasoning loop with tool use using only POSIX shell primitives.
  • Zero dependencies beyond curl and awk means it runs on any remote server instantly.
  • Includes 90 no-API tests to verify the agent's logic without burning credits.
Weaknesses
  • Author admits the awk code is unreadable even to them, creating a maintenance nightmare.
  • Lacks streaming output and image support, limiting it to text-only coding tasks.
Target Audience

DevOps engineers and terminal power users

Similar To

Aider · OpenInterpreter · Swe-agent

Post Description

I originally was just messing with pi-autoresearch. Gave it a sample task to build the most portable coding agent.

First cut was 6 KB of shell. Great for one-shots, unusable interactively. I was shocked it actually worked.

Started building up -- adding features — but with a self-imposed rule: no new dependencies, and sub 500 LOC. This thing had to be truly portable. Just sh, curl, awk. System primitives only.

Which means I did some genuinely disgusting things in awk, including JSON parsing and the OpenAI Responses tool loop with reasoning items carried across turns.

It's now ~400 lines. In the box: Anthropic + OpenAI, 7 tools (bash, read, write, edit, grep, find, ls), REPL, auto-compaction, checkpoint/resume, pipe mode, 90 no-API tests. Not in the box: TUI, streaming, images, OAuth, Windows, dignity.

Two honest things:

1. I stole/modified the system prompt and the architecture. Pi/Claude/Codex wrote the awk. I cannot read most of this code. This wasn't possible for me a year ago.

2. Heavily inspired by Pi (pi.dev) — same 7-tool surface, same exact-text edit model. Credit where it's due. Pi is awesome -- you should probably use them.

The agent loop itself is tiny. Almost everything else in a "real" agent CLI is DX and hardening. You can probably build your own harness exactly how you like it. Mario Zechner's AI Engineer talk on taking back control of your tools nudged me here.

The name is because it's a .sh file. The other thing it sounds like is, regrettably, also accurate.

Similar Projects