A macOS menu bar app for controlling your IKEA Dirigera smart home hub.
Toggle lights, adjust brightness and color, and glance at environment sensor readings — all without opening the Home app.
This is perfect if you just want to toggle a single IKEA light with one click on your Macbook. Or if you have an IKEA hub and no Apple hub (e.g. HomePod, Apple TV) but you still want to control your smart home from macOS.
It also takes all your room configs and settings from the IKEA smart home instead of having to set up another Matter hub.
- macOS 15 or later
- An IKEA Dirigera hub on your local network
Install with Homebrew:
brew install --cask bxt/dirigenta-ui/dirigenta-uiThis also enables you to update the app automatically.
Manual installation / update:
- Download the latest
dirigenta-ui-vX.X.X.zipfrom Releases - Unzip and move
dirigenta-ui.appto/Applications - Run
xattr -r -d com.apple.quarantine /Applications/dirigenta-ui.app(macOS blocks unsigned apps by default; this one-time step bypasses that) - You can optionally verify the integrity of the download by running
gh attestation verify dirigenta-ui-vX.X.X.zip --repo bxt/dirigenta-ui
- Toggle lights on and off from the menu bar, control brightness and color
- Toggle plugs/outlets on and off from the menu bar, keep track of power consumption
- Pin a light or plug to the status bar icon for one-click toggling
- Environment sensors — temperature, humidity, CO₂, and PM2.5 readings with out-of-range highlights
- Open/close sensors — see if and how long e.g. windows have been open
- Window notifications – notifications when windows have been open a while or should be opened, factoring in CO₂, temperature, and humidity from nearby sensors
- Terminal notifications — flash lights red at the end of a CLI command (see below)
- Room pinning – you can now pin a room to a persistent third tab
- Multiple hubs — pair more than one (e.g. for several homes or while travelling) and switch between them from the dropdown in the menu header. Pinned light, pinned room, and last-known IP are remembered per hub
- Demo hub: add a built-in fake hub from Settings to try the app without any IKEA hardware: lights toggle, sensors flip, and the env-sensor readings drift on a timer
- Disco mode to make lights switch colors in a groovy fashion
- Automatic hub discovery via mDNS (no manual IP entry needed)
- Real-time updates over WebSocket
- Devices other than lights and sensors listed as well, with showing state for water leak detectors and motion sensors
- Battery status and reachability for all devices
dirigenta-ui can flash your lights as a visual notification at the end of a long-running terminal command — handy for builds, tests, or deploys that run in the background.
Pass --notify to the app binary. It posts an IPC message to the already-running instance and exits immediately (< 100 ms). The running app then:
- Flashes the pinned light if one is set, otherwise flashes all lights that are currently on
- Lights that were off are turned on for the flash and switched back off afterwards
- Color lights turn red at full brightness for 1 second, then restore their previous color, temperature, and brightness
- White-spectrum and dimmable lights flash at full brightness for 1 second, then restore their previous level
The app must be running and connected to the hub for the notification to have any effect. You have to turn on the feature in the app's settings first.
# Run after any command
your-long-running-command && \
/Applications/dirigenta-ui.app/Contents/MacOS/dirigenta-ui --notify# Notify whether the command succeeded or failed
your-long-running-command; \
/Applications/dirigenta-ui.app/Contents/MacOS/dirigenta-ui --notifyAdd this to your ~/.bashrc or ~/.zshrc for a short alias:
alias notify-lights='/Applications/dirigenta-ui.app/Contents/MacOS/dirigenta-ui --notify'Then use it like:
./long-running-build.sh && notify-lightsgit clone <repo-url>
open dirigenta-ui.xcodeprojSelect the dirigenta-ui scheme and press Run (⌘R). Xcode will build and launch the app. No dependencies beyond the standard SDK.
To run tests:
xcodebuild test \
-project dirigenta-ui.xcodeproj \
-scheme dirigenta-ui \
-destination 'platform=macOS' \
-skip-testing:dirigenta-uiTests/MDNSDiscoveryTests/testDiscoverHubOnLocalNetwork \
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NOPush a version tag and GitHub Actions builds and publishes the release automatically:
VERSION=1.2.0 # adjust this
git tag v$VERSION && git push --tags
# Wait for the release to appear on https://github.com/bxt/dirigenta-ui/releases and edit the description there, then:
brew bump-cask-pr --version $VERSION bxt/dirigenta-ui/dirigenta-uiEverything stays on your local network. The app communicates only with your Dirigera hub over HTTPS/WebSocket. No data leaves your home. The access token is stored in the macOS Keychain.
This was made possible by Leggin's Python dirigera lib which has e.g. some auth code and lpgera's TypeScript dirigera lib where I e.g. found the public key and other efforts made by the community.
This application is an independent, unofficial project and is in no way affiliated with, endorsed by, sponsored by, or associated with IKEA Systems B.V., Inter IKEA Systems B.V., or any of their subsidiaries or affiliates. All IKEA trademarks, product names, and brand identifiers are the property of their respective owners.
This app was built entirely through vibe coding — an AI-assisted, intuition-driven development process — and makes no guarantees regarding functionality, accuracy, or fitness for any particular purpose. Use at your own risk.