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.

fm-pcc — zsh
model: on-device · /help for help
on-device · turn 1

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.