Chat with Apple's models,
right where you already live.
fm-pcc is a terminal chat client for Apple's Foundation Models — the on-device intelligence behind Apple Intelligence, plus Apple's cloud reasoning tier, one keystroke apart.
The catch
Apple's own fm CLI only talks to the model running on
your Mac. Cloud Pro — the bigger, cloud-hosted tier — has no public
API yet. So fm-pcc asks nicely: it drives an Apple Shortcut that
already knows how to reach it, the same kind Siri and Writing Tools
use, and reads the answer back over stdout.
The first time you actually reach for Cloud Pro, fm-pcc opens that shortcut's iCloud link for you and you tap Add Shortcut once. After that, it's just there. On-device chat needs none of this.
It isn't a private API or a jailbreak — just Shortcuts, scripted from the command line.
Get it
uv tool install git+https://github.com/justwaters/fm-pcc
fm license
fm-pcc
Installs a real fm-pcc command on your PATH
— needs macOS 27, uv,
and a licensed fm CLI (runs fm license once
to agree to Apple's terms).
In your terminal
fm-pcc # open the chat — starts on-device
fm-pcc --model cloud-pro # open the chat on cloud pro instead
fm-pcc respond "what is swift?" # one-shot, no chat window
Bring your files into it
Mention @path/to/file anywhere in a message and its
contents get inlined into what's actually sent to the model — the
same shorthand as Claude Code. fm-pcc shows an
attached: ... note so you can see what went out.
you › what does @pyproject.toml say the version is?
Commands, same spirit as fm chat
- /model
- show, or switch, the active model
- /edit
- propose a file edit — see below
- /apply
- write the pending proposed edit
- /discard
- discard the pending proposed edit
- /clear
- start a new conversation
- /help
- list commands and shortcuts
- Ctrl+T
- toggle on-device / cloud pro
- Ctrl+R
- start a new conversation
- Enter
- send your message
Let it edit files
/edit <path> <instructions> asks the
on-device model for a change, shows a diff, and waits for
/apply — nothing touches disk until you say so.
you › /edit greet.py add a docstring explaining the function
fm-pcc › Added a docstring explaining the function's purpose.
def greet(name):
+ '''
+ This function greets a person by name.
+ '''
print("hi " + name)
/apply to write this change to greet.py, /discard to cancel
It asks for a line number and freshly-written text rather than a copy-pasted snippet — the on-device model reliably mangles multi-line source text it has to reproduce verbatim inside JSON, but writing new text and picking a line number both hold up fine. Cloud Pro has no schema control via Shortcuts, so this is on-device only for now.