Apple's Home app shows the current state of your accessories — homechronicle shows you everything that happened and when. A self-hosted dashboard with a searchable timeline, activity analytics, and device management.
Scrollable, day-grouped event feed with auto-refresh. Filter by room, accessory, characteristic, or date range.
Daily trends, hourly distribution charts, room breakdowns, weekday and monthly heatmaps at a glance.
Complete list of paired accessories with room grouping, activity status indicators, bridge info, and event counts.
Discover, pair, and configure accessories directly from the UI. Bulk pairing, PIN vault, and bridge child expansion.
Light and dark modes with six color themes. Customize the look to match your preference.
Add to your home screen on iOS or Android. Works like a native app with responsive mobile-first design.
Pair and monitor Matter devices directly from the Setup UI. Built into the listener image with zero extra configuration.
Single docker run deploys everything. Or use Docker Compose for fine-grained control. No build steps required.
Optional login with invite-only members, admin and member roles, and DB-backed sessions you can review and revoke per device.
SMTP-powered user invitations, password resets, and email alert delivery. Configure via environment variables or the Settings UI.
Drag, resize, and hide analytics panels. Choose from 12 default and 12 optional panels; layout is saved per account.
A live, scrollable timeline grouped by day shows every state change across your home. Scene grouping bundles events that fire within seconds of each other.
The activity heatmap shows event density by device and time of day. Click any cell to jump directly to that moment in the timeline. Combined with powerful search filters, finding any event is instant.
Event-count trend line across the last 7, 30, or 90 days. Spot long-term patterns and busy periods at a glance.
Per-room event counts ranked highest first, covering 7, 30, or 90 days. Instantly see which areas of your home are busiest.
Hourly event distribution across the full day over the last 30 days (local time). Find your home's natural activity rhythm.
Accessories that fired events inside your configured quiet-hours window are surfaced here so unexpected activity doesn't go unnoticed.
Auth is opt-in via AUTH_ENABLED. The sign-in screen appears only when login is on; disable it to restore the single-operator mode.
Admins can invite members by email, promote or demote roles, and disable accounts. No public registration — every account comes from an invite.
Each user can see their own login sessions — device user agent and IP captured at login — and revoke any individually.
Email is optional. When an SMTP server is configured, it powers three features: user invitations (the invite link doubles as email verification), password reset links, and the email delivery channel for alert rules.
A live inventory of all paired accessories, organized by room. At a glance, see which devices are active, which are stale, and how many events each has generated.
No command line needed. Discover accessories on your network, enter PINs, and pair directly from the web UI. Homebridge support lets you pair a bridge once and log all child accessories automatically.
Switch between light and dark modes, or let the app follow your system preference. Choose from eight color themes to personalize the interface.
docker run -d \ --name homechronicle \ --network host \ -e WEB_PORT=3000 \ -v hc-db:/var/lib/postgresql/data \ -v hc-data:/app/listener/data \ -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro \ havuq/homechronicle-standalone
# Update placeholder secrets before running:
# - POSTGRES_PASSWORD
# - API_TOKEN
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: homekit
POSTGRES_PASSWORD: change-this-strong-password
POSTGRES_DB: homekit_events
TZ: UTC
volumes:
- postgres-data:/var/lib/postgresql/data
# Schema is managed by listener migrations — no init.sql mount needed
ports:
- "127.0.0.1:5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U homekit -d homekit_events"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
listener:
image: havuq/homechronicle-listener:latest
restart: unless-stopped
network_mode: host
environment:
DATABASE_URL: postgresql://homekit:change-this-strong-password@127.0.0.1:5432/homekit_events
API_PORT: "3001"
NODE_ENV: production
API_TOKEN: replace-with-openssl-rand-hex-32
TZ: UTC
ALERTS_ENABLED: "false"
volumes:
- ./listener/data:/app/data
- /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro
depends_on:
postgres:
condition: service_healthy
web:
image: havuq/homechronicle-web:latest
restart: unless-stopped
ports:
- "3000:80"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
LISTENER_HOST: host.docker.internal
LISTENER_PORT: "3001"
API_TOKEN: replace-with-openssl-rand-hex-32
TZ: UTC
volumes:
postgres-data:
# Full compose options:
# https://gitlab.com/havuq/homechronicle/blob/main/docker-compose.yml
One docker run on any machine — NAS, Raspberry Pi, or desktop.
Open the Manage tab, scan your network, and pair accessories with their PINs.
Events stream in automatically. Explore the timeline, dashboard, and analytics.