DSH Desktop’s philosophy is “everything is a plugin”. When debugging or running agents, developers often encounter permission requests that require switching back to the main window, or conversations that require opening a specific tool and interrupt the workflow. Jarvis is a persistent desktop floating-window assistant, and also a stateful desktop pet. It uses a Metal particle orb as its medium, allowing users to quickly approve permissions and summon a chat panel at any time with a global hotkey, closing the interaction loop at the desktop level. This project is maintained by CroissanTTs, the current version is 0.7.1, and it uses the MIT license.
Core Features¶
Permission Approval
When DSH displays a permission request, the floating window shows an approval card. The panel races the DSH main window; the first response takes effect. It supports one-click selection of “Allow / Deny / Always Allow (this workspace)”.
Floating Chat
The default global hotkey ⌃⌥J can summon a quick input bar so you can start a conversation at any time. Chat history is embedded in the panel; expand the input area to view it.
Audio Greeting
On startup, Jarvis greets you with audio. The greeting text and speaker are configurable. Hover over the orb to mute.
Desktop Presence
Its body is a Metal particle orb. It has five state animations: idle, thinking, speaking, waiting, and error. It supports edge-docking and morphing to collapse, and can be woken by hovering.
Installation and Enabling¶
The plugin provides installation from source. The host environment should be Node.js 22.18+; the panel requires macOS 14+ and the Swift 6 toolchain.
- Build the project from the repository root:
npm ci
npm run build
(cd macos && ./build.sh)
- In the
package.jsonof the DSH profile you are using, merge the following entries (replace the path with the absolute path to this repository):
{
"dependencies": {
"dsh-harness-jarvis": "link:/absolute/path/to/dsh-harness-jarvis"
},
"dsh": {
"profile": { "bundles": ["dsh-harness-jarvis"] }
}
}
- Run
pnpm installin the profile directory to resolve thelink:dependency.
Typical Usage¶
After restarting DSH, a floating orb appears on the screen. Press ⌃⌥J to summon the input bar and start a conversation. When DSH displays a permission approval, the panel shows an approval card, and you can click it to handle the request. Hover over the orb to control the audio; expand the input area to view chat history.
Scenarios and Notes¶
The native panel of this plugin targets macOS 14+ only. Security review and real-device acceptance are not yet complete; the plugin does not currently claim to have passed release security acceptance.
Data Storage
Approval records, logs, and voice cache are stored locally by default in ~/.dsh/jarvis, with no cloud storage.
Privacy and Permissions
Local storage does not mean offline processing: the configured model service receives the conversation context, and the built-in edge-tts sends the spoken text to Microsoft’s speech service. The plugin does not request danger-full-access; the hotkey uses Carbon RegisterEventHotKey and does not require Accessibility key monitoring; currently there is no microphone recording.
Conclusion¶
Jarvis aims to reduce switching costs in everyday DSH interaction through its floating-window and desktop-pet form. It does not change the core logic of DSH; instead, it provides a persistent, visual interaction layer. Related documentation and source code are available on its directory page and GitHub repository.