Files
homassistant_chrony_addon/CLAUDE.md
T
Adam Harrison-FullerandClaude Opus 4.5 8963c16212 Initial commit: Chrony NTP Server add-on for Home Assistant
- NTP client syncs from configurable pools and servers
- NTP server mode serves time to LAN clients
- Web UI dashboard showing sync status, sources, and clients
- Supports iburst and maxsources options

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:34:06 +00:00

51 lines
1.9 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a Home Assistant add-on that provides an NTP server and client using Chrony. It includes a Flask-based web UI for monitoring synchronization status.
## Development Environment
Use the devcontainer configuration for local development. The devcontainer uses the Home Assistant add-on development image and mounts the workspace at `/mnt/supervisor/addons/local/`.
To start Home Assistant with the add-on for testing:
```bash
supervisor_run
```
Ports exposed in devcontainer:
- 7123 → 8123 (Home Assistant)
- 7357 → 4357 (debug)
## Architecture
**Container Runtime**: Alpine-based image using s6-overlay for process supervision.
**Services (s6-rc.d)**:
- `chrony`: Main NTP daemon - reads `/data/options.json`, generates `/etc/chrony/chrony.conf`, runs `chronyd -d`
- `webui`: Flask app on port 8099 (or INGRESS_PORT env var) - provides status dashboard and API
**Configuration Flow**: Home Assistant writes add-on config to `/data/options.json``chrony/run` script parses with `jq` → generates chrony.conf → starts chronyd
**Web UI** (`rootfs/var/www/`):
- `app.py`: Flask app with routes for dashboard and API endpoints (`/api/status`, `/api/options`, `/api/force-sync`, `/api/burst`)
- Uses `chronyc -c` commands to get machine-readable status output
- Templates use Jinja2 with Home Assistant-style dark theme
## Key Files
- `config.yaml`: Add-on metadata, schema, ports, privileges (SYS_TIME required for time sync)
- `build.yaml`: Architecture-specific base images
- `Dockerfile`: Installs chrony, jq, python3, py3-flask
- `rootfs/etc/s6-overlay/s6-rc.d/*/run`: Service startup scripts
## Add-on Configuration Schema
Options defined in `config.yaml`:
- `ntp_servers`: List of `{server: str, iburst: bool?}`
- `allow_clients`: List of CIDR networks
- `enable_ntp_server`: bool
- `log_level`: debug|info|warning|error