Documentation
The manual, built from the same pages that ship inside the app. Press / to search.
Guides
- Getting startedInstall Switchboard, finish the first-run Welcome, grant the two permissions it needs and see where to go next.
- Your first macroMake ;addr type your full address in any app, try it, turn it off and on, and change it. No code and no settings to learn.
- You can't break anythingWhat keeps your Mac safe while you learn: Try It, Undo, the On switch, Pause, Recently Deleted and History.
- GlossaryThe words these help pages use, from macro and trigger to locator and kit, one or two plain sentences each.
- A macro that works something outBuild a macro from scratch with a hotkey, a variable, an expression and a condition, dry run it, run it, and read its trace.
- Around the appEvery part of the Welcome sheet, the Examples group, the editor window, the menu bar panel and the palette, and how to bring a library from another app.
- Adding a trigger, condition or stepOne chooser adds every kind of block. Pick what it's about, then what to do with it, or type to search everything.
- Macros to addFour ready-made macros for error dialogs, form fields and the Inbox. Each one is turned off until you add it and choose to turn it on.
- Keyboard shortcutsEvery keyboard shortcut in Switchboard's menus and panels, and the key spec syntax used by Press keys and hotkey triggers.
- PrivacyLists exactly what stays on your Mac, what goes to iCloud, what a shared macro leaves out, what the AI features send, and what an agent can see.
- Security and team policyWhat leaves a managed Mac, what policy blocks, and how to export audit records.
- Deploying SwitchboardTeam seats, managed preferences, offline licences and the permissions a managed Mac still needs.
- Company sign-in and SCIMConfigure OIDC, verify a domain, provision people with SCIM and keep the owner's sign-in available.
- The team libraryRead company macros from a shared folder or git source, copy one to edit, and publish with your own credentials.
- UninstallingQuit the engine, remove the app, and delete the macros, settings, caches, permissions and Keychain items Switchboard keeps.
- Type your email addressType ;mail in any app and Switchboard types your email address in its place.
- Open an app with a keyPress ⌃⌥⌘N in any app and Notes comes to the front, opening it first if it isn't running.
- Hide everything but the front appPress ⌃⌥⌘H and every other app's windows go out of sight, leaving only the app you're working in.
- A reminder at a set timeEvery weekday at 4:30 PM a notification reminds you to stand up and stretch.
- Quiet the Mac when a meeting startsWhen Zoom opens, Switchboard quits Music and Messages so nothing plays or chimes during the call.
- Plug in before it's too lateWhen the battery drops below 20% and the Mac isn't plugged in, Switchboard tells you to plug in.
- Sort Downloads as things landReceipts and invoices leave Downloads for a dated folder in Documents, and pictures move to Pictures with a tag.
- Open your morning appsPress ⌃⌥⌘M and Mail, Calendar and Reminders open, one after the other.
- TriggersEvery way a macro can start, how conflicts and scopes decide which macro runs, and how to find out why a trigger did not fire.
- Triggers that watch: becomes true, States, waiting runsTurn any condition into a trigger, name situations as States, scope groups to them, and park runs that wait for a time or a condition.
- Limits on any triggerTick a box instead of writing counters and conditions: the first time each day, every 3rd time, twice within 2 seconds, a cooldown, only while you are at the Mac, only on one Mac, only in a State.
- Run a macro laterStart any macro at a time you type the way you say it, see everything scheduled in Upcoming, get a heads-up first, and use keys, the Later block and the late rules to make timers.
- Variables and expressionsUse {{ }} templates, variables, operators and built-in functions to make a macro's steps depend on data.
- FunctionsShows how to make a macro that other macros call, with inputs and a result, and how to pull repeated steps out into one.
- Thing typesEvery kind of thing Switchboard recognizes (link, email address, phone number, date, address, file, tracking number, git commit, color, code, JSON, measurement, IBAN, UUID, Mail message, image, text) and the fields each carries.
- Recording a macroWhat the Recorder writes down when you click, choose a menu command, switch apps or copy and paste, and how to record a fix into the middle of a macro.
- Make with AIDescribe a macro in a sentence and read what Claude wrote before anything is added or run.
- The menu bar panel and macro widgetsClick the menu bar glyph for a panel of what this moment can do; a macro with a panel field puts a button, toggle, readout or slider there while its Only-if list holds.
- Fn and HyperTwo modifiers worth knowing before you pick hotkeys. Fn (the Globe key) works in a hotkey, and Hyper is all four modifiers at once.
- Testing a macroShows how to save a run as a test, run tests and checks, and know a macro still works after an edit or a macOS update.
- DebuggingHow to find out why a macro did not run, why it failed and what it would do, using Activity, traces, dry runs and the command line.
- Guardrails: check before it happensStop a send, a quit or a push at the last second. A macro checks first, then lets the key through, blocks it, or asks "Send anyway?". Five ready-made ones.
- Troubleshooting permissionsExplains the five permissions Switchboard can ask for, what each one unlocks, and how to fix hotkeys or clicks that stop working.
- SnippetsType a short abbreviation and Switchboard replaces it with a longer text: fields to fill in, a caret position, the date, the clipboard.
- Quicklinks and keywordsGive any macro a one-word keyword in the palette, so "gh swift actors" opens a GitHub search; File > New Quicklink makes one in a sheet, and fallback searches appear when nothing matches.
- Clipboard actionsPress ⌘K on a copied item in the clipboard panel to transform it or act on it with your own macros: clean a link, reformat a color, pretty-print JSON, rewrite with AI.
- Paste asHold the Clipboard History key instead of pressing ⌘V to paste the clipboard as plain text, Markdown, JSON, text from an image or a file, with a live preview, or have AI rewrite it on the way in.
- The selection barSelect text in any app and a slim bar of icons appears above it: Copy, Search, Open link, Rewrite, Paste as, and any macro you make. Every icon is a macro that takes the selection.
- Act on what you're looking atOne hotkey shows the actions for whatever you are on (selected text, a file, a link, a ticket number, a tracking number) and runs your own macros on it. Teach Switchboard types of your own.
- Finding things on screenHow Switchboard finds a button, field or picture in another app, how sure it has to be, and what it does when it cannot find it.
- Read what an app showsTake the rows of a list, the whole text of a document, the links and the images out of any app's window, and run a macro when an element changes.
- Use your apps' actionsEvery Mac app that has Shortcuts actions shows up in Switchboard as steps, conditions and palette rows, with nothing for the app to do.
- Shortcuts, Siri and SpotlightRun, rehearse and manage your macros from the Shortcuts app, Siri and Spotlight on the Mac, including an extension's own actions.
- Services and URL schemesEvery app's Services menu entries and URL addresses become steps, and apps that answer back (x-callback-url) work in both directions.
- App KitsAdd a suite of features around a Mac app you don't own (its unread count as a value, buttons pinned to its window, a drawer, menu shortcuts, settings presets) that looks like the app made it.
- Kits inside Electron appsRun a kit's styles, features and commands inside Slack, VS Code, Notion or any other Electron app by opening the app through Switchboard.
- Safari and ChromeConnect your browser to Switchboard, then start macros from pages, change pages, and let page buttons run macros and get the result.
- Site KitsAdd a suite of features to a website you don't own (a button, a badge, a sidebar, commands) that looks like the site built it, and keeps working when the site changes.
- Use any web APIPaste an OpenAPI or GraphQL address and every endpoint becomes a step with a form; the token stays in your Keychain.
- Sign in to Google APIsSave a named Google (OAuth 2) sign-in once, then let any http step call a Google API as that account, with the token renewed for you.
- Agents and MCPHow Claude Code, Claude Desktop, Cursor and other agents run the macros you choose, with approval, a rate limit and a trace for every run.
- Trigger on anything an MCP server knowsRun a macro when a pull request, an issue, a database row or any other MCP resource changes, with no code for the service.
- AI budgetsSee what AI steps cost, set a monthly cap and a daily cap per macro, and write macros that stop or take a cheaper path when the budget is gone.
- The InboxQuestions macros park instead of popping up a window, and where to answer them: the menu bar, the iPhone and the command line.
- iPhone and Apple WatchDescribes what the iPhone and Apple Watch apps do: a Pad of tiles that run macros on your Mac, Sensors that start them, Approvals you answer from your wrist or pocket, and the Shortcuts, widget and Control Center actions that go with them.
- Several MacsRun a macro on another of your Macs from a hotkey, the palette or a Run macro step, over Bonjour on the same network or through iCloud, and what happens while that Mac sleeps.
- Coming from Keyboard MaestroHow Keyboard Maestro's groups, triggers, actions, conditions, variables and tokens map to Switchboard, and how to import your library.
- Coming from BetterTouchToolHow every BetterTouchTool trigger and action maps to Switchboard, what runs in the Window extension, and what the import records or leaves out.
- Coming from AlfredHow Alfred's workflows, keywords, script filters, web searches and feature hotkeys map to Switchboard, and what the import keeps, notes or leaves out.
- Coming from RaycastHow Raycast's script commands, quicklinks, snippets and extensions map to Switchboard, and the hotkeys Raycast keeps encrypted.
- Coming from LaunchBarHow a LaunchBar action becomes a macro with a palette keyword, which parts of LaunchBar's JavaScript API Switchboard provides, and what stays behind.
- Coming from TextExpander or AlfredImport snippets from TextExpander, Alfred, Raycast or macOS Text Replacements, and how their placeholders map to Switchboard's snippet tokens.
- Coming from HazelHow Hazel's folders, rules, conditions and actions map to Switchboard, and what the import keeps, notes or leaves out.
- Coming from Karabiner-ElementsHow Karabiner-Elements remaps, dual-role keys, layers and complex modifications map to Switchboard, and what the import keeps, notes or leaves out.
- Coming from Automator and ShortcutsHow Quick Actions, workflows, folder actions and Shortcuts become macros, which Automator actions turn into steps, and what still runs through Automator itself.
- Writing an extensionBuild a TypeScript extension that adds actions, conditions, triggers, functions or palette rows, and asks only for the permissions it needs.
- Make your first extensionA ten-minute walk-through from an empty folder to a working extension action in a macro, with hot reload, a setting, a permission, logs, tests and the gallery.
- Making an extension with AIDescribe an extension in a sentence, read the checked TypeScript Claude wrote and the permissions it asks for, try it, and install it in Develop mode.
- Turn a command-line tool into stepsPoint Switchboard at any command-line tool and its --help becomes steps with real forms; review them before they are saved.
- kit.jsonEvery key of a Site Kit's kit.json (id, version, permissions, anchors, settings, palette, sidebar, theme), and the group's site, with what each does.
- The kit page APIEvery call a Site Kit's JavaScript can make: route, place, anchor, onResponse, store, settings, command, sidebar, toast, ui.upgrade and theme.
Reference
Settings areas 25
25
Steps 168
Agents 3
Apps & windows 25
- Activate app
- Answer a dialog
- App commands
- App or window switcher
- Apply a kit's settings preset
- Choose from a context menu
- Choose menu item
- Choose menu item by name
- Click by letters
- Close window
- Hide app
- Move or resize window
- Open file or folder
- Press button by name
- Quit app
- Read a value from an app
- Read a window as an outline
- Read all the text of an app's document
- Read field value
- Read or save the images of an app's window
- Read the links of an app's window
- Read the rows of an app's list
- Set a control
- Set field value
- Wait
Control 15
- Break out of repeat
- Collect a list
- Group
- If
- Lock or unlock
- Next repeat
- Repeat
- Retry this loop pass
- Return a value
- Save rows to a file or the clipboard
- Set variable
- Stop macro
- Turn off macro
- Turn on macro
- Wait for a change
Debugging 4
Files 16
- Add Finder tags to a file
- Copy a file to a folder
- File operation
- Get or set a file attribute
- Move a file to the Trash
- Move or sort a file
- Open Finder selection
- Remember a file as handled
- Rename a file from a pattern
- Set a file's color label
- Set a file's Finder comment
- Set file icon
- Show a file in the Finder
- Split path
- Unzip an archive
- Zip a file or folder
Keyboard 3
Macros 8
- Cancel a scheduled run
- Cancel other macros
- Choose a macro to run
- Later
- Open a layer
- Run a macro later
- Run macro
- Wait until a condition holds
Mail & messages 4
Media & images 5
Mouse 5
Scripts 9
- Call MCP tool
- Run AppleScript
- Run Automator workflow
- Run JavaScript
- Run JXA script
- Run Python script
- Run shell script
- Run Shortcut
- Run Swift script
Show & ask 25
- Ask AI about the screen
- Ask AI to choose
- Ask AI to do it with tools
- Ask AI to extract
- Ask AI to rewrite
- Ask for input
- Ask later (Inbox)
- Ask Send anyway? (guardrail)
- Block it (guardrail)
- Choose a file or folder
- Close a panel
- Count unsaved windows
- Highlight area
- Let it through (guardrail)
- Pick a screen point or rectangle
- Read a panel
- Read recent notifications
- Read text on screen
- Read the mail being written
- Say aloud
- Show a panel
- Show an HTML prompt
- Show message
- Show notification
- Update a panel
System 10
- Change screen brightness
- Get current location
- Keep awake
- Light or dark mode
- Set desktop picture
- Set screen resolution
- Sleep, restart or log out
- Switch keyboard layout
- Switch network location
- System beep
Text & clipboard 3
Variables & data 3
Web 30
- Add or find a bookmark
- Ask in the page
- Call an app and read its answer (x-callback-url)
- Click on the page
- Control browser
- Download a file in the browser
- Extract links, a table or the article
- Fill in the page's fields
- Focus a field or element
- Highlight on the page
- Keep a record in the kit
- Make a request from the page
- Open a page in a background tab
- Open URL
- Press keys in the page
- Put CSS, HTML or JavaScript in the page
- Read from the page
- Read or write the page's storage
- Reply to webhook
- Run JavaScript in browser
- Scrape a page into rows
- Screenshot the page
- Scroll the page
- Search the browser's history
- Send data to the page
- Send HTTP request
- Show a notice in the page
- Snapshot the page for an agent
- Take injected code out of the page
- Work with tabs and windows
Triggers 49
Agents 1
Apps & windows 8
- A form field takes focus
- A reading from an app changes
- An element in an app changes
- An error dialog appears
- App notification
- Application event
- Window moves or resizes
- Window title change
Browser 13
- A browser connects or disconnects
- A download starts or finishes
- A form is submitted
- A kit reads the site's data
- A page loads, changes or closes
- A page makes a request
- A page sends an event
- A tab opens, plays sound or moves
- A web page changes
- An element appears on a page
- You choose a right-click menu item
- You click an element on a page
- You select text on a page
Changes & States 3
Files & devices 5
Keyboard & mouse 5
Network & phone 4
System 8
Time 2
Conditions 43
Agents 1
Apps 5
Browser 10
- A browser extension is connected
- A browser is in front
- A field holds
- A page expression is true
- A tab is open
- An element is in a state
- The page address matches
- The page says
- The page title matches
- The tab is private
Data 7
Keyboard & mouse 3
Macros & States 3
Screen 5
System 8
Time 1
Tokens 11
System 8
Time 2
Trigger 1
Functions 233
Apps 6
Browser 14
- browserField
- browserInfo
- browserJS
- browserSelection
- browserTabCount
- chromeIsComplete
- chromeTabCount
- chromeTabIndex
- frontBrowserIsComplete
- frontBrowserTabCount
- frontBrowserTabIndex
- safariIsComplete
- safariTabCount
- safariTabIndex
Clipboard 8
- clipboardFlavors
- clipboardSeed
- concealedPalettes
- findPasteboard
- namedClipboard
- namedClipboardFlavors
- pastClipboard
- pastClipboardFlavors
Conversion & encoding 8
Date and time 27
- day
- dow
- formatDate
- formatDuration
- gmtOffset
- hour
- jd
- jd2mjd
- jd2time
- kmDateTime
- localizedDate
- microseconds
- milliseconds
- minute
- mjd
- mjd2jd
- mjd2time
- month
- parseDate
- parseDuration
- second
- seconds
- time
- time2jd
- time2mjd
- timeIn
- year
Dates 2
Files 3
Images 4
JSON 6
Lists 4
Macros 3
Mail 10
- mailDateReceived
- mailDateSent
- mailFlag
- mailFlagged
- mailInfo
- mailJunkStatus
- mailReadStatus
- mailWasForwarded
- mailWasRedirected
- mailWasRepliedTo
Numbers & math 37
- abs
- acos
- asin
- atan
- atan2
- bin
- ceil
- convert
- cos
- cosh
- exp
- floor
- formatBase
- formatSize
- hex
- isNumber
- log
- log2
- log10
- max
- min
- numberFormat
- oct
- ordinal
- parseNumber
- parseRoman
- parseSize
- rand
- random
- roman
- round
- sin
- sinh
- spellNumber
- tan
- tanh
- trunc
Screen 15
- mouseLocation
- mouseX
- mouseY
- pixel
- screen
- screenCount
- screenFrame
- screenIndex
- screenResolution
- screenResolutions
- screenVisible
- screenVisibleFrame
- window
- windowCount
- windowInfo
System 36
- aiSpent()
- appDarkMode
- applications
- ask
- askUser
- audioDevice
- battery
- darkMode
- doubleClickInterval
- env
- idle
- keyboardLayout
- keyRepeatDelay
- keyRepeatInterval
- macIP
- macName
- macUUID
- memory
- menuBarHeight
- mouseButton
- musicPlayerState
- networkLocation
- online
- processors
- scheduled()
- screenSaver
- secureInput
- state()
- systemLongVersion
- systemVersion
- systemVolume
- uptime
- userHome
- userLogin
- userName
- wirelessNetwork
Text 50
- calculate
- camelCase
- characters
- cleanText
- compareVersions
- constantCase
- detectLanguage
- diffLines
- endsWith
- find
- findFirst
- fixSpelling
- fontSize
- formatColor
- fuzzyMatch
- fuzzySort
- isColor
- isEmail
- isJSON
- isURL
- kebabCase
- lines
- lower
- match
- parseAddresses
- parseColor
- parseFields
- parseName
- parsePath
- parseTable
- parseURL
- parseVersion
- pascalCase
- password
- randomID
- replace
- replaceFirst
- sentences
- sentiment
- similarity
- slug
- snakeCase
- spellcheck
- startsWith
- stripAccents
- trim
- unwrap
- upper
- wordList
- words
Settings 36
AI 5
Advanced 5
Agents 3
Browsers 2
Extensions 2
General 13
- Also show in the palette
- Clipboard hotkey
- Fallback searches
- Hold the hotkey to act on the selection
- HUD position
- Learn from my picks
- Menu bar glyph
- Palette hotkey
- Say when held runs go
- Selection bar
- Things hotkey
- Typing
- Update channel
Sync 3
Webhooks 3
Coming from Keyboard Maestro 5
5
Coming from BetterTouchTool 4
4
Extension SDK 24
Authoring 5
Automation 6
Integration 7
Interface 6
Command line 27
Extensions 5
Inspect 10
- switchboard apps
- switchboard browser
- switchboard find
- switchboard hooks
- switchboard list
- switchboard not-fired
- switchboard panel
- switchboard scan
- switchboard state
- switchboard trace
Library 4
Run 7
- switchboard held
- switchboard hook
- switchboard inbox
- switchboard pending
- switchboard run
- switchboard states
- switchboard var
Setup 1
Local API 68
App Actions 6
Browser 3
Clipboard 3
Engine 8
- DELETE /extensions/{id}/data
- GET /ai/spend
- GET /extensions
- GET /extensions/{id}/data
- GET /notifications
- GET /state
- GET /watches
- POST /engine/pause
Inbox 2
Kits 2
Macros 3
Recently Deleted 3
Runs 16
- DELETE /pending/{id}
- GET /held
- GET /not-fired
- GET /pending
- GET /runs
- GET /runs/{id}
- GET /upcoming
- PATCH /pending/{id}
- POST /held/{id}/drop
- POST /held/{id}/run
- POST /held/drop-all
- POST /held/run-all
- POST /pending
- POST /pending/{id}/restore
- POST /pending/{id}/run
- POST /skips
Saved sign-ins 8
- DELETE /signins/{name}
- GET /signins
- POST /signins
- POST /signins/{name}/refresh
- POST /signins/{name}/restore
- POST /signins/sign-in-now
- POST /signins/sign-in-now/cancel
- POST /signins/sign-in-now/finish