The Power Mac G5 doesn't know it's retired.
Twenty years ago, Apple shipped a dual-processor workstation in a polished aluminum case and called it the future of pro computing. Four years later they abandoned the architecture for Intel. Two years after that, Adobe stopped shipping PowerPC builds. Four years after that, macOS stopped booting on it. The machine still works. The machine always worked. The industry just decided it was done.
I spent the last month teaching a 2005 dual-2GHz Power Mac G5, running Mac OS X 10.5 Leopard, to run Claude Code.
Not a thin client wrapping a modern machine. Not a proxy. Claude Code running natively on the G5, talking directly to api.anthropic.com over TLS 1.2, reading files, writing code, executing shell commands, chaining tool calls up to 25 iterations deep — the real agentic loop, on hardware that shipped during the Bush administration.
The repo is at github.com/Scottcjn/claude-code-ppc.
Why This Is Supposed to Be Impossible
Modern Claude Code is Node.js. Node.js hasn't shipped a PowerPC build in years — not for big-endian, not for any of the PPC variants, and certainly not for Mac OS X 10.5. V8 dropped PowerPC support long before that. OpenSSL's modern versions assume platform primitives the old Mac kernel doesn't provide. fetch() the way modern tooling uses it depends on TLS 1.2 libraries that require a modern OS.
Every layer in the stack assumes you gave up on this hardware.
What I Built
node-ppc — a custom JavaScript runtime for PowerPC Mac OS X. Not a Node fork. QuickJS at the core (small, portable, pre-V8-era C, compiles on anything), stitched together with mbedTLS for a TLS 1.2 implementation the G5 can actually compile. File I/O, sockets, HTTP, enough of the Node API surface to run an agentic CLI.
claude-code-ppc — the CLI on top. Full tool execution loop:
- Read — with line numbers
- Write — create or overwrite files
- Edit — surgical string replacement
- Bash — shell out to the OS
- Glob / Grep — find and search
Plus slash commands — /clear, /cost, /model haiku, /compact, /export, /debug — and shortcuts like @filepath for file inclusion and !command for shell-through. ANSI-colored markdown output. Direct HTTPS to Anthropic's API, no middleware. An OAuth credential file at ~/.claude/.credentials.json so you're not pasting keys.
./node_ppc claude_g5.js
That's it. Agentic coding on a 2005 workstation.
Why I Did This
The obvious answer is "because it's cool." The real answer is that the G5 didn't break. It got left behind.
There is a version of the tech industry where a 20-year-old machine stops working because the silicon wore out — capacitors fail, hard drives die, dust wins. That's the kindness of physics. The tech industry we actually live in retires hardware while it still works, because a vendor's driver roadmap said so, because a package manager stopped building for it, because the quarterly report said quarterly things.
I have a G4 miner series I wrote about last month — PowerBook G4s earning crypto on RustChain's proof-of-antiquity consensus. That post got more engagement than anything else on this blog, and the comments were all the same note in different voices: thank you for not pretending this hardware is dead.
The G5 running Claude Code is the next movement in that same piece. Agentic coding is what most developers now consider table stakes. Saying a 2005 machine can't do it is saying the 2005 machine isn't allowed to be a modern workstation. I disagreed with the premise and ported around it.
What It Actually Feels Like to Use
Slower than an M3, obviously. Tool calls have more perceptible latency because QuickJS is not V8 and because the PowerPC 970 is not an Apple Silicon core. The TLS handshake against Anthropic's endpoint is noticeable but not painful — mbedTLS is more than capable on this silicon.
But the shape of the work is identical. Claude reads files, writes patches, runs tests, asks clarifying questions, threads tool calls together. The UX gap is the speed gap, which is the speed gap of the machine, which is the speed gap of twenty years. That gap is much smaller than the software industry has been telling us it is.
What's Next
I'm working on a Bun port for ppc64le Linux on IBM POWER8 — earlier than I expected to, actually, because the WebKit-JSC fork did more of the architecture heavy lift than I thought. Separately, Meshtastic just accepted a big-endian radio-header fix for the Meshtastic firmware that unblocks PowerPC meshtastic nodes. There's a quiet, small category forming around "modern tooling that works on old silicon because someone bothered to ship it," and I want that category to keep growing.
If you have a G4 or G5 sitting in a closet, it's probably fine. Boot it. It still works. You can install Leopard MacPorts, pull claude-code-ppc, and have an agentic coding environment running on it by tonight. I'd love to see screenshots.
Repo: github.com/Scottcjn/claude-code-ppc
Runtime: github.com/Scottcjn/node-ppc
The machine always worked. We just had to remember.
Top comments (0)