Back to portfolio

Open-source macOS devtool

cmdFlow

A macOS app that runs clipboard text through an AI model under a global shortcut — on-device via Apple Foundation Model, or through OpenRouter/OpenAI.

Project preview

cmdFlow settings window with AI backend selection and actions.

Settings

AI backend (Apple / fallback / cloud), OpenRouter and OpenAI providers, and shortcut-bound actions.

cmdFlow actions list with global shortcuts and prompts.

Actions

Each action has its own global shortcut and prompt — e.g. translation and grammar fixing.

Overview

cmdFlow started from a simple annoyance: I keep copying a snippet and want to transform it fast — translate, fix grammar, summarize — without pasting into ChatGPT and switching windows. I press a shortcut, the clipboard text goes through my prompt into a model, and the result lands back in the clipboard.

Problem

Quick text processing usually means switching to a separate chat, pasting, waiting, and copying the result back. Across dozens of tiny operations a day, that is a real attention cost.

Product bet

If a text transformation is one global shortcut and the result lands straight in the clipboard, working with text becomes instant and never breaks focus.

What I built

  • Global shortcuts via Carbon, without Accessibility permissions.
  • Multiple actions, each with its own shortcut and prompt.
  • On-device backend: Apple Foundation Models (SystemLanguageModel).
  • Cloud providers OpenRouter and OpenAI on your own API key (Keychain), with a model search.
  • Apple mode with automatic cloud fallback, launch at login, and an animated shortcut recorder.

AI layer

The core is the Apple Foundation Model running locally on the Mac. Testing surfaced a concrete limitation: the model rejects Polish input text (the unsupportedLanguageOrLocale guardrail). So I added cloud providers and an automatic fallback — private and on-device where possible, cloud where needed.

Architecture

Swift, SwiftUI (MenuBarExtra), FoundationModels, Carbon HotKey, NSPasteboard, Keychain, and SMAppService. An SPM package assembled into a .app by a script, with CI and releases via GitHub Actions on macos-26 (DMG + ZIP).

Key decisions

  • On-device and privacy as the default mode, cloud as a deliberate choice.
  • Cloud providers on the user’s key instead of my own backend and costs.
  • No .xcodeproj — an SPM package assembled into a .app, to keep the repo clean for open source.
  • Honestly document the Polish limitation instead of pretending it is not there.

Outcome / evidence

A public open-source project with GitHub releases (DMG/ZIP), a Vercel landing page, and three interchangeable AI backends.

What I would do next

A v0 landing page, a starter set of actions, and possibly signing and notarization once an Apple Developer account is available.

Contact

Let’s turn the idea into a first product version

Email me if you need an MVP, mobile app, devtool, or AI-powered tool that solves a concrete problem. I work best where fast decisions and a working result matter.

Email me