|
| 1 | +<!--- |
| 2 | + Copyright 2026 SECO Mind Srl |
| 3 | +
|
| 4 | + SPDX-License-Identifier: Apache-2.0 |
| 5 | +--> |
| 6 | + |
| 7 | +# Edgehog |
| 8 | + |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +**License:** Apache 2.0 — [apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0.html) |
| 14 | + |
| 15 | +An open-source IoT device fleet management platform built on [Astarte](https://github.com/astarte-platform/astarte). Manage hardware, push firmware updates, track device health, and automate deployments — all through a single GraphQL API. |
| 16 | + |
| 17 | +## What Edgehog does |
| 18 | + |
| 19 | +<div class="feature-cards"> |
| 20 | +<div class="feature-card"> |
| 21 | +<div class="card-icon" style="background: #e0f5f0;">📡</div> |
| 22 | +<h3>Device management</h3> |
| 23 | +<p>Register and monitor your entire device fleet. Query real-time status: online/offline state, last-seen IP, cellular connectivity, battery, OS info, and hardware details.</p> |
| 24 | +</div> |
| 25 | + |
| 26 | +<div class="feature-card"> |
| 27 | +<div class="card-icon" style="background: #fff4e0;">🔄</div> |
| 28 | +<h3>OTA update campaigns</h3> |
| 29 | +<p>Create base image collections and roll out firmware upgrades across device groups using campaigns.</p> |
| 30 | +</div> |
| 31 | + |
| 32 | +<div class="feature-card"> |
| 33 | +<div class="card-icon" style="background: #e8f0ff;">📦</div> |
| 34 | +<h3>Container deployments</h3> |
| 35 | +<p>Define applications as versioned releases of containers. Deploy, upgrade, start, stop, and delete containerized workloads via deployment campaigns.</p> |
| 36 | +</div> |
| 37 | + |
| 38 | +<div class="feature-card"> |
| 39 | +<div class="card-icon" style="background: #fce8f0;">📊</div> |
| 40 | +<h3>Fleet grouping</h3> |
| 41 | +<p>Tag devices freely and write selector expressions to form dynamic groups that update automatically.</p> |
| 42 | +</div> |
| 43 | + |
| 44 | +<div class="feature-card"> |
| 45 | +<div class="card-icon" style="background: #eaf3de;">📍</div> |
| 46 | +<h3>Geolocation</h3> |
| 47 | +<p>Track device position and location data reported from the field. Query per-device position and last-seen coordinates through the API.</p> |
| 48 | +</div> |
| 49 | + |
| 50 | +<div class="feature-card"> |
| 51 | +<div class="card-icon" style="background: #eeedfe;">🔗</div> |
| 52 | +<h3>Remote Forwarding</h3> |
| 53 | +<p>Request and manage forwarder sessions to tunnel traffic to specific devices for diagnostics and remote access — configurable per tenant.</p> |
| 54 | +</div> |
| 55 | +</div> |
| 56 | + |
| 57 | +## API reference |
| 58 | + |
| 59 | +### Admin REST APIs |
| 60 | + |
| 61 | +Edgehog admin tasks (i.e., managing tenants) are available through a REST API. It supports creating, updating and deleting tenants |
| 62 | + |
| 63 | +**Endpoint** |
| 64 | + |
| 65 | +``` |
| 66 | +http://<your-host>/admin-api/v1/ |
| 67 | +``` |
| 68 | + |
| 69 | +Replace `<your-host>` with your Edgehog instance hostname. |
| 70 | + |
| 71 | +**Full API docs** available here: [admin-rest-api](admin-rest-api/) |
| 72 | + |
| 73 | +### Tenant GraphQL APIs |
| 74 | + |
| 75 | +All Edgehog operations are exposed through a **GraphQL API**. It supports queries, mutations, and real-time subscriptions. |
| 76 | + |
| 77 | +**Endpoint** |
| 78 | + |
| 79 | +``` |
| 80 | +http://<your-host>/tenants/<your-tenant>/api |
| 81 | +``` |
| 82 | + |
| 83 | +Replace `<your-host>` with your Edgehog instance hostname and `<your-tenant>` with the slug of your tenant. |
| 84 | + |
| 85 | +**Full API docs** available here: [tenant-graphql-api](tenant-graphql-api/) |
| 86 | + |
| 87 | +#### Key resources |
| 88 | + |
| 89 | +| [**Queries**](https://docs.edgehog.io/0.12/tenant-graphql-api/#group-Operations-Queries) | Query your device data. | |
| 90 | +| [**Mutations**](https://docs.edgehog.io/0.12/tenant-graphql-api/#group-Operations-Mutations) | Make changes and interact with Edgehog. | |
| 91 | +| [**Subscriptions**](https://docs.edgehog.io/0.12/tenant-graphql-api/#group-Operations-Subscriptions) | Subscribe to events as they happen. | |
| 92 | + |
| 93 | +## How to read this documentation |
| 94 | + |
| 95 | +**1. Core concepts** |
| 96 | + |
| 97 | +Before exploring features or the API, read the [Core concepts](core_concepts-1.html) page. It defines the building blocks (**Hardware Types**, **Devices**, **System Models**, **Groups**, and **Selectors**) that all other sections depend on. |
| 98 | + |
| 99 | +**2. Follow the feature guides** |
| 100 | + |
| 101 | +The sidebar organizes topics from setup (hardware types, system models) to operations (OTA updates, campaigns, container deployments). Work through them sequentially: each guide builds on the vocabulary established by the previous one. |
| 102 | + |
| 103 | +**3. Use the API reference for integration work** |
| 104 | + |
| 105 | +The [GraphQL API reference](https://docs.edgehog.io/0.12/tenant-graphql-api/) lists every query, mutation, and subscription with argument types and example payloads. Use it alongside the feature guides when building integrations or automating fleet operations. |
| 106 | + |
| 107 | +**4. Note features marked as planned** |
| 108 | + |
| 109 | +Sections marked with an asterisk (\*) (such as Attributes and Attribute filters) describe functionality planned for a future release. The selector syntax for attributes is already in place, but attribute population is not yet active. Treat these sections as forward reference only. |
| 110 | + |
| 111 | +**5. Download or explore offline** |
| 112 | + |
| 113 | +An ePub version of the full documentation is available at the bottom of any page. A [llms.txt](llms.txt) is also provided for machine-readable consumption. |
0 commit comments