AI UNDERDOGS
Back
0:00 / 1:00
#075

saft

github.com/Mechse/strudel
CLI toolApple AIPrivacy-firstGit
195 views💬 0 comments🔗 0 visits

Apple's on-device LLM writes your commits — zero data leaves the machine

WHAT IT SOLVES

Plenty of AI commit-message tools exist, but they all ship your diff to the cloud. For private repos? Nah.

WHY IT'S INTERESTING

Product taste

Small diffs go straight in, big ones get compressed first

The author added dedicated handling for medium and large diffs — compressing them before feeding to the model so the context window doesn't blow up. That's not just wrapping an API and calling it done

Real craft

Straight to Apple Foundation Models — zero external deps

No OpenAI key, no network calls — macOS's built-in model is the entire backend. The CLI itself is lean enough to rely on Go's stdlib only

The project was originally called Strudel, then renamed to Saft (German for juice)

Mechse

TECH GUESS

Go, calling into Apple's Foundation Models framework on macOS

DEEP DIVE

Your Commit Messages Don't Need to Leave Your Machine

Git commit messages are the most overlooked text in a codebase, yet they expose project structure, business logic, and sometimes security policy. Tools like aicommits, cz-git, and Copilot CLI all ship your git diff to cloud APIs — OpenAI, Anthropic, or others. For internal enterprise repos, private side projects, or developers who simply don't want to feed third parties their code, this is a genuine concern.

Saft (German for "juice") offers a remarkably simple answer: it calls Apple's on-device Foundation Models directly. The diff never leaves your Mac. Zero network dependency.

Large Diffs Get Compressed, Not Truncated

Mechse didn't just wrap an API call. He specifically handled medium and large diffs by compressing them before feeding them into the model, avoiding overflow of Apple's limited on-device context window. This is documented in the README and in the commit history (feat: Add compressed diff for medium diffs). For developers doing large-scale refactors touching dozens of files, this is a meaningful design decision — not just a naive "truncate if too long" approach.

Zero Dependencies: Go stdlib + Native macOS Models

Saft is written in Go. The CLI depends only on the standard library — no third-party packages. The backend is macOS's Foundation Models framework: no OpenAI key, no .env file, no network requests. Install via install.sh and you're done. Uninstall is equally clean — no Python virtual environments or Node modules left behind.

For developers on macOS, this is near-zero friction. The obvious tradeoff: Apple Silicon Macs only. Linux and Windows users are completely out of luck.

A Name Change in Under 24 Hours

The project was posted to HN as "Strudel" and received 4 points and 3 comments. The very first reply pointed out the naming collision with a well-known music programming project (mutant: collision with the strudel music project might suck). Mechse responded within hours: "Thanks for the info I wasn't aware of that one. Will rename it :D" — and promptly renamed the repo to Saft. This kind of quick pivot without agonizing over sunk costs is refreshing among solo developers, many of whom would deliberate over a name for weeks.

Who Should (and Shouldn't) Use This

Saft fits: macOS developers working on personal or internal projects, privacy-conscious individuals who don't want to deal with API keys, and people whose daily diffs aren't massive. The 20 stars suggest real demand, even if the community is tiny.

Not for: cross-platform teams, anyone wanting custom prompt styles, or developers expecting GPT-4-level commit message quality — Apple's on-device model has inherent limits, and Saft adds no prompt engineering layer. With only 29 commits and 0 forks, the project is clearly early-stage; stability and edge-case handling remain to be seen.

📍 Source: hn📅 2026-06-20Original post →Visit site →
Ad
Ad slot (AdSense unit renders here once connected)

Discussion (0)

Sign in with GitHub to post
  • No comments yet — be the first.

Related