{"id":47804463,"url":"https://github.com/e7217/edg","last_synced_at":"2026-04-03T17:26:26.463Z","repository":{"id":332336887,"uuid":"1133459656","full_name":"e7217/edg","owner":"e7217","description":"Lightweight industrial data pipelines, built for the edge","archived":false,"fork":false,"pushed_at":"2026-03-16T15:08:25.000Z","size":270,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-17T02:51:42.572Z","etag":null,"topics":["edge","industrial","lightweight","smartfactory"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/e7217.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-01-13T11:28:11.000Z","updated_at":"2026-03-16T15:08:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/e7217/edg","commit_stats":null,"previous_names":["e7217/edg"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/e7217/edg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/e7217%2Fedg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/e7217%2Fedg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/e7217%2Fedg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/e7217%2Fedg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/e7217","download_url":"https://codeload.github.com/e7217/edg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/e7217%2Fedg/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31365963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:13:05.644Z","status":"ssl_error","status_checked_at":"2026-04-03T17:13:04.413Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["edge","industrial","lightweight","smartfactory"],"created_at":"2026-04-03T17:26:25.713Z","updated_at":"2026-04-03T17:26:26.449Z","avatar_url":"https://github.com/e7217.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EDG Platform\n\n![Status](https://img.shields.io/badge/status-pre--alpha-orange)\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/ec0ec2c0-3fa1-4ab1-bced-ed4ad549dffe\" width=\"30%\" alt=\"edge (1)\"\u003e\n\u003c/div\u003e\n\n\u003e **Industrial Edge Data Gateway**\n\u003e \n\u003e Low-overhead, high-performance edge gateway for industrial data ingestion, validation, and storage.\n\n\u003e [!WARNING]\n\u003e EDG is in early development and is not yet production-ready.\n\u003e APIs, configuration, and deployment workflows may change without notice.\n\n## Why EDG?\n\n*   **Lightweight \u0026 Fast**: Built with Go and NATS for ultra-low latency.\n*   **Reliable**: Built-in data validation and auto-registration of assets.\n*   **Plug \u0026 Play**: Simple Python adapters for reading any sensor data.\n*   **Time-Series Ready**: Seamless integration with VictoriaMetrics/InfluxDB via Telegraf.\n\n## Key Features\n\n*   **Automatic Asset Registration**: Device discovery and metadata registration without manual configuration.\n*   **Data Validation**: Enforces schema and quality checks at the edge before data enters your storage.\n*   **At-Least-Once Delivery**: Uses NATS JetStream to ensure zero data loss even during network outages.\n*   **Flexible Adapters**: Easily write collectors in Python for Modbus, OPC-UA, or custom protocols.\n\n## Quick Start\n\n### 1. Installation\nDownload the latest release and run the installer:\n\n```bash\n# Linux / macOS\nsudo ./install.sh\n```\n\n### 2. Start Services\n```bash\nsudo systemctl start edg-core\nsudo systemctl start edg-telegraf\n```\n\nIf you are using docker-compose, you can also start Grafana (optional) for dashboards.\n\n### 3. Send Data\nUse the Python SDK to send your first metric:\n\n```python\nimport asyncio, json\nimport nats\n\nasync def main():\n    nc = await nats.connect(\"nats://localhost:4222\")\n    \n    # Send sensor data\n    data = {\n        \"asset_id\": \"sensor-001\",\n        \"values\": [\n            {\"name\": \"temperature\", \"number\": 25.5, \"unit\": \"°C\", \"quality\": \"good\"}\n        ]\n    }\n    \n    await nc.publish(\"platform.data.asset\", json.dumps(data).encode())\n    print(\"Data sent!\")\n    await nc.close()\n\nasyncio.run(main())\n```\n\n## Architecture\n\n![EDG Platform Architecture](docs/flow.drawio.png)\n\n\u003cdetails\u003e\n\u003csummary\u003eMermaid\u003c/summary\u003e\n\n```mermaid\ngraph LR\n    Sensor[Sensor] --\u003e|Python Adapter| NATS1[NATS: Ingest]\n    NATS1 --\u003e|Stream| Core[EDG Core]\n    Core --\u003e|Validation| NATS2[NATS: Validated]\n    NATS2 --\u003e|Consumer| Telegraf\n    Telegraf --\u003e|Write| VM[VictoriaMetrics]\n```\n\n\u003c/details\u003e\n\n## Integrations\n\n### Data Inputs\n*   **Python SDK**: Custom adapters for any sensor.\n*   **Standard Protocols**: Modbus, MQTT (Planned).\n\n### Storage \u0026 Outputs\n*   **VictoriaMetrics**: High-performance time-series storage (Recommended).\n*   **InfluxDB**: v2 API compatible.\n*   **NATS**: Raw stream access for other microservices.\n\n## Roadmap\n\nWe are evolving from a data collector to a full **Bidirectional IoT Gateway**.\n\n*   **Phase 1: Basic Control (Current)**\n    *   Simple 1:1 Command/Response pattern.\n    *   Secure execution of device commands via adapters.\n*   **Phase 2: Advanced Logic (Planned)**\n    *   Relationship-based control (Ontology).\n    *   Automated sequences and conditional triggers.\n\n## Documentation\n\n*   **[User Guide](docs/USER_GUIDE.md)**: Detailed installation, configuration, and monitoring.\n*   **[Developer Guide](docs/DEVELOPMENT.md)**: Building from source, contributing, and architecture details.\n\n## Grafana (Optional)\n\nGrafana is not included in the systemd-based release bundle today. If you deploy via docker-compose, you can run Grafana to visualize data stored in VictoriaMetrics.\n\n- URL: http://localhost:3000\n- Default user: `${GRAFANA_ADMIN_USER:-admin}`\n- Default password: `${GRAFANA_ADMIN_PASSWORD:-admin}`\n\n## LICENSE\n\nApache License 2.0. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fe7217%2Fedg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fe7217%2Fedg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fe7217%2Fedg/lists"}