Prerequisites
Before you begin, ensure you have the following installed:- macOS - Required for Swift compilation and native integrations
- Node.js 22+ - Check your version with
node -v - npm - Comes bundled with Node.js
- Xcode Command Line Tools - Required for the Swift compiler (
swiftc) - Homebrew - Used at runtime to resolve
gitandnpmfor extension installation
System Dependencies
1
Install Xcode Command Line Tools
If you don’t have Xcode Command Line Tools installed:Verify Swift is available:
2
Install Homebrew
SuperCmd uses Homebrew-resolved Verify installation:
git to clone extensions from GitHub. If you don’t have Homebrew:Getting Started
1
Clone the repository
2
Install dependencies
electron-builder install-app-deps automatically via the postinstall hook.3
Build native modules
dist/native/:color-picker- Native macOS color pickersnippet-expander- Text snippet expansionhotkey-hold-monitor- Global hotkey detectionspeech-recognizer- Speech-to-text recognizermicrophone-access- Microphone permission helperinput-monitoring-request- Input monitoring permission helperwindow-adjust- Window management utilities
4
Run in development mode
- TypeScript watch for main process
- Vite dev server for renderer
- Electron app in development mode
The environment variable
SUPERCMD_OPEN_DEVTOOLS_ON_STARTUP=1 is set automatically in dev mode to open DevTools on launch.macOS Permissions
SuperCmd requires several macOS permissions to function properly. You’ll be prompted on first use:You may need to restart the app after granting permissions. If features don’t work, check System Settings → Privacy & Security.
Development Workflow
Making Changes
-
Make your changes in the appropriate directory:
src/main/- Electron main processsrc/renderer/- React UI and Raycast API shimssrc/native/- Swift native helpers
- The dev server will hot-reload renderer changes automatically
- Main process changes require restarting the Electron app
-
Native module changes require running
npm run build:nativeagain
Testing Extensions
When working on the Raycast API compatibility layer:- Test with popular Raycast extensions from the store
- API shims are in
src/renderer/src/raycast-api/ - Reference the Raycast API docs
- See CLAUDE.md for the complete API implementation status
Troubleshooting
swiftc: command not found
swiftc: command not found
Run
xcode-select --install and restart your terminal. Verify with swiftc --version.npm install fails on native modules
npm install fails on native modules
Ensure Xcode Command Line Tools are installed and up to date:
App launches but hotkeys don't work
App launches but hotkeys don't work
Grant Input Monitoring permission (not just Accessibility) in System Settings → Privacy & Security and restart the app.
Window management doesn't work
Window management doesn't work
Grant Accessibility permission. The
window-adjust.swift module checks AXIsProcessTrusted().Extensions fail to install
Extensions fail to install
Verify Homebrew is installed with
brew --version. SuperCmd needs Homebrew-resolved git to clone extensions from GitHub.node-gyp build errors
node-gyp build errors
Check your Node.js version with
node -v — requires 22+. Try deleting node_modules and running npm install again.Apple Silicon (M1/M2/M3/M4) issues
Apple Silicon (M1/M2/M3/M4) issues
Ensure you’re running the arm64 version of Node.js, not the x64 version via Rosetta. Check with:Should output
arm64.Native features missing after npm run dev
Native features missing after npm run dev
Run
npm run build:native first. The dev script doesn’t compile Swift binaries automatically.Next Steps
- Learn about the project architecture
- Understand build commands and packaging
- Read the contributing guidelines