A native iOS app for Zigbee2MQTT.
Shellbee connects directly to a Zigbee2MQTT bridge over WebSocket and gives you a SwiftUI interface for monitoring and controlling your Zigbee network.
- Connect to local or remote bridges (
ws://andwss://), with saved servers and Bonjour discovery for.localhosts. - Home view with bridge status, coordinator info, network details, and device/group counts.
- Device detail screens with controls generated from Z2M exposes: on/off, brightness, color, covers, fans, climate, locks, and sensor readings.
- Groups and scenes: browse, edit members, rename, delete.
- Bridge settings screens for MQTT, serial, network, OTA, logging, availability, health checks, Home Assistant, and frontend options.
- Logs view and bundled offline device documentation.
- Live Activities for connection state and OTA progress.
Core/Networking WebSocket client, routing, discovery
Core/Models Codable types for bridge, devices, groups, logs, OTA
Core/Store AppStore — single source of truth for UI state
App/ AppEnvironment, navigation, root flow
Features/ Home, Devices, Groups, Logs, Settings
LiveActivities/ ActivityKit coordination
Shared/ Reusable controls
Z2MWebSocketClientowns the socket.Z2MMessageRoutermaps{topic, payload}messages to typed events.AppStoreholds mutable state;AppEnvironmentwires it together.
- Xcode with the iOS 26 SDK
- A running Zigbee2MQTT instance with WebSocket access and a valid token
- Clone the repo and open
Shellbee.xcodeproj. - For simulator builds, run the
Shellbeetarget as-is. - For device builds or archives, copy
Config/BuildSettings.local.example.xcconfigtoConfig/BuildSettings.local.xcconfigand setAPP_DEVELOPMENT_TEAMand bundle identifiers. - Launch the app and add your Zigbee2MQTT server.
Signing values stay in the gitignored local xcconfig. Auth tokens are stored in Keychain-backed storage, not UserDefaults.
AGPL-3.0. See LICENSE.