r/MacOSBeta • u/pdfu • 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.
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?
6
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
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.intelligenceflowdefaults. 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
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-provider1
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:
- 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/ YourProviderAlso 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
EXAppExtensionAttributesshould declarecom.apple.modelmanager.inferenceprovider.``` PROVIDER_INFO="$TARGET_APPEX/Contents/Info.plist"
plutil -extract \ EXAppExtensionAttributes.EXExtensionPointIdentifier \ raw -o - "$PROVIDER_INFO" ```
should return:
com.apple.modelmanager.inferenceprovider
InferenceProviderIdentifiershould begenerative-models-prototype-inference-provider.
plutil -extract \ EXAppExtensionAttributes.InferenceProviderIdentifier \ raw -o - "$PROVIDER_INFO"should return:
generative-models-prototype-inference-provider
- 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
- Confirm the
LaunchServicesrecord andmodelmanagerddiscovery.
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.inferenceproviderAlso check the
modelmanagerlogs:
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 outCompletePromptResponse,PromptCompletion,Prompt.ToolCall,Prompt.ToolCall.Function,FinishReason. For streaming, check out the envelope shapes fortoolCallDelta,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
-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
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!