Open-source macOS devtool
cmdFlow
Aplikacja macOS, która przepuszcza tekst ze schowka przez model AI pod globalnym skrótem — on-device przez Apple Foundation Model albo przez OpenRouter/OpenAI.
Podgląd projektu

Ustawienia
Backend AI (Apple / fallback / chmura), providerzy OpenRouter i OpenAI oraz akcje ze skrótami.

Akcje
Każda akcja ma własny globalny skrót i prompt — np. tłumaczenie i poprawa gramatyki.
Opis
cmdFlow powstał z prostej irytacji: ciągle kopiuję jakiś fragment i chcę go szybko przerobić — przetłumaczyć, poprawić gramatykę, streścić — bez wklejania do ChatGPT i przełączania okien. Naciskam skrót, tekst ze schowka idzie przez mój prompt do modelu, a wynik wraca do schowka.
Problem
Szybkie przetwarzanie tekstu wymaga zwykle przełączenia się do osobnego czatu, wklejenia, poczekania i skopiowania wyniku z powrotem. Przy dziesiątkach małych operacji dziennie to realny koszt uwagi.
Hipoteza produktowa
Jeśli transformacja tekstu jest jednym globalnym skrótem, a wynik od razu ląduje w schowku, praca z tekstem robi się natychmiastowa i nie wybija z kontekstu.
Co zbudowałem
- Globalne skróty przez Carbon, bez uprawnień Accessibility.
- Wiele akcji, każda z własnym skrótem i promptem.
- Backend on-device: Apple Foundation Models (SystemLanguageModel).
- Providerzy chmurowi OpenRouter i OpenAI na własnym kluczu API (Keychain), z wyszukiwarką modeli.
- Tryb Apple + automatyczny fallback do chmury, uruchamianie przy logowaniu, animowany recorder skrótów.
Warstwa AI
Rdzeniem jest Apple Foundation Model działający lokalnie na Macu. W testach wyszło konkretne ograniczenie: model odrzuca polski tekst wejściowy (guardrail unsupportedLanguageOrLocale). Dlatego dołożyłem providerów chmurowych i automatyczny fallback — prywatnie on-device tam, gdzie się da, chmura tam, gdzie trzeba.
Architektura
Swift, SwiftUI (MenuBarExtra), FoundationModels, Carbon HotKey, NSPasteboard, Keychain i SMAppService. Pakiet SPM składany do .app skryptem, CI i release przez GitHub Actions na macos-26 (DMG + ZIP).
Kluczowe decyzje
- On-device i prywatność jako domyślny tryb, chmura jako świadomy wybór.
- Providerzy chmurowi na kluczu użytkownika zamiast własnego backendu i kosztów.
- Bez .xcodeproj — pakiet SPM składany do .app, żeby repo było czyste dla open source.
- Uczciwie udokumentowane ograniczenie polskiego zamiast udawania, że go nie ma.
Efekt / dowód
Publiczny projekt open-source z releasami na GitHubie (DMG/ZIP), landingiem na Vercel i trzema wymiennymi backendami AI.
Co dalej
Landing page z v0, gotowy zestaw akcji na start oraz ewentualnie podpis i notaryzacja, gdy pojawi się Apple Developer Account.