Press the Fn/Globe key — a transparent floating pill appears above the Dock
Speak — the pill shows a real-time waveform visualizer
Release the Fn key — audio is sent to the gateway for transcription
The transcribed text is pasted into the active application via Cmd+V
The pill is a transparent, always-on-top window with no title bar. It uses a CGEventTap at the HID level to intercept the Fn key before macOS routes it to the emoji picker.
The dictation pill follows the active screen. When you press Fn on a secondary monitor, the pill appears on that screen, centered horizontally with a fixed gap above the Dock.
The dictation pill records audio via the Web Audio API and sends it to the gateway’s /api/stt/transcribe endpoint. The gateway supports two STT backends:
Backend
Setup
Whisper
pip install openai-whisper — must have whisper on PATH
The desktop app requires two macOS permissions for Fn key dictation to work:
Permission
Where to enable
Why
Accessibility
System Settings > Privacy & Security > Accessibility
Allows the app to observe keyboard events and simulate paste (Cmd+V)
Input Monitoring
System Settings > Privacy & Security > Input Monitoring
Required for HID-level event tap to intercept the Fn/Globe key
Both permissions must be granted to the Spaceduck app (or the terminal running it during development). You will be prompted on first launch, or you can add the app manually in System Settings.
The desktop app loads the web UI from the bundled frontend and connects to the gateway sidecar over localhost. The CSP (Content Security Policy) is configured to allow connections to localhost on any port:
Supported (full features including Fn key dictation)
Linux
Supported (web UI, no Fn key dictation)
Windows
Supported (web UI, no Fn key dictation)
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"spaceduck","colors":{"primary":"#6366f1","light":"#818cf8","dark":"#4f46e5"},"logo":{"light":"https://mintcdn.com/spaceduck/yjynPc2kO3z2QpoG/logo/spaceduck-logo.png?fit=max\u0026auto=format\u0026n=yjynPc2kO3z2QpoG\u0026q=85\u0026s=2ef8e5d90027267e20bf38c4705144e9","dark":"https://mintcdn.com/spaceduck/yjynPc2kO3z2QpoG/logo/spaceduck-logo.png?fit=max\u0026auto=format\u0026n=yjynPc2kO3z2QpoG\u0026q=85\u0026s=2ef8e5d90027267e20bf38c4705144e9"},"favicon":{"light":"/logo/spaceduck-logo.png","dark":"/logo/spaceduck-logo.png"},"navbar":{"links":[{"href":"https://github.com/maziarzamani/spaceduck","type":"github"}],"primary":{"type":"button","label":"Quickstart","href":"/quickstart"}},"footer":{"socials":{"github":"https://github.com/maziarzamani/spaceduck"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"spaceduck","hasAudioNarration":false,"actualSubdomain":"spaceduck","customDomains":["docs.spaceduck.ai"],"gitSource":{"type":"github","owner":"maziarzamani","repo":"spaceduck","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21f78f809fff710fb9c68f","collectionId":"7fdbfced-e1c1-419c-ba8a-85def7515a3e","schemaVersion":"v2"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6a21f78f809fff710fb9c68f:success","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Model Providers","count":6},{"language":"default","tag":"Tools","count":6},{"language":"default","tag":"Concepts","count":4},{"language":"default","tag":"Install","count":3},{"language":"default","tag":"Platforms","count":3},{"language":"default","tag":"Start Here","count":2},{"language":"default","tag":"Reference","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"platforms/desktop","slug":"/platforms/desktop","pageMetadata":{"title":"Desktop App","description":"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.","href":"/platforms/desktop","hidden":false},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The Spaceduck desktop app is a `,_jsx(_components.a,{href:`https://v2.tauri.app`,children:`Tauri v2`}),` shell that wraps the web UI in a native window. It supports macOS, Linux, and Windows.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-it-does`,children:`What it does`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Runs the gateway as a `,_jsx(_components.strong,{children:`sidecar process`}),` — starts and stops with the app`]}),`\n`,_jsx(_components.li,{children:`Provides a native window with OS integration (menu bar, window management)`}),`\n`,_jsxs(_components.li,{children:[`Connects to the gateway over `,_jsx(_components.code,{children:`http://localhost:3000`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`System-wide Fn key dictation`}),` — press the Globe/Fn key from any app to start voice input (macOS only)`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`running-the-desktop-app`,children:`Running the desktop app`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bun`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dev:desktop`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This starts both the gateway sidecar and the Tauri window. The web UI loads automatically.`}),`\n`,_jsx(Heading,{level:`2`,id:`building-for-distribution`,children:`Building for distribution`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bun`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` build:desktop`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The built application is output to `,_jsx(_components.code,{children:`apps/desktop/src-tauri/target/release/`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`dictation-pill`,children:`Dictation pill`}),`\n`,_jsxs(_components.p,{children:[`The desktop app adds a floating dictation pill that appears when you press the `,_jsx(_components.strong,{children:`Fn (Globe) key`}),` from any application. This is a macOS-only feature.`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-it-works`,children:`How it works`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Press the `,_jsx(_components.strong,{children:`Fn/Globe key`}),` — a transparent floating pill appears above the Dock`]}),`\n`,_jsx(_components.li,{children:`Speak — the pill shows a real-time waveform visualizer`}),`\n`,_jsx(_components.li,{children:`Release the Fn key — audio is sent to the gateway for transcription`}),`\n`,_jsx(_components.li,{children:`The transcribed text is pasted into the active application via Cmd+V`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The pill is a transparent, always-on-top window with no title bar. It uses a `,_jsx(_components.code,{children:`CGEventTap`}),` at the HID level to intercept the Fn key before macOS routes it to the emoji picker.`]}),`\n`,_jsx(Heading,{level:`3`,id:`multi-monitor-support`,children:`Multi-monitor support`}),`\n`,_jsx(_components.p,{children:`The dictation pill follows the active screen. When you press Fn on a secondary monitor, the pill appears on that screen, centered horizontally with a fixed gap above the Dock.`}),`\n`,_jsx(Heading,{level:`3`,id:`speech-to-text`,children:`Speech-to-text`}),`\n`,_jsxs(_components.p,{children:[`The dictation pill records audio via the Web Audio API and sends it to the gateway’s `,_jsx(_components.code,{children:`/api/stt/transcribe`}),` endpoint. The gateway supports two STT backends:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Backend`}),_jsx(_components.th,{children:`Setup`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Whisper`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`pip install openai-whisper`}),` — must have `,_jsx(_components.code,{children:`whisper`}),` on PATH`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`AWS Transcribe`})}),_jsx(_components.td,{children:`Configure AWS credentials in your environment`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`macos-permissions`,children:`macOS permissions`}),`\n`,_jsx(_components.p,{children:`The desktop app requires two macOS permissions for Fn key dictation to work:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Permission`}),_jsx(_components.th,{children:`Where to enable`}),_jsx(_components.th,{children:`Why`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Accessibility`})}),_jsx(_components.td,{children:`System Settings > Privacy \u0026 Security > Accessibility`}),_jsx(_components.td,{children:`Allows the app to observe keyboard events and simulate paste (Cmd+V)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Input Monitoring`})}),_jsx(_components.td,{children:`System Settings > Privacy \u0026 Security > Input Monitoring`}),_jsx(_components.td,{children:`Required for HID-level event tap to intercept the Fn/Globe key`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Both permissions must be granted to the Spaceduck app (or the terminal running it during development). You will be prompted on first launch, or you can add the app manually in System Settings.`})}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-connects`,children:`How it connects`}),`\n`,_jsxs(_components.p,{children:[`The desktop app loads the web UI from the bundled frontend and connects to the gateway sidecar over localhost. The CSP (Content Security Policy) is configured to allow connections to `,_jsx(_components.code,{children:`localhost`}),` on any port:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`HTTP and WebSocket connections to `,_jsx(_components.code,{children:`localhost`})]}),`\n`,_jsx(_components.li,{children:`Font loading from Google Fonts`}),`\n`,_jsxs(_components.li,{children:[`Image loading from `,_jsx(_components.code,{children:`data:`}),` and `,_jsx(_components.code,{children:`blob:`}),` URIs`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`platform-support`,children:`Platform support`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Platform`}),_jsx(_components.th,{children:`Status`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`macOS`}),_jsx(_components.td,{children:`Supported (full features including Fn key dictation)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Linux`}),_jsx(_components.td,{children:`Supported (web UI, no Fn key dictation)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Windows`}),_jsx(_components.td,{children:`Supported (web UI, no Fn key dictation)`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Desktop App","description":"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.","href":"/platforms/desktop","hidden":false}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What it does","slug":"what-it-does","depth":2,"children":[]},{"title":"Running the desktop app","slug":"running-the-desktop-app","depth":2,"children":[]},{"title":"Building for distribution","slug":"building-for-distribution","depth":2,"children":[]},{"title":"Dictation pill","slug":"dictation-pill","depth":2,"children":[{"title":"How it works","slug":"how-it-works","depth":3,"children":[]},{"title":"Multi-monitor support","slug":"multi-monitor-support","depth":3,"children":[]},{"title":"Speech-to-text","slug":"speech-to-text","depth":3,"children":[]}]},{"title":"macOS permissions","slug":"macos-permissions","depth":2,"children":[]},{"title":"How it connects","slug":"how-it-connects","depth":2,"children":[]},{"title":"Platform support","slug":"platform-support","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"spaceduck","siteName":"spaceduck","title":"Desktop App - spaceduck","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-02-26T11:48:35.772Z","originalFileLocation":"platforms/desktop.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"spaceduck\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Desktop App - spaceduck\">\u003cmeta data-mint-head property=\"og:description\" content=\"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"spaceduck\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.spaceduck.ai/platforms/desktop\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://spaceduck.mintlify.app/_mintlify/api/og/v2?division=Platforms\u0026amp;title=Desktop+App\u0026amp;description=Run+Spaceduck+as+a+native+desktop+application+using+Tauri+v2%2C+with+system-wide+Fn+key+dictation.\u0026amp;theme=1a40f664567fd89c8b75e094\u0026amp;signature=45113b638540fc70b8543d9d06cbbedb63fb1a4ed974e8a255d6a9b196185899\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Desktop App - spaceduck\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://spaceduck.mintlify.app/_mintlify/api/og/v2?division=Platforms\u0026amp;title=Desktop+App\u0026amp;description=Run+Spaceduck+as+a+native+desktop+application+using+Tauri+v2%2C+with+system-wide+Fn+key+dictation.\u0026amp;theme=1a40f664567fd89c8b75e094\u0026amp;signature=45113b638540fc70b8543d9d06cbbedb63fb1a4ed974e8a255d6a9b196185899\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/spaceduck/VfOh6TQq6PCiR9F9/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"spaceduck\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6366f1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.spaceduck.ai/platforms/desktop\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/platforms/desktop.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.spaceduck.ai/#organization\",\"name\":\"spaceduck\",\"url\":\"https://docs.spaceduck.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/spaceduck/yjynPc2kO3z2QpoG/logo/spaceduck-logo.png?fit=max\u0026auto=format\u0026n=yjynPc2kO3z2QpoG\u0026q=85\u0026s=2ef8e5d90027267e20bf38c4705144e9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.spaceduck.ai#website\",\"name\":\"spaceduck\",\"url\":\"https://docs.spaceduck.ai\",\"publisher\":{\"@id\":\"https://docs.spaceduck.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.spaceduck.ai/platforms/desktop#webpage\",\"url\":\"https://docs.spaceduck.ai/platforms/desktop\",\"name\":\"Desktop App\",\"description\":\"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.\",\"dateModified\":\"2026-02-26T11:48:35.772Z\",\"isPartOf\":{\"@id\":\"https://docs.spaceduck.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.spaceduck.ai/platforms/desktop#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.spaceduck.ai/platforms/desktop#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Platforms\",\"item\":\"https://docs.spaceduck.ai/platforms/gateway\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desktop App\",\"item\":\"https://docs.spaceduck.ai/platforms/desktop\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.spaceduck.ai/platforms/desktop#article\",\"headline\":\"Desktop App\",\"name\":\"Desktop App\",\"description\":\"Run Spaceduck as a native desktop application using Tauri v2, with system-wide Fn key dictation.\",\"url\":\"https://docs.spaceduck.ai/platforms/desktop\",\"mainEntityOfPage\":{\"@id\":\"https://docs.spaceduck.ai/platforms/desktop#webpage\"},\"dateModified\":\"2026-02-26T11:48:35.772Z\",\"publisher\":{\"@id\":\"https://docs.spaceduck.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.spaceduck.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"spaceduck\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"spaceduck","nav":{"global":null,"groups":[{"group":"Start Here","pages":[{"title":"Introduction","href":"/index","hidden":false},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Install","pages":[{"title":"Installer","href":"/install/installer","hidden":false},{"title":"From Source","href":"/install/from-source","hidden":false},{"title":"Docker","href":"/install/docker","hidden":false}]},{"group":"Model Providers","pages":[{"title":"Model Providers","href":"/providers/overview","hidden":false},{"title":"llama.cpp","href":"/providers/llamacpp","hidden":false},{"title":"LM Studio","href":"/providers/lmstudio","hidden":false},{"title":"AWS Bedrock","href":"/providers/bedrock","hidden":false},{"title":"Google Gemini","href":"/providers/gemini","hidden":false},{"title":"OpenRouter","href":"/providers/openrouter","hidden":false}]},{"group":"Platforms","pages":[{"title":"Gateway","description":"The Spaceduck gateway is the core server that handles chat, memory, tools, and configuration.","href":"/platforms/gateway"},{"title":"Desktop App","href":"/platforms/desktop","hidden":false},{"title":"CLI","description":"Manage your Spaceduck gateway from the terminal — check status, update config, and manage secrets.","href":"/platforms/cli","hidden":false}]},{"group":"Tools","pages":[{"title":"Tools","href":"/tools/overview","hidden":false},{"title":"Browser","href":"/tools/browser","hidden":false},{"title":"Web Search","href":"/tools/web-search","hidden":false},{"title":"Web Fetch","href":"/tools/web-fetch","hidden":false},{"title":"Document Scanning","href":"/tools/document-scanning","hidden":false},{"title":"Charts","href":"/tools/charts","hidden":false}]},{"group":"Concepts","pages":[{"title":"Memory","href":"/concepts/memory"},{"title":"Scheduler","href":"/concepts/scheduler","hidden":false},{"title":"Skills","href":"/concepts/skills","hidden":false},{"title":"Security","href":"/concepts/security","hidden":false}]},{"group":"Reference","pages":[{"title":"Common Errors","href":"/reference/common-errors","hidden":false}]}]},"title":"Desktop App - spaceduck","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":[],"chunks":[]}