Apple Integration
macOS-specific integration layer bridging Aartiq with Apple Intelligence, Siri, Shortcuts, and Voice Control. The bridges live insrc/lib/SiriShortcutsIntegration.jsandsrc/lib/apple-script-bridge.js, with the Apple Intelligence helper insrc/lib/apple-intelligence.swiftand native SwiftUI panels insrc/lib/native-panels/. Every command listed below states the platform and OS version it actually needs.
Apple Intelligence
Apple's on-device models, reached through a helper binary Aartiq compiles from src/lib/apple-intelligence.swift. Each command has its own OS floor — they are not interchangeable.
src/lib/native-panels/
Siri Integration
Twenty App Intents registered from the native panel, reachable by voice from anywhere on your Mac. Fifteen reach a route the macOS bridge actually serves. Five do not, and are listed as such rather than removed, because the intent is compiled into the shipped app either way.
src/lib/native-panels/AppIntents.swift
Apple Shortcuts
Aartiq registers the aartiq:// URL scheme, so a Shortcuts workflow can trigger an action with an Open URL step. Only macOS delivers the link to a running app — see Dispatch below.
src/lib/SiriShortcutsIntegration.js
Voice Control
Use macOS dictation for voice input and text-to-speech for AI responses.
src/lib/apple-script-bridge.js
Recognised Voice Phrases
Speech is matched against these prefixes; the remainder of the utterance becomes the message. Speech that matches none of them is treated as a plain chat message and sent to the model, so the microphone is worth muting when it is not wanted.
Raycast Integration
Extend Raycast with Aartiq commands. Access AI features directly from the Raycast command bar.
macOS Native AI
Apple Intelligence
Aartiq integrates with Apple's on-device AI capabilities on supported Macs. The native Swift bridge handles readiness checks, summarization, and image generation. Source: src/lib/native-panels/AppleIntelligenceBridge.swift
Requirements
- macOS 15.4 or later for Genmoji
- macOS 15.1 or later for Image Playground
- macOS 26.0 or later for text summarization
- Apple Silicon or M-series chip
- Apple Intelligence enabled in Settings
Available Features
Text SummarizationmacOS 26.0+
Summarize text locally through Foundation Models
Image GenerationmacOS 15.1+
Create an image from a natural language prompt via Image Playground
GenmojimacOS 15.4+
Create a custom emoji from a description
Code Example
// window.electronAPI is the only bridge preload.js exposes.
// window.electron does not exist, and these examples used to call it.
// All four commands refuse off macOS with
// { success: false, error: 'Apple Intelligence is only available on macOS.' }
// What this machine can do. Each command has its own OS floor, so check
// before calling: summaryAvailable is separate from imageAvailable and
// genmojiAvailable.
const status = await window.electronAPI.getAppleIntelligenceStatus();
// {
// success: true,
// osVersion: 'Version 26.0 (Build 25A354)',
// available: true, // Foundation Models, i.e. summaries
// supportsSummaries: true,
// summaryAvailable: true,
// imageAvailable: true,
// genmojiAvailable: true,
// availableStyles: ['illustration', 'line-art', ...]
// }
// Each unavailable command also carries a *_Reason string, e.g.
// summaryReason: 'Summaries require macOS 26 with Foundation Models.'
// Summarize. Takes a bare string, not an object, and returns summary.
const summary = await window.electronAPI.summarizeWithAppleIntelligence(
'Long article content here...'
);
console.log(summary.summary); // summaryAvailable requires macOS 26.0+
// Generate an image. Returns a file path, not base64.
const image = await window.electronAPI.generateAppleIntelligenceImage({
prompt: 'A futuristic city at sunset',
style: 'illustration' // optional; defaults to illustration
});
console.log(image.imagePath); // imageAvailable requires macOS 15.1+
// Generate a custom emoji. Same payload shape.
const emoji = await window.electronAPI.generateGenmoji({
prompt: 'a robot chef'
});
console.log(emoji.genmojiPath); // genmojiAvailable requires macOS 15.4+Voice Commands
Siri Integration
App Intents bridge allowing Siri to trigger Aartiq actions. Twenty intents are defined insrc/lib/native-panels/AppIntents.swift.Every intent reaches the app over the token-authenticated bridge on 127.0.0.1:46203. It binds loopback only, so no other machine on the network can drive these actions.
Available Siri Phrases
“Ask Aartiq [prompt]”
Sends the prompt and speaks the reply
“Refine Aartiq's response to be [instruction]”
Sends a refinement instruction
“Regenerate Aartiq's response”
Re-runs the last turn
“What did Aartiq say?”
Reads the latest response
“List my conversations in Aartiq”
Lists recent chats
“Open my [conversation] in Aartiq”
Loads a named chat
“New chat in Aartiq”
Starts a fresh conversation
“Reset Aartiq chat”
Clears the current context
“Search [query] with Aartiq”
Sends the query as a prompt
“Switch Aartiq model to [model]”
Changes the active model
“What can you do with Aartiq”
Answers from a fixed description
“Run [command] in Aartiq”
Queues the command as a prompt. It is not executed by the intent, and it does not bypass approval.
queues a prompt only
“Create a [format] about [topic] in Aartiq”
Queues a document request. No file is produced by the intent itself.
queues a prompt only
“Schedule [task] [time] in Aartiq”
Queues a scheduling request. The task is not registered by the intent itself.
queues a prompt only
Registered but non-functional
These phrases resolve to an intent, and the intent calls a bridge route that is not served. Siri reports a failure rather than doing the thing.
“Summarize this page with Aartiq”
The intent POSTs to /native-mac-ui/summarize-page. No such route is served, so it reports failure.
“Take screenshot with Aartiq”
The intent POSTs to /native-mac-ui/screenshot. No such route is served.
“Set volume to [level] in Aartiq”
The intent POSTs to /native-mac-ui/volume. No such route is served.
“Open [app] with Aartiq”
The intent POSTs to /native-mac-ui/open-app. No such route is served.
“Read clipboard in Aartiq”
The intent GETs /native-mac-ui/clipboard. No such route is served.
How It Works
Siri Phrases Reference
// Siri phrases registered in src/lib/native-panels/AppIntents.swift
//
// Reaches a bridge route the app actually serves:
// "Ask Aartiq [prompt]" // "Tell", "Query" too
// "Refine Aartiq response" // "Make ... [instruction]"
// "Regenerate Aartiq response" // "Try again in Aartiq"
// "What did Aartiq say?"
// "List my conversations in Aartiq"
// "Open my [conversation] in Aartiq"
// "New chat in Aartiq"
// "Reset Aartiq chat"
// "Search web with Aartiq for [query]"
// "Switch Aartiq model to [model]"
// "What can you do with Aartiq"
//
// Reaches a route, but only queues a prompt rather than doing the thing:
// "Run [command] in Aartiq" -> sendPrompt("Run this shell command: ...")
// "Create a [format] about [topic]" -> sendPrompt("Generate a ... document about: ...")
// "Schedule [task] [time]" -> sendPrompt("Schedule this task: ...")
//
// Resolves to an intent that calls a route the bridge does not serve,
// so Siri reports failure:
// "Summarize this page with Aartiq" -> /native-mac-ui/summarize-page
// "Take screenshot with Aartiq" -> /native-mac-ui/screenshot
// "Set volume to [level] in Aartiq" -> /native-mac-ui/volume
// "Open [app] with Aartiq" -> /native-mac-ui/open-app
// "Read clipboard in Aartiq" -> /native-mac-ui/clipboard
//
// There is no wake word. Dictation hands the transcript to Aartiq, which
// matches it against its own prefixes and otherwise sends it to the model.URL Scheme
Apple Shortcuts
The aartiq:// URL scheme enables integration with Apple Shortcuts. Route definitions are insrc/lib/SiriShortcutsIntegration.ts. Build automation workflows combining Aartiq with other apps.