Native kopia client
for PowerPC Macs

Backups with kopia on Mac OS X 10.4 and 10.5 — a thin client that speaks the kopia repository server protocol in about 1500 lines of C99. No Go, no modern TLS stack, no MacPorts.

Tested against kopia 0.23.1 · Mac mini G4 · 10.5.8

§ 01 / why this exists

Kopia can’t run here. The protocol can.

Kopia is written in Go — and Go has no darwin/ppc target. Leopard’s system OpenSSL is 0.9.7, which speaks TLS 1.0, and that conversation is over in 2026. So the usual “just install it” path ends at a dead end on a G4 or G5.

This client doesn’t need either. It implements the repository server protocol directly — one gRPC session over HTTP/2, HPACK by hand, mbedTLS statically linked, the server certificate pinned by SHA-256. The server does the crypto; the client ships chunks.

§ 02 / how it works

The server carries the weight

Files are chunked locally with buzhash32, matching kopia’s DYNAMIC-4M-BUZHASH splitter (2 MB min, 4 MB avg, 8 MB max). Chunks travel as plaintext; the server encrypts them with AES-256-GCM, computes content IDs and packs the index.

Directory objects, multi-chunk indirect objects and snapshot manifests are written in kopia’s exact JSON formats — restores with the stock kopia restore are byte-identical. The full wire specification lives in docs/kopia-protocol.md.

Real run, one pass
199,876
files · 49,512 dirs · 1.2 GB — /Users/philipp
Wall time on the G4
2 h 44 min
full re-read + re-send, 1 core, 1 GB RAM
Restore fidelity
byte-exact
incl. empty files, symlinks, UTF-8 names

§ 03 / quick start

Register once, then cron it

On the kopia server — register the client as a server user and grant it access (ACLs apply to content, snapshots and policies):

# inside the kopia server container
kopia server user add root@my-g4 --user-password SECRET
kopia server acl add --user root@my-g4 --target type=content --access FULL
kopia server acl add --user root@my-g4 --target type=snapshot --access FULL
kopia server acl add --user root@my-g4 --target type=policy --access FULL

On the PowerPC Mac — push a path; it uploads and creates a snapshot. Wrap it in a root-owned script and schedule it:

# /usr/local/bin/kopia-cron (mode 700)
/usr/local/bin/kopia-darwin-ppc kopia-push \
  --url https://kopia.example.com:51515 \
  --user root --hostname my-g4 \
  --password SECRET \
  --fingerprint XX:XX:…:XX \
  /Users/youruser

# root crontab
17 */4 * * * /usr/local/bin/kopia-cron

Verify from any machine with the stock CLI: kopia snapshot list --all · kopia restore <snapshot-id> /dest — no special tooling on the restore side. Full setup notes in the README.

§ 04 / honest limits

What it does not do (yet)