{"id":48592333,"url":"https://github.com/csontikka/ha-syncthing-extended","last_synced_at":"2026-04-16T22:01:29.994Z","repository":{"id":349414673,"uuid":"1202247351","full_name":"Csontikka/ha-syncthing-extended","owner":"Csontikka","description":"Home Assistant integration for Syncthing — sensors, controls and services for your Syncthing instance","archived":false,"fork":false,"pushed_at":"2026-04-08T20:27:16.000Z","size":528,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-08T20:27:57.174Z","etag":null,"topics":["hacs","home-assistant","homeassistant-integration","syncthing"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Csontikka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-05T19:44:26.000Z","updated_at":"2026-04-08T20:27:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Csontikka/ha-syncthing-extended","commit_stats":null,"previous_names":["csontikka/ha-syncthing","csontikka/ha-syncthing-extended"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Csontikka/ha-syncthing-extended","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csontikka%2Fha-syncthing-extended","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csontikka%2Fha-syncthing-extended/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csontikka%2Fha-syncthing-extended/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csontikka%2Fha-syncthing-extended/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Csontikka","download_url":"https://codeload.github.com/Csontikka/ha-syncthing-extended/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Csontikka%2Fha-syncthing-extended/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31905895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacs","home-assistant","homeassistant-integration","syncthing"],"created_at":"2026-04-08T20:03:53.399Z","updated_at":"2026-04-16T22:01:29.987Z","avatar_url":"https://github.com/Csontikka.png","language":"Python","funding_links":["https://buymeacoffee.com/Csontikka"],"categories":[],"sub_categories":[],"readme":"# Syncthing Extended — Home Assistant Integration\n\n![Syncthing](https://raw.githubusercontent.com/Csontikka/ha-syncthing-extended/master/images/banner.svg)\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/Csontikka/ha-syncthing-extended?style=plastic)\n[![HACS Custom](https://img.shields.io/badge/HACS-Custom-41BDF5.svg?style=plastic)](https://github.com/hacs/integration)\n[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg?style=plastic)](https://github.com/Csontikka/ha-syncthing-extended/blob/master/LICENSE)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=Csontikka_ha-syncthing-extended\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=Csontikka_ha-syncthing-extended)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=Csontikka_ha-syncthing-extended\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=Csontikka_ha-syncthing-extended)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Csontikka_ha-syncthing-extended\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=Csontikka_ha-syncthing-extended)\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-donate-yellow.svg?style=plastic)](https://buymeacoffee.com/Csontikka)\n\n\u003e **Note:** For best viewing experience, read this documentation on [GitHub](https://github.com/Csontikka/ha-syncthing-extended).\n\nFull-featured Home Assistant integration for [Syncthing](https://syncthing.net). Monitor folder sync status, device connectivity and traffic, trigger rescans, and pause/resume folders and devices — all from your HA dashboard. Supports multiple Syncthing instances simultaneously.\n\n## Why this instead of the built-in integration?\n\nThe core Syncthing integration creates only one sensor per folder showing its state. That's it.\n\nThis integration adds:\n\n| Feature | Built-in | This |\n|---------|----------|------|\n| Folder state sensor | ✅ | ✅ |\n| Folder completion % | ⚠️ attr only | ✅ dedicated sensor |\n| Bytes / files needed | ⚠️ attr only | ✅ dedicated sensor |\n| Folder size \u0026 file count | ⚠️ attr only | ✅ dedicated sensor |\n| Pull error detection | ⚠️ attr only | ✅ dedicated sensor |\n| Last scan / last file | ❌ | ✅ |\n| Device online/offline | ❌ | ✅ |\n| Device connection type | ❌ | ✅ |\n| Per-device traffic stats | ❌ | ✅ |\n| Total traffic sensors | ❌ | ✅ |\n| Scan trigger (button + service) | ❌ | ✅ |\n| Pause / resume folder | ❌ | ✅ |\n| Pause / resume device | ❌ | ✅ |\n| Multi-instance support | ❌ | ✅ |\n| UI config (no YAML) | ✅ | ✅ |\n\n## Screenshots\n\n**System device** — version, uptime, running state, total traffic and scan button:\n\n![Syncthing system device](https://raw.githubusercontent.com/Csontikka/ha-syncthing-extended/master/images/device_main.png)\n\n**Folder** — sync state, completion, controls and all folder sensors:\n\n![Syncthing folder](https://raw.githubusercontent.com/Csontikka/ha-syncthing-extended/master/images/folder_syncthing_photos.png)\n\n**Remote device** — connectivity, traffic, pause/resume controls and diagnostic sensors:\n\n![Syncthing remote device](https://raw.githubusercontent.com/Csontikka/ha-syncthing-extended/master/images/device_virtualwin10.png)\n\n## Installation\n\n### HACS (recommended)\n\n1. Open HACS → Integrations\n2. Click the three-dot menu → **Custom repositories**\n3. Add `https://github.com/Csontikka/ha-syncthing-extended` with category **Integration**\n4. Click **Download**\n5. Restart Home Assistant\n\nAfter setup, the integration appears in Settings → Integrations:\n\n![Integration card](https://raw.githubusercontent.com/Csontikka/ha-syncthing-extended/master/images/integration_card_v015.png)\n\n### Manual\n\n1. Copy `custom_components/syncthing_extended/` to your HA `config/custom_components/` directory\n2. Restart Home Assistant\n\n## Configuration\n\n1. Go to **Settings → Integrations → Add Integration**\n2. Search for **Syncthing**\n3. Enter your connection details:\n\n![Config flow](https://raw.githubusercontent.com/Csontikka/ha-syncthing-extended/master/images/config_flow.png)\n\n| Parameter | Required | Default | Description |\n|-----------|----------|---------|-------------|\n| Host | Yes | — | IP address or hostname of the Syncthing instance |\n| Port | Yes | `8384` | Syncthing GUI/API port |\n| API Key | Yes | — | Found in Syncthing UI: Actions → Settings → API Key |\n| Use HTTPS | No | `false` | Connect using HTTPS instead of HTTP |\n| Verify SSL | No | `false` | Validate the HTTPS certificate (requires Use HTTPS) |\n| Update interval | No | `30` | How often to poll for updates, in seconds (10–300) |\n\n### Finding your API key\n\n![Syncthing API key location](https://raw.githubusercontent.com/Csontikka/ha-syncthing-extended/master/images/syncthing_settings_apikey.png)\n\n- **Syncthing UI**: Actions → Settings → right panel → API Key\n- **Linux**: `~/.local/state/syncthing/config.xml` → `\u003cgui\u003e\u003capikey\u003e…\u003c/apikey\u003e\u003c/gui\u003e`\n- **Proxmox LXC**: `/root/.local/state/syncthing/config.xml`\n\n### Remote access requirement\n\nSyncthing must listen on a non-localhost address. If bound to `127.0.0.1:8384`, change it to `0.0.0.0:8384` in Syncthing GUI (Settings → GUI Listen Addresses) and restart Syncthing.\n\n### Options\n\nAfter setup you can change the **Update interval** via **Settings → Integrations → Syncthing → Configure**.\n\n### Re-authentication\n\nIf your API key changes, Home Assistant will show a re-authentication prompt. Click **Re-authenticate** and enter the new API key — no need to delete and re-add the integration.\n\n## Entities\n\n### System (one per Syncthing instance)\n\n| Entity | Type | Description |\n|--------|------|-------------|\n| Running | Binary sensor | `on` when Syncthing is reachable |\n| Version | Sensor | Syncthing version string |\n| Uptime | Sensor | Uptime in seconds |\n| Device ID | Sensor | This instance's Syncthing device ID |\n| Total downloaded | Sensor | Total bytes received (all devices) |\n| Total uploaded | Sensor | Total bytes sent (all devices) |\n\n### Per folder\n\n| Entity | Type | Description |\n|--------|------|-------------|\n| State | Sensor | `idle` / `syncing` / `scanning` / `error` |\n| Completion | Sensor | Sync completion percentage |\n| Bytes needed | Sensor | Bytes remaining to sync |\n| Files needed | Sensor | File count remaining to sync |\n| Error | Binary sensor | `on` when pull errors \u003e 0 |\n| Syncing | Binary sensor | `on` when state is `syncing` |\n| Paused | Binary sensor | `on` when folder is paused |\n| Scan | Button | Trigger immediate rescan |\n| Pause | Button | Pause this folder |\n| Resume | Button | Resume this folder |\n| Total size | Sensor | Total folder size |\n| Total files | Sensor | Total file count |\n| Pull errors | Sensor | Number of pull errors |\n| Last scan | Sensor | Timestamp of last folder scan |\n| Last synced file | Sensor | Filename of last synced file |\n\n### Per device (sync partners)\n\n| Entity | Type | Description |\n|--------|------|-------------|\n| Connected | Binary sensor | `on` when device is online |\n| Paused | Binary sensor | `on` when device is paused |\n| Downloaded | Sensor | Bytes received from this device |\n| Uploaded | Sensor | Bytes sent to this device |\n| Pause | Button | Pause sync with this device |\n| Resume | Button | Resume sync with this device |\n| Connection type | Sensor | `tcp-client`, `relay-server`, `quic-client`, etc. |\n| Address | Sensor | Remote IP:port |\n| Client version | Sensor | Syncthing version on remote device |\n| Last seen | Sensor | Timestamp of last connection |\n\n## Services\n\n| Service | Parameters | Description |\n|---------|-----------|-------------|\n| `syncthing_extended.scan_folder` | `folder_id` | Trigger rescan of one folder |\n| `syncthing_extended.scan_all` | — | Trigger rescan of all folders |\n| `syncthing_extended.pause_folder` | `folder_id` | Pause a specific folder |\n| `syncthing_extended.resume_folder` | `folder_id` | Resume a specific folder |\n| `syncthing_extended.pause_device` | `device_id` | Pause sync with a device |\n| `syncthing_extended.resume_device` | `device_id` | Resume sync with a device |\n| `syncthing_extended.pause_all` | — | Pause all devices |\n| `syncthing_extended.resume_all` | — | Resume all devices |\n\n### Example automation\n\n```yaml\nautomation:\n  - alias: \"Alert when Syncthing folder has errors\"\n    trigger:\n      - platform: state\n        entity_id: binary_sensor.syncthing_extended_folder_documents_error\n        to: \"on\"\n    action:\n      - service: notify.mobile_app\n        data:\n          message: \"Syncthing: Documents folder has sync errors!\"\n\n  - alias: \"Scan after backup completes\"\n    trigger:\n      - platform: state\n        entity_id: sensor.backup_status\n        to: \"completed\"\n    action:\n      - service: syncthing_extended.scan_all\n\n  - alias: \"Alert when device offline for 1 hour\"\n    trigger:\n      - platform: state\n        entity_id: binary_sensor.syncthing_extended_device_nas_connected\n        to: \"off\"\n        for: \"01:00:00\"\n    action:\n      - service: notify.mobile_app\n        data:\n          message: \"Syncthing: NAS has been offline for 1 hour\"\n```\n\n## Performance \u0026 Database Tips\n\nThis integration creates many entities per folder and device. If you notice increased database size, we recommend the following:\n\n### Disable unused entities\n\nWe recommend disabling entities you don't actively use:\n**Settings → Devices \u0026 Services → Syncthing** → click the device → find the entity → toggle it off.\nDisabled entities are not polled and generate no history.\n\n### Exclude from recorder\n\nHigh-frequency numeric sensors (traffic counters, uptime, bytes needed) can accumulate a lot of history. If you only need the current values and don't require historical data, we recommend excluding them from the recorder in `configuration.yaml`:\n\n```yaml\nrecorder:\n  exclude:\n    entity_globs:\n      - sensor.syncthing_extended_*_in_bytes\n      - sensor.syncthing_extended_*_out_bytes\n      - sensor.syncthing_extended_*_uptime\n      - sensor.syncthing_extended_*_bytes_needed\n```\n\nOr exclude the entire integration and re-include only what you want to track:\n\n```yaml\nrecorder:\n  exclude:\n    entity_globs:\n      - sensor.syncthing_extended_*\n      - binary_sensor.syncthing_extended_*\n  include:\n    entity_globs:\n      - binary_sensor.syncthing_extended_*_running\n      - binary_sensor.syncthing_extended_*_error\n      - sensor.syncthing_extended_*_state\n```\n\n## Troubleshooting\n\n### Diagnostics Export\n\nDownload the integration diagnostics file for bug reports — it includes integration state and the last 1000 debug log entries.\n\n1. Go to **Settings → Devices \u0026 Services**\n2. Find **Syncthing** → click the integration\n3. Click the **three-dot menu** → **Download diagnostics**\n4. Attach the `.json` file to your [GitHub issue](https://github.com/Csontikka/ha-syncthing-extended/issues)\n\n### Debug Logs\n\nTo see detailed logs in the HA log viewer, add to `configuration.yaml`:\n\n```yaml\nlogger:\n  default: info\n  logs:\n    custom_components.syncthing_extended: debug\n```\n\nThis enables per-request API traces, coordinator update summaries, and button/service call tracking.\n\n## Removal\n\n1. Go to **Settings → Devices \u0026 Services → Syncthing**\n2. Click the three-dot menu → **Delete**\n3. Optionally remove `custom_components/syncthing_extended/` and restart HA\n\n## Supported languages\n\nAvailable in 30 languages:\n\n\u003cp\u003e\n\u003cimg src=\"https://flagcdn.com/20x15/gb.png\" width=\"20\" title=\"English\" alt=\"English\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/sa.png\" width=\"20\" title=\"Arabic\" alt=\"Arabic\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/bg.png\" width=\"20\" title=\"Bulgarian\" alt=\"Bulgarian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/cz.png\" width=\"20\" title=\"Czech\" alt=\"Czech\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/dk.png\" width=\"20\" title=\"Danish\" alt=\"Danish\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/de.png\" width=\"20\" title=\"German\" alt=\"German\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/gr.png\" width=\"20\" title=\"Greek\" alt=\"Greek\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/es.png\" width=\"20\" title=\"Spanish\" alt=\"Spanish\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/fi.png\" width=\"20\" title=\"Finnish\" alt=\"Finnish\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/fr.png\" width=\"20\" title=\"French\" alt=\"French\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/in.png\" width=\"20\" title=\"Hindi\" alt=\"Hindi\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/hu.png\" width=\"20\" title=\"Hungarian\" alt=\"Hungarian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/is.png\" width=\"20\" title=\"Icelandic\" alt=\"Icelandic\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/it.png\" width=\"20\" title=\"Italian\" alt=\"Italian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/jp.png\" width=\"20\" title=\"Japanese\" alt=\"Japanese\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/kr.png\" width=\"20\" title=\"Korean\" alt=\"Korean\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/lv.png\" width=\"20\" title=\"Latvian\" alt=\"Latvian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/no.png\" width=\"20\" title=\"Norwegian\" alt=\"Norwegian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/nl.png\" width=\"20\" title=\"Dutch\" alt=\"Dutch\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/pl.png\" width=\"20\" title=\"Polish\" alt=\"Polish\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/br.png\" width=\"20\" title=\"Portuguese (BR)\" alt=\"Portuguese (BR)\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/pt.png\" width=\"20\" title=\"Portuguese\" alt=\"Portuguese\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/ro.png\" width=\"20\" title=\"Romanian\" alt=\"Romanian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/ru.png\" width=\"20\" title=\"Russian\" alt=\"Russian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/sk.png\" width=\"20\" title=\"Slovak\" alt=\"Slovak\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/se.png\" width=\"20\" title=\"Swedish\" alt=\"Swedish\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/tr.png\" width=\"20\" title=\"Turkish\" alt=\"Turkish\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/ua.png\" width=\"20\" title=\"Ukrainian\" alt=\"Ukrainian\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/vn.png\" width=\"20\" title=\"Vietnamese\" alt=\"Vietnamese\"\u003e \u003cimg src=\"https://flagcdn.com/20x15/cn.png\" width=\"20\" title=\"Chinese\" alt=\"Chinese\"\u003e\n\u003c/p\u003e\n\n## Supported versions\n\n- Home Assistant 2024.1.0+\n- Syncthing v1.20.0+\n\n## Support\n\nFound a bug or have an idea? [Open an issue](https://github.com/Csontikka/ha-syncthing-extended/issues) — feedback and feature requests are welcome!\n\nIf you find this integration useful, consider [buying me a coffee](https://buymeacoffee.com/Csontikka).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsontikka%2Fha-syncthing-extended","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsontikka%2Fha-syncthing-extended","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsontikka%2Fha-syncthing-extended/lists"}