Overview
Busy Mode is a desktop plugin for Hermes Agent (Electron) that adds a visible busy-mode toggle to the composer controls โ closing the gap between the CLI /busy command and the desktop UI. Built by Woodsy as a contribution to the open-source Hermes Agent project by Nous Research.
When Hermes is working, a new icon button appears in the composer controls row (between dictation and steer). Click to cycle through three modes. Toast notification confirms each change.
Modes
| Mode | Icon | Behavior |
|---|---|---|
| Queue (default) | ||
| Steer | ||
| Interrupt |
Demo
Animated demo GIF โ showing the busy mode button in action on the Hermes desktop composer.
Installation
Busy Mode is included in the surfdib fork of hermes-agent on the feature/busy-mode-selector branch:
# Clone the surfdib fork
git clone https://github.com/surfdib/hermes-agent.git
cd hermes-agent
# Switch to the busy mode branch
git checkout feature/busy-mode-selector
# Build the desktop app
cd apps/desktop
npm install
npm run build
GitHub
- Repository: surfdib/hermes-agent
- Branch: feature/busy-mode-selector
- Commit: feat(desktop): add busy mode selector to composer controls (75aaf02)
- Upstream: NousResearch/hermes-agent
File Changes
3 files changed, +/-60 lines:
| File | Change |
|---|---|
apps/desktop/src/store/busy-mode.ts |
|
apps/desktop/src/app/chat/composer/controls.tsx |
|
apps/desktop/src/app/chat/composer/index.tsx |
How It Works
Uses nanostores for state management. The key integration is in submitDraft() inside composer/index.tsx:
} else if (payloadPresent) {
const mode = $busyMode.get()
if (mode === 'steer' && canSteer) {
steerDraft()
} else if (mode === 'interrupt') {
triggerHaptic('cancel')
void Promise.resolve(onCancel()).then(() => {
const submittedAttachments = cloneAttachments(attachments)
triggerHaptic('submit')
clearDraft()
clearComposerAttachments()
dispatchSubmit(text, submittedAttachments)
})
} else {
queueCurrentDraft()
}
}
Includes haptic feedback on mode changes and toast notifications confirming the active mode. Closes GitHub issue #1804.
Changelog
| Version | Changes |
|---|---|
| 1.0 |
Author: Woodsy (surfdib) ยท License: MIT ยท Status: Ready for testing
