Claude Code running natively on Mac OS X Leopard (2007) – no proxy
I built a custom JavaScript runtime (QuickJS + mbedTLS) that lets Anthropic's Claude Code CLI run natively on a 2003 Power Mac G5 Dual running Mac OS X
Leopard 10.5.
The hard part: Leopard ships with OpenSSL 0.9.7, which tops out at TLS 1.0. The Anthropic API requires TLS 1.2. For 18 years the answer has been
"upgrade" or "use a proxy." Instead I compiled mbedTLS directly into the JS runtime, bypassing the OS crypto stack entirely. The G5 negotiates TLS 1.2
handshakes itself — no relay, no intermediary machine.
It's not just a chat client. The full tool execution loop works: Claude reads files, writes code, runs shell commands, greps through source trees — all
executing on big-endian PowerPC hardware. The agentic coding workflow runs on a machine from 2003 talking to a frontier AI model in 2026.
The runtime (node_ppc) is QuickJS for ES2020 JavaScript + mbedTLS 2.28 for TLS 1.2, compiled with GCC 10 on the G5 itself. Total binary is about 1MB. The
CLI is a single 972-line JS file.
Key technical details:
- mbedTLS is portable C with no architecture assumptions — handles big-endian correctly
- Must compile with -O1 not -O2 (GCC alignment optimizations cause bus errors on PPC)
- fetch() is synchronous — blocks until full response, no streaming needed for a CLI
- Connection pooling keeps TLS sessions alive across API calls
- Uses bash read builtin for REPL input since QuickJS lacks a prompt() function
Code: https://github.com/Scottcjn/node-ppc
Architecture doc: https://github.com/Scottcjn/node-ppc/blob/main/CLAUDE_G5_ARCHITECTURE.md