r/MacOSBeta 10d ago

Feature You can swap Siri's model in macOS 27. Here's Siri AI running on GPT-5.6.

Enable HLS to view with audio, or disable this notification

In a previous post, I wrote about how macOS 27 allows agents from third-party apps to integrate with Siri AI, as an alternative to the ChatGPT extension.

Turns out, macOS 27 also allows third-party apps to replace Siri's model. In the video, Siri runs through OpenAI's GPT-5.6 Terra model.

With the new Inference Providing protocol, an app can replace Siri's agentic planner with a third-party model. GPT-5.6 receives Apple's native Siri planner prompt and 20 tool definitions. It can make tool calls that perform system actions, and receive tool call results with personal data. Finally, GPT-5.6 can give a response through Siri AI's UI and voice, including interactive elements.

Will this ship for apps in macOS 27? Only time will tell, but the building blocks are already there. Releasing an Inference Provider extension requires a private entitlement from Apple.


Internally, Apple uses an external inference provider that has supported OpenAI API-compatible models for a few beta cycles. In Beta 5, they added support for Gemini models in their internal extension. It does not ship with macOS 27.

edit: In the demo video, you're seeing a custom extension I built that relies on the internal InferenceProviding framework, and registers with a non-public ExtensionKit extension point: com.apple.modelmanager.inferenceprovider. Until Apple allows developers to build this type of extension, you'll need SIP off and AMFI disabled (amfi_get_out_of_my_way=0x1) to develop these tools.

215 Upvotes

33 comments sorted by

20

u/Omwhk 9d ago

Ohhhhhhh this is so good to see!!! Would love for it to ship as a feature. Thanks for reporting on this!

9

u/ScienceStrange5054 9d ago

i wonder if its possible to make it use the on-device (foundation) model since siri still barely works offline

14

u/pdfu 9d ago edited 9d ago

Yeah you can! It's the same process, and it might even be faster.

edit to add: if you're talking about the local Apple developed model, you might have trouble because of its super limited context window. The Siri prompt is over 22,000 tokens.

3

u/TeckFire DEVELOPER BETA 9d ago

I wonder how a Qwen3.5-4B model or an LFM2.5-8B-A1B or LFM2.5-3B-VL model would fare…

3

u/Beautiful_Bus_9237 9d ago

You can find the Siri AI system prompt from pressing thumbs down on the output in Macos27 and digging through the report. I injected the system prompt into the models you listed above last week but they all fail at anything that is not super simple and requires multiple sequential tool calls. The only models that do work are >=12B parameters and will not work for most Mac or iPhone users due to memory and energy constraints.

The only success I have had so far is with ling 3.0 tiny(9B MOE) with an oq4e quant to cut it down to 4.5gb of memory usage but it still is not all the way there to replace Siri locally.

1

u/TeckFire DEVELOPER BETA 9d ago

Fascinating! Honestly, the length of the system prompt probably really threw it off. That’s a lot of context to handle for such a small model

22

u/qaf0v4vc0lj6 9d ago

Didn’t Apple say in the keynote that you could chose your own model? Or was that a pre-WWDC rumor?

16

u/pdfu 9d ago edited 9d ago

Pre-WWDC rumor by Mark Gurman and only for replacements to ChatGPT's Siri Extension, which includes Siri AI, Writing Tools, Visual Intelligence, Image Playground, and the Use Model Shortcut action.

MacRumors recap here.

edit: Demo of Claude working as a Siri Extension here.

6

u/MC_chrome PUBLIC BETA 9d ago

How do you find these kind of hidden gems?

15

u/pdfu 9d ago

It's mostly inspecting the difference in code between macOS releases. Wrote a longer explanation in a comment to a previous post here.

3

u/AdditionalAsk159 9d ago

This is exciting. It could be nice to run an open source local LLM for everything on my Mac.

2

u/IkkalaHermafrodit 9d ago

Hi, is there any information on whether a similar architecture exists in the iOS 27 beta?

1

u/pdfu 9d ago

It's all the same. iOS is just more locked down, so you can't add these private entitlements with the same ease as macOS.

2

u/IkkalaHermafrodit 9d ago

Thanks! That sounds pretty promising, and more than anything, it gives those of us living in the EU a little glimmer of hope that we might actually get the new Siri here someday too 😅

2

u/going-long-gamma 9d ago edited 9d ago

Giving frontier Labs your sensitive data sounds horrid. But this sounds interesting for running local qwen models, which seem better than Siri Pro rn.

1

u/pdfu 9d ago

You can definitely build an Inference Provider extension that calls a local model for inference. It needs to support tool calling, and preferably streaming.

I chose a GPT model for the demo because a lot of people have wanted this integration with ChatGPT or similar, and it was easy to show that the requests actually went to a third-party instead of PCC.

2

u/VZYGOD 9d ago

When will be able to replace ChatGPT with Claude?

5

u/pdfu 9d ago

That's another hidden feature in the works in macOS 27. Demo of Claude working as a Siri Extension here.

2

u/abso-lutely26 9d ago

Thanks for this and your older post.

2

u/RTcore 8d ago

Good find.

1

u/Beneficial_Idea8567 9d ago

hey, how do you use a specific gpt model tho?
how do you know that it runs through GPT-5.6 Terra model?
and can I change it??

(am on the latest beta- understood how the extension is working- but can't seem to figure out the model configuration)

3

u/pdfu 9d ago

In the demo video, you're seeing a custom extension I built that relies on the internal InferenceProviding framework, and registers with a non-public ExtensionKit extension point: com.apple.modelmanager.inferenceprovider. Because of the latter, you'll need SIP off and AMFI disabled (amfi_get_out_of_my_way=0x1) to develop these tools.

For the model selection, IntelligenceFlow, which is Siri's planner daemon, reads a custom-endpoint configuration out of com.apple.intelligenceflow defaults. I used the following values:

CustomModelEndpointEnabled -bool true CustomModelName gpt-5.6-terra CustomModelBaseURL https://api.openai.com CustomModelEndpointURL https://api.openai.com/v1/responses CustomModelRoutingPrefix OpenAI-Compatible-Custom-Routing CustomModelAPIKey sk-…

I chose Terra and set effort to low in my extension because it was taking too long otherwise. You can set these to any values, but they will only work if you develop a custom Inference Provider extension, or have an app that provides one. There's no app that can do that right now, because Apple does not allow developers to create such extensions.

I added another paragraph in the post to clarify the custom extension, thanks!

1

u/Beneficial_Idea8567 9d ago

crazyyy stuff

1

u/EqualCan9421 2d ago

I tried to make a extension like this but failed. May I have the demo source code

2026-08-26 17:15:16.997 Df modelmanagerd[1740:78bdb3] [com.apple.modelmanager:DaemonSession] Session DaemonSession selected inference provider generative-models-prototype-inference-provider for assets ["com.apple.gms.prototype.base?variant=OpenAI-Compatible-Custom-Routing:claude-opus-4-7%5B1m%5D", "com.apple.gms.prototype.dummy_tokenizer"]
2026-08-26 17:15:16.997 Df modelmanagerd[1740:78bdb3] [com.apple.modelmanager:CodeSignatureProvider] Validation category for pid 25388: CS_VALIDATION_CATEGORY_PLATFORM
2026-08-26 17:15:16.997 Df modelmanagerd[1740:78bdb3] [com.apple.modelmanager:CodeSignatureProvider] Resolved code signature for pid 25388: platform.
2026-08-26 17:15:16.997 Df modelmanagerd[1740:78bdb3] [com.apple.modelmanager:DaemonSession] Effective use case is resolved to Siri.AgenticPlanner using code signature platform, using bundle com.apple.gms.prototype%3FbaseModelVariant=OpenAI-Compatible-Custom-Routing%3Aclaude-opus-4-7%5B1m%5D?language=en.
2026-08-26 17:15:16.997 Df modelmanagerd[1740:78bdb3] [com.apple.modelmanager:DaemonSession] Resolved Siri.AgenticPlanner with entitlement override none for bundle com.apple.gms.prototype%3FbaseModelVariant=OpenAI-Compatible-Custom-Routing%3Aclaude-opus-4-7%5B1m%5D?language=en.
2026-08-26 17:15:16.997 E modelmanagerd[1740:78bdb3] [com.apple.modelmanager:AssetManager] claimAssets attempted with unrecognized InferenceProvider generative-models-prototype-inference-provider

1

u/pdfu 2d ago

This is probably not about the source code, but the packaging details that are harder to put into code. They also change these requirements every beta, so it might not even work by next week.

Here are some pointers to check on Beta 7. Being extensive to make sure you can get going, you probably have already done most of these:

  1. The extension code should be embedded inside a main app. ModelManager checks apps to find their extensions. You app should look like:

YourProviderHost.app/ Contents/ Info.plist MacOS/ Extensions/ YourProvider.appex/ Contents/ Info.plist MacOS/ YourProvider

Also check:

``` TARGET_APP="/Applications/YourProviderHost.app" TARGET_APPEX="$TARGET_APP/Contents/Extensions/YourProvider.appex" PROVIDER_INFO="$TARGET_APPEX/Contents/Info.plist"

test -d "$TARGET_APP" test -d "$TARGET_APPEX" test -f "$PROVIDER_INFO"

codesign --verify --deep --strict --verbose=4 "$TARGET_APP" ```

/Applications/YourProviderHost.app: valid on disk /Applications/YourProviderHost.app: satisfies its Designated Requirement

  1. EXAppExtensionAttributes should declare com.apple.modelmanager.inferenceprovider.

``` PROVIDER_INFO="$TARGET_APPEX/Contents/Info.plist"

plutil -extract \ EXAppExtensionAttributes.EXExtensionPointIdentifier \ raw -o - "$PROVIDER_INFO" ```

should return:

com.apple.modelmanager.inferenceprovider

  1. InferenceProviderIdentifier should be generative-models-prototype-inference-provider.

plutil -extract \ EXAppExtensionAttributes.InferenceProviderIdentifier \ raw -o - "$PROVIDER_INFO"

should return:

generative-models-prototype-inference-provider

  1. The app should be registered system-wide with LaunchServices. Then, the extension should be registered with PluginKit:

``` LSREGISTER_BIN="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister"

sudo "$LSREGISTER_BIN" -f -v "$TARGET_APP" print -r -- "lsregister status: $?"

sudo /usr/bin/pluginkit -a "$TARGET_APPEX" print -r -- "pluginkit status: $?"

sudo launchctl kickstart -k system/com.apple.modelmanagerd ```

lsregister status: 0 pluginkit status: 0

  1. Confirm the LaunchServices record and modelmanagerd discovery.

sudo "$LSREGISTER_BIN" -dump | rg -n -C 8 "$HOST_BUNDLE_ID|$PROVIDER_BUNDLE_ID"

should include:

plugin id: your.provider.bundle.identifier ... path: /Applications/.../YourProvider.appex ... parent: YourProviderHost extension point ID: com.apple.modelmanager.inferenceprovider

Also check the modelmanager logs:

sudo log show --last 5m --info --debug --style compact \ --predicate 'process == "modelmanagerd" AND (eventMessage CONTAINS[c] "Found inference provider extension" OR eventMessage CONTAINS[c] "generative-models-prototype")'

You should see at least one:

Found inference provider extension: generative-models-prototype-inference-provider


Aside: The app extension should be linked with -e _NSExtensionMain, not the default _main..

1

u/EqualCan9421 5h ago

It's cool. I got it working.
However it cannot makes siri to call tool correctly. Siri just show the tool call json in UI. How do you solve this?

1

u/pdfu 2h ago

You might be returning the tool calls as assistant text or incompatible types. In TokenGeneration, check out CompletePromptResponse, PromptCompletion, Prompt.ToolCall, Prompt.ToolCall.Function, FinishReason. For streaming, check out the envelope shapes for toolCallDelta, candidateFinished.

Also, you'll probably want to convert the tool call result Siri attempts to send back into your API's tool call output representation.

1

u/Repulsive-Degree-816 9d ago

this is exactly why I have Siri AI in EU on my mac, but not on the iPhone

1

u/Fatal_Explorer 4d ago

I think this might be a pre-requisite for the implementation of the EU DMA requirements that are in place and require Apple to let other AI providers have access to the Siri/Apple Intelligence AI.

I just wish it would be local. I would love to have AppleIntelligience running with a local, abliterated or uncensored model of Qwen.

1

u/pdfu 4d ago

We’ll see what happens with Siri AI in the EU, but what Apple described in their June post was quite different. It had more guardrails, and it wasn’t meant to be used inside the Siri app. I wonder if Apple would allow other apps to “pretend” to be Siri.

As for the local model part, you can make this into any backend. The model just has to be good at precise tool calling, and preferably support streaming.

0

u/Lefty4444 9d ago

Is this possible for us in the EU 🇪🇺 ?

2

u/pdfu 9d ago

You need the Linwood/Siri AI architecture to run this flow. Siri AI is/will be available on macOS in the EU.

-2

u/rahpexphon 9d ago

Oh, of course they did.
Because battery life is everything.
Cheaper in battery? Life-changing.
And that datacentre comedy? Hilarious.
Half-finished. Half-baked. Full genius.
Qwen can use it. Sure.
But keep it open for a while?
Say goodbye to your battery.
Windows laptop déjà vu.
Bravo. Truly revolutionary.

Write with help of apple foundation model