
saft
github.com/Mechse/strudel →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
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
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)」
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.
Discussion (0)
- No comments yet — be the first.


