Stop Switching Apps to Control Your Lights! Itsyhome Puts Smart Home Control in Your Mac Menu Bar
You're in the zone. Deep work, headphones on, three Stack Overflow tabs deep. Your phone buzzes—someone turned off the living room lights again. Or worse, you need to check the doorbell camera. Now you're fumbling for your iPhone, unlocking it, hunting for the Home app, losing your flow state entirely. Sound familiar?
Here's the brutal truth: smart home control on macOS has been broken for years. Apple's Home app? iPad app masquerading as desktop software, slow to launch, clunky to navigate. Home Assistant's web interface? Browser tab number forty-seven, buried under documentation and GitHub issues. Third-party solutions? Electron wrappers that eat RAM for breakfast and look like they were designed in 2012.
What if your entire smart home lived in your menu bar—one click away, native as macOS itself, instantly responsive whether you run HomeKit, Home Assistant, or both?
Enter Itsyhome—the open-source secret that top developers and smart home enthusiasts are quietly adopting. Built with pure AppKit, engineered for speed, and designed to disappear into your workflow until you need it. This isn't another bloated dashboard. This is smart home control the way macOS intended: instant, invisible, irresistible.
Ready to reclaim your workflow? Let's dive into why Itsyhome is about to become the most-used app on your Mac.
What Is Itsyhome? The Native macOS Smart Home Revolution
Itsyhome is a native macOS menu bar application that puts complete control of your HomeKit and Home Assistant devices exactly where your cursor already lives—at the top of your screen. Created by developer Nick Ustinov, this open-source project (MIT licensed, Swift 5.9, macOS 14+) represents a fundamentally different approach to smart home interfaces.
Unlike the cross-platform abominations we've tolerated, Itsyhome is architecturally native. It uses Mac Catalyst with a dedicated AppKit plugin for the menu bar—meaning the core runs as a headless iOS/Catalyst app while the actual user interface is pure, unadulterated AppKit. The result? Sub-100ms launch times, native macOS aesthetics, and memory footprint that would make Electron developers weep.
The project is trending now for three explosive reasons:
- The Home Assistant explosion — With 500,000+ installations and growing, developers need better desktop interfaces than browser tabs
- Apple's menu bar renaissance — macOS Sonoma and beyond have made menu bar apps first-class citizens with improved APIs
- The productivity obsession — Developers are ruthless about eliminating context switches, and Itsyhome eliminates the biggest one in smart home control
The repository at github.com/nickustinov/itsyhome-macos isn't just code—it's a manifesto for how macOS utilities should be built. With comprehensive test coverage (15+ test suites covering everything from menu item behavior to WebSocket event streaming), iCloud sync, and even a dedicated CLI tool, this is production-grade software given freely to the community.
And here's the kicker: it's also on the Mac App Store with a Pro tier, meaning you can support development while getting instant updates, or build from source if you're the self-hosting type.
Key Features That Destroy the Competition
Itsyhome's feature set reads like a wishlist every smart home user has whispered into the void. Let's break down what makes this technically extraordinary:
Dual-Platform Architecture — HomeKit AND Home Assistant
Most apps force you to choose. Itsyhome unifies both ecosystems under a single SmartHomePlatform protocol. The abstraction is so clean that the menu bar UI literally cannot tell which platform it's talking to. Switch anytime in Settings → General without losing your favorites or groups.
Real-Time WebSocket Integration (Home Assistant)
No polling. No refreshing. The Home Assistant mode uses native WebSocket connections with state subscriptions, meaning your menu updates the instant a device changes—whether you triggered it or your automations did.
Menu Bar Pinning with Keyboard Shortcuts
This is insane for power users. Pin specific rooms, devices, scenes, or groups as separate menu bar items with optional keyboard shortcuts. Imagine: ⌘⇧L toggles your office lights directly, no menu opening required. Your most-used controls become muscle memory.
Advanced Device Control
We're not talking simple on/off toggles. Itsyhome exposes full device capabilities: RGB color pickers with live preview, color temperature sliders, blind position with horizontal/vertical tilt, thermostat heating/cooling thresholds, fan speed with oscillation and direction controls, garage door obstruction detection, and security system mode selection.
Pro Features That Justify Themselves
- iCloud sync across all your Macs for favorites, hidden items, groups, and shortcuts
- Live camera feeds with overlay action buttons—see who's at the door AND unlock it without switching views
- Doorbell notifications that auto-open camera panels with configurable chime sounds
- Deeplinks for Shortcuts, Alfred, Raycast, Stream Deck integration
- Webhooks/CLI with built-in HTTP server and dedicated terminal tool
- SSE event stream for real-time automation hooks
Native Design System
Inspired by shadcn/ui design tokens, the interface feels like Apple built it themselves. Custom NSMenuItem views with embedded controls, proper dark mode support, and accessibility compliance throughout.
Use Cases: Where Itsyhome Transforms Your Workflow
The Deep Work Developer
You're coding, lights too bright, focus playlist on. Without Itsyhome: find phone, unlock, open Home app, adjust brightness, get distracted by notifications. With Itsyhome: ⌘-click menu bar, drag brightness slider, back to flow in 2 seconds. The difference between maintaining deep work and shattering it.
The Multi-Platform Smart Home Tinkerer
You run Home Assistant for the power, but family uses HomeKit. Previously: two apps, two interfaces, two mental models. Itsyhome unifies both with identical controls. Set up your server once, switch platforms instantly, create groups that span ecosystems (Pro).
The Streamer/Creator
Elgato Stream Deck integration means physical buttons for your smart home. Toggle key lights for recording, adjust room ambiance for streams, trigger "On Air" scenes that dim lights and lock doors—all without leaving your streaming software.
The Automation Architect
The SSE event stream and webhook endpoints turn Itsyhome into a smart home bridge for your own scripts. Build custom automations that listen to device state changes, log energy usage, or integrate with proprietary systems. The built-in HTTP server at localhost:8423 becomes your automation playground.
The Multi-Mac Professional
iCloud sync means your carefully curated favorites, hidden devices, and custom groups follow you across work MacBook, home iMac, and studio Mac Studio. Configure once, use everywhere. No more "which Mac has the good setup?"
Step-by-Step Installation & Setup Guide
Option A: Mac App Store (Recommended for Most Users)
The fastest path to smart home nirvana:
- Visit itsyhome.app or search "Itsyhome" on the Mac App Store
- Download (free, with optional Pro subscription)
- Launch and select your platform on first run
Option B: Build From Source (Developers & Contributors)
Want to hack on it? Here's the complete setup:
Prerequisites:
- macOS 14.0 or later
- Xcode 15.0 or later
- Apple Developer account with HomeKit entitlement (for HomeKit mode)
- XcodeGen for project generation
Step 1: Install XcodeGen
brew install xcodegen
Step 2: Clone and enter the repository
git clone https://github.com/nickustinov/itsyhome-macos.git
cd itsyhome-macos
Step 3: Configure your identity
Edit project.yml with your details:
options:
bundleIdPrefix: com.yourdomain # Your reverse domain
settings:
base:
DEVELOPMENT_TEAM: YOUR_TEAM_ID # Your Apple Developer Team ID
Step 4: Generate the Xcode project
xcodegen generate
Step 5: Build and run
open Itsyhome.xcodeproj
Select the Itsyhome scheme and run on My Mac (Mac Catalyst).
Home Assistant Configuration
For Home Assistant mode, generate credentials:
- In Home Assistant: Profile → Security → Long-Lived Access Tokens → Create token
- In Itsyhome Settings: Enter your server URL and paste the token
- Entities auto-populate, grouped by device and area
Note: Cameras require the stream integration. Scene state tracking needs UI-created scenes (not YAML).
REAL Code Examples: Power User Patterns Exposed
Let's examine actual code patterns from the Itsyhome repository that showcase its technical sophistication.
Example 1: Deeplink Automation with URL Schemes
The deeplink system is elegantly designed for external automation. Here's how to control devices from terminal, Shortcuts, or any app that can open URLs:
# Toggle a specific light
open "itsyhome://toggle/Office/Spotlights"
# Turn on with specific brightness
open "itsyhome://brightness/50/Bedroom/Lamp"
# Execute a scene
open "itsyhome://scene/Goodnight"
# Control a group (room-scoped)
open "itsyhome://toggle/Office/group.All%20Lights"
# Control a global group
open "itsyhome://toggle/group.Office%20Lights"
URL structure breakdown:
itsyhome://<action>/<target>— Base pattern- Actions:
toggle,on,off,brightness,position,speed,temp,color,scene,lock,unlock,open,close,arm/stay,arm/away,arm/night,disarm - Critical: Spaces must be URL-encoded as
%20
This enables Alfred workflows, Raycast extensions, Stream Deck buttons, and iOS Shortcuts on Mac to control your entire home without opening any app.
Example 2: Webhook Server for Network-Wide Control
Enable the HTTP server in Settings → Webhooks/CLI (default port 8423), then control from any device on your network:
# Basic device control via curl
curl http://localhost:8423/toggle/Office/Spotlights
curl http://localhost:8423/on/Kitchen/Light
curl http://localhost:8423/off/Bedroom/Lamp
# Granular control with parameters
curl http://localhost:8423/brightness/50/Office/Lamp
curl http://localhost:8423/position/75/Living%20Room/Blinds
curl http://localhost:8423/speed/50/Bedroom/Ceiling%20Fan
curl http://localhost:8423/temp/22/Hallway/Thermostat
# Complex color control (hue/saturation)
curl http://localhost:8423/color/120/100/Bedroom/Light
# Security system management
curl http://localhost:8423/arm/stay/Hall/Alarm
curl http://localhost:8423/disarm/Hall/Alarm
Response format:
{"status": "success"}
{"status": "error", "message": "device not found"}
This transforms Itsyhome into a universal smart home API for your local network. Script it, integrate it, build on it.
Example 3: Real-Time Event Streaming with Server-Sent Events
The SSE endpoint is where Itsyhome becomes infrastructure. Connect and receive instant device state changes:
# Stream all device changes in real-time
curl -N http://localhost:8423/events
Sample output:
data: {"characteristic":"brightness","characteristicId":"ABC-123","device":"Desk Lamp","entityId":"light.desk_lamp","room":"Office","serviceId":"DEF-456","timestamp":"2026-02-09T14:30:00Z","type":"light","value":75}
Event fields explained:
| Field | Purpose |
|---|---|
device |
Human-readable name for logging |
room |
Location context for filtering |
type |
Device category (light, switch, thermostat, etc.) |
characteristic |
What changed (power, brightness, current-temperature) |
value |
New value (boolean, integer, or double) |
entityId |
Home Assistant entity ID (HA devices only) |
timestamp |
ISO 8601 for precise event ordering |
Use this for: Custom dashboards, energy monitoring, security logging, integration with Node-RED, or triggering external systems. The heartbeat comment every 15 seconds keeps connections alive through network hiccups.
Example 4: CLI Tool Installation
For terminal-native developers, install the dedicated CLI:
# Install via Homebrew
brew install nickustinov/tap/itsyhome
# Now use from anywhere
itsyhome toggle Office/Spotlights
itsyhome brightness 50 Bedroom/Lamp
itsyhome scene Goodnight
See itsyhome-cli for full documentation. This abstracts the HTTP calls into a proper command-line interface with better error handling and output formatting.
Example 5: Localization Pattern (For Contributors)
Itsyhome uses Swift String Catalog with structured keys. Adding new strings follows this pattern:
// AppKit menu items
item.title = String(localized: "menu.loading.homekit", defaultValue: "Loading HomeKit…", bundle: .macOSBridge)
// Settings UI
Text(String(localized: "settings.general.title", defaultValue: "General", bundle: .macOSBridge))
// Alerts with interpolation
alert.messageText = String(localized: "alert.connected.title", defaultValue: "Connected to \(name)", bundle: .macOSBridge)
Key convention: {area}.{context}.{name} — e.g., device.thermostat.heat, alert.connection_failed.title. The bundle: .macOSBridge parameter is required because the xcstrings file lives in the plugin bundle, not the main app.
Advanced Usage & Best Practices: Pro Tips from the Trenches
Optimize Your Menu Bar Real Estate
Pin only what you touch daily. Use groups for multi-device scenes ("All Office Lights"). Hide rarely-used devices in Settings. The menu stays fast when it's lean.
Keyboard Shortcut Strategy
Assign shortcuts to pinned items for true zero-click control. ⌘⇧1 for desk lamp, ⌘⇧2 for overhead, ⌘⇧0 for "leave office" scene. Muscle memory beats menus.
Home Assistant Development Setup
Run the HA demo container for testing without hardware:
docker run -d --name homeassistant -p 8123:8123 ghcr.io/home-assistant/home-assistant:stable
Create account, generate token, develop against localhost.
Debugging Like a Pro
Enable startup diagnostics:
// In macOSBridge/Utilities/StartupLogger.swift
StartupLogger.enabled = true
View live logs:
log stream --predicate 'subsystem == "com.nickustinov.itsyhome"' --level info
Webhook Debug Endpoints
When server is running, probe your setup:
curl http://localhost:8423/debug/all # Full system dump
curl http://localhost:8423/debug/Living%20Room%20Light # Specific device
curl http://localhost:8423/debug/cameras # Camera connectivity tests
iCloud Sync Strategy
Enable on primary Mac first, let it populate, then enable on others. The sync covers favorites, hidden items, groups, shortcuts, and pinned items—your entire personalization layer follows you.
Comparison with Alternatives: Why Itsyhome Wins
| Feature | Itsyhome | Apple Home App | Home Assistant Web | Other Menu Bar Apps |
|---|---|---|---|---|
| Native macOS UI | ✅ AppKit | ❌ iPad port | ❌ Browser | ⚠️ Mixed |
| Menu bar native | ✅ First-class | ❌ Full app | ❌ Bookmark | ⚠️ Basic |
| HomeKit + HA | ✅ Both | ✅ HK only | ✅ HA only | ❌ Usually one |
| Real-time updates | ✅ WebSocket/SSE | ✅ Push | ✅ WebSocket | ❌ Polling |
| Keyboard shortcuts | ✅ Per-item | ❌ None | ❌ None | ⚠️ Limited |
| CLI/HTTP API | ✅ Built-in | ❌ None | ⚠️ External | ❌ None |
| Camera in menu bar | ✅ Pro | ❌ No | ❌ No | ❌ No |
| Open source | ✅ MIT | ❌ Apple | ✅ Apache | ⚠️ Varies |
| Memory footprint | ~20MB | ~150MB | 500MB+ (browser) | ~50-100MB |
| Launch speed | Instant | 3-5s | 5-10s | 1-2s |
The verdict: Apple Home is fine for iOS, unbearable on Mac. Home Assistant web is powerful but browser-bound. Other menu bar apps lack the depth, dual-platform support, or native engineering. Itsyhome is the only solution that doesn't compromise.
FAQ: Developer Concerns Answered
Q: Does Itsyhome work with my existing Home Assistant setup?
A: Absolutely. Any HA instance with WebSocket support and long-lived access tokens. Entities auto-group by device and area. No configuration changes needed on HA side except enabling stream for cameras.
Q: Is the HomeKit entitlement really required for self-builds?
A: Yes, Apple requires it for any HomeKit-interfacing app. You need an Apple Developer account (free tier works) with HomeKit capability enabled for your App ID. The entitlement is pre-configured in Itsyhome.entitlements.
Q: How does the Pro subscription work with open source? A: Core app is free and fully functional. Pro features (cameras, iCloud sync, webhooks, deeplinks, SSE) fund continued development. You can build from source with all features enabled if you prefer—MIT license allows this.
Q: Can I contribute without knowing Swift? A: Yes! Documentation, translations via Lokalise, issue triage, and feature requests all help. For code contributions, Swift 5.9 and AppKit knowledge are needed for UI work; the webhook server and CLI are great entry points.
Q: Is there Windows/Linux support? A: Not currently. The architecture is deeply macOS-native (AppKit, Catalyst, Swift). However, the webhook API and SSE stream mean you could build cross-platform clients that talk to a running Mac instance.
Q: How do I migrate from another Home Assistant frontend? A: Simply enter your HA URL and token in Itsyhome settings. Your entities, areas, and scenes appear instantly. Run both in parallel during transition—there's no conflict.
Q: What's the performance impact on my Mac? A: Negligible. The AppKit plugin uses ~20MB RAM. WebSocket connections are efficient. No background polling—only reactive updates. You won't notice it in Activity Monitor.
Conclusion: Your Menu Bar Just Became Your Smart Home Command Center
Here's what we've uncovered: Itsyhome isn't just another smart home app—it's a fundamental reimagining of how macOS users should interact with their connected environments. By leveraging native AppKit, unifying HomeKit and Home Assistant under clean abstractions, and exposing powerful APIs through webhooks, CLI, and SSE streams, Nick Ustinov has created something that respects both your workflow and your intelligence.
The productivity gains are real: eliminate context switches, reduce physical device dependency, automate through any tool you already use. Whether you're a developer who lives in the terminal, a creator with a Stream Deck, or simply someone who wants their lights to work without hunting for their phone, Itsyhome delivers.
My take? This is how all macOS utilities should be built. Open source, native-first, API-rich, with sustainable funding through genuine value-add features. The architecture is educational, the implementation is polished, and the community is growing.
Your next step:
- Fastest path: Download from Mac App Store
- Developer path:
git clone https://github.com/nickustinov/itsyhome-macos.git - Explore more: Visit itsyhome.app and check out the free companion Itsytv for Apple TV control
Stop letting your smart home interrupt your flow. Put it where it belongs—in your menu bar, one click away.
Star the repo, file issues, contribute code, or just enjoy a better smart home experience. The future of macOS smart home control is open source, and it's already here.