{"id":51121098,"url":"https://github.com/nikhil-prabhu/ergosphere","last_synced_at":"2026-06-25T02:30:44.299Z","repository":{"id":359148950,"uuid":"1244852367","full_name":"nikhil-prabhu/ergosphere","owner":"nikhil-prabhu","description":"A reactive, event-driven push replication daemon for Pi-hole v6 replica setups.","archived":false,"fork":false,"pushed_at":"2026-06-05T13:26:56.000Z","size":188,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T15:15:11.432Z","etag":null,"topics":["daemon","dns","pi-hole","pihole","raspberry-pi","replication","rust","sync"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nikhil-prabhu.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":null,"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-05-20T16:58:29.000Z","updated_at":"2026-06-05T13:27:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nikhil-prabhu/ergosphere","commit_stats":null,"previous_names":["nikhil-prabhu/ergosphere"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nikhil-prabhu/ergosphere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhil-prabhu%2Fergosphere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhil-prabhu%2Fergosphere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhil-prabhu%2Fergosphere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhil-prabhu%2Fergosphere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikhil-prabhu","download_url":"https://codeload.github.com/nikhil-prabhu/ergosphere/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikhil-prabhu%2Fergosphere/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34757353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["daemon","dns","pi-hole","pihole","raspberry-pi","replication","rust","sync"],"created_at":"2026-06-25T02:30:43.620Z","updated_at":"2026-06-25T02:30:44.294Z","avatar_url":"https://github.com/nikhil-prabhu.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ergosphere\n\nA reactive, event-driven push replication daemon for Pi-hole v6 replica setups.\n\n\u003e ⚠️ **Development Status**: This project is in early development. The core synchronization engine and async event loops\n\u003e are fully operational, but some quirks are still being ironed out. Expect significant changes and potential\n\u003e instability.\n\u003e Use with caution.\n\n## Key Features\n\n- **Reactive Architecture**: Built on an event-driven model, `ergosphere` reacts to changes in the Pi-hole database and\n  filesystem in real-time, ensuring that replicas are always up-to-date with minimal latency.\n- **Recursive Event Debouncing**: Features a self-resetting async sleep window to aggregate rapid cascading file writes\n  into a single optimized sync sequence.\n- **Reduced Network Overhead**: By batching updates and leveraging local filesystem checks rather than constant polling,\n  `ergosphere` minimizes unnecessary network traffic and database queries.\n- **Lightweight and Efficient**: Designed to run on low-resource environments, making it ideal for Raspberry Pi setups\n  commonly used with Pi-hole.\n\n## Architecture Overview\n\nUnlike other sync scripts that rely on cron-job schedules or constant polling, `ergosphere` operates on a reactive event\nloop. It listens for filesystem events on core Pi-hole files (like `gravity.db`), triggering\nsynchronization processes only when necessary. This approach allows for more efficient resource usage and faster\nreplication across multiple Pi-hole instances.\n\n1. **Monitor:** A background worker thread tracks filesystem events inside the primary Pi-hole filesystem.\n2. **Debounce:** When a change is detected, a self-resetting async sleep window is initiated. If additional changes\n   occur during this window, the timer resets, allowing for multiple rapid changes to be consolidated into a single sync\n   operation.\n3. **Validate:** Once the directory goes quiet, the daemon checks the local modification attributes. If the aggregate\n   checksum matches the memory registry, execution short-circuits.\n4. **Replicate**: If a real state shift is verified, `ergosphere` triggers a single-flight network pipeline: pulling a\n   Teleporter binary from the primary API, distributing it to replicas, and forcing individual thread-safe gravity table\n   rebuilds over chunked HTTP streams.\n\n## Configuration\n\nDetails on configuration options can be found in\nthe [wiki](https://github.com/nikhil-prabhu/ergosphere/wiki/Configuration).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhil-prabhu%2Fergosphere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikhil-prabhu%2Fergosphere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikhil-prabhu%2Fergosphere/lists"}