https://github.com/commandertvis/hue-manager
Self-hosted daylight automation and control for Philips Hue. Compose Multiplatform clients + MCP
https://github.com/commandertvis/hue-manager
android compose-multiplatform graalvm home-automation kotlin kotlin-multiplatform mcp model-context-protocol philips-hue quarkus self-hosted smart-home
Last synced: 1 day ago
JSON representation
Self-hosted daylight automation and control for Philips Hue. Compose Multiplatform clients + MCP
- Host: GitHub
- URL: https://github.com/commandertvis/hue-manager
- Owner: CommanderTvis
- Created: 2026-01-17T16:25:29.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-06-23T17:19:23.000Z (19 days ago)
- Last Synced: 2026-06-23T18:08:14.304Z (19 days ago)
- Topics: android, compose-multiplatform, graalvm, home-automation, kotlin, kotlin-multiplatform, mcp, model-context-protocol, philips-hue, quarkus, self-hosted, smart-home
- Language: Kotlin
- Homepage:
- Size: 866 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Hue Manager
Self-hosted daylight automation and control for Philips Hue, with Desktop, Web, and
Android clients. It keeps an all-day lighting schedule running without manual
re-triggering and provides lamp control independent of the phone app.
## Features
- Daylight automation: lamps track the sun for the configured location — warm white when
it is dark, off when the sun is up, and an orange evening/night profile after a
configurable pseudo-sunset.
- Automation resumes on its own after a lamp is switched off and back on.
- Manual changes apply for one hour, then revert to the schedule.
- Desktop (JVM), Web (Wasm), and Android clients, kept in sync in real time.
- Lamps in an active Hue Sync entertainment session are left untouched until it ends.
- MCP endpoint for reading and setting lamp state from an AI assistant.
- The server is compiled to a GraalVM native image (~86 MB binary, ~45 MB RAM at idle).
## Architecture
```mermaid
graph LR
subgraph You
UI[Desktop / Web / Android]
Claude[Claude / MCP client]
end
Server[Quarkus server
native binary
automation · cache · MCP]
Hydra[Ory Hydra
OAuth2]
Cloud[Philips Cloud]
Bridge[Hue Bridge]
UI -->|HTTPS REST| Server
Claude -->|MCP + OAuth| Server
Server -->|token validation| Hydra
Server -->|OAuth2 / REST| Cloud
Cloud --> Bridge
style Server fill:#fff4e1
style Hydra fill:#ffe7e7
style Cloud fill:#f0f0f0
style Bridge fill:#ffe1f5
```
The server reaches the bridge through Philips Cloud over OAuth2; no local network access,
port forwarding, or VPN is required. MCP clients authenticate via OAuth (Ory Hydra); the
web and desktop clients use a password.
## Getting started
```bash
cp .env.example .env # set password, location, timezone, and Hue OAuth app credentials
docker compose up -d
```
Then open the app and authorize the bridge once (Philips login, then press the bridge
link button). HTTPS via Caddy is required for Hue's OAuth2 — see `Caddyfile.example`.
Desktop (macOS): `brew install --cask commandertvis/hue-manager/hue-manager`
See `.env.example` for configuration and `CLAUDE.md` for the technical reference.