AetherEdge
Exposes a deterministic IoT edge runtime — Modbus/CAN/J1939 acquisition, local rules, alarms, and history — to AI assistants as typed, governed MCP tools. Reads are safe by default; device control stays deny-by-default, explicitly confirmed, and audited.
README
AetherEdge
Documentation website: docs.aetheriot.dev
AI-native platform · Get started · Documentation · Agent Skill · MCP · 中文
Let AI agents run your physical space — safely, locally, deterministically.
AetherEdge is an open-source, industry-neutral IoT edge kernel, runtime, and Rust SDK for Linux gateways. It connects field devices, keeps authoritative live state in shared memory, runs deterministic local rules and alarms, and stores embedded history — no Redis, no PostgreSQL, no cloud service, no browser, no LLM required.
What makes it different: AI is a first-class client behind a typed, governed boundary. Agents discover real capabilities over MCP and OpenAPI, propose changes, and commission behavior — while device control stays deny-by-default, explicitly confirmed, and audited, and the edge keeps executing deterministically even when no AI is connected.
AetherEdge is the edge product in the AetherIoT platform, alongside AetherCloud and AetherContracts. The official energy-management distribution is AetherEMS.
Try it in five minutes
Have a running edge system? Expose it to your AI assistant as read-only MCP tools:
claude mcp add aether -- aether mcp
Then ask your assistant:
Inspect my edge runtime and generate a read-only operations app for the
capabilities it exposes.
The MCP server talks to the authenticated API gateway (aether-api:6005), so set
AETHER_ACCESS_TOKEN for the session. Claude on your laptop, edge on a server? One line still
works: claude mcp add aether -- ssh user@gateway aether mcp, or point AETHER_API_URL at an
HTTPS ingress — see Connect AI assistants.
No hardware? The SDK compositions run anywhere, need no external service, and commission nothing:
cargo run -p aether-example-minimal-gateway # empty industry-neutral gateway
cargo run -p aether-example-energy-gateway # disabled-by-default Energy Pack proof
You can also simulate devices on the wire — Modbus TCP/RTU, CAN, J1939 — and acquire from them exactly like a physical site:
cargo run -p simulator -- --scenario tools/simulator/scenarios/pv_daily.yaml --port 5020
See Getting Started for the full safe-empty runtime setup, Connect devices for wiring channels, and the Agent Quickstart for a complete assistant-driven setup.
Install AetherEdge
For a Docker-based Linux edge host, download the matching AetherEdge-<arch>-<version>.run file and
its .sha256 file from GitHub Releases. Verify and
run the fresh-install package on the target host:
sha256sum -c AetherEdge-<arch>-<version>.run.sha256
chmod +x AetherEdge-<arch>-<version>.run
sudo ./AetherEdge-<arch>-<version>.run
The .run package installs the six-service edge Runtime and the aether CLI. Releases also contain
standalone CLI archives; those do not install the Runtime. For a source checkout or SDK development,
follow Getting Started. Running
cargo install --path tools/aether --locked installs only the CLI. See
Deployment for Docker and bare-metal package contracts. AetherEdge is
not an npm or Bun package; npx and bunx do not install it.
What AetherEdge provides
- Deterministic edge runtime — six isolated Rust services continue acquisition, rules, alarms, history, and uplink when no AI client is connected.
- Local-first data plane — shared memory is authoritative for live point state; SQLite provides embedded desired state, history, audit, and durable outbox storage.
- Machine-readable contracts — runtime manifests, OpenAPI, capability metadata, Pack manifests, experimental CloudLink schemas, MCP tools, and Markdown documentation give agents facts instead of prompt folklore.
- One application boundary — HTTP, CLI, MCP, and generated clients share governed queries and commands instead of writing SHM or storage directly.
- Domain Packs — industry knowledge, models, mappings, rules, and processing declarations layer over the kernel without becoming core dependencies.
AI-native product direction
AetherIoT's product direction is to let people describe outcomes in conversation instead of programming device identifiers, triggers, conditions, and actions through fixed configuration screens. Agents discover typed capabilities, generate governed proposals, and commission behavior; AetherEdge executes the accepted behavior locally without the model.
The complete end-user conversational agent is not shipped in the current beta. AetherEdge provides the foundations it requires today: runtime and Pack discovery, agent-readable documentation, OpenAPI, MCP tools and resources, governed commands, revisioned configuration, audit evidence, and deterministic local execution.
The planned platform lifecycle is:
human intent -> agent proposal -> typed contracts -> policy and confirmation
-> commissioned behavior -> deterministic edge execution
-> observation, explanation, and governed revision
Future intent, proposal, simulation, expiry, and continuous-adaptation capabilities must be added as explicit application and AetherContracts surfaces. An agent cannot fabricate a device feature, write SHM or SQLite, bypass confirmation, or become a hidden second configuration authority. See the AI-native platform and platform status for the delivery boundary.
Beta: AetherEdge is the industry-neutral Kernel, Runtime, and SDK. Existing crates, binaries, the CLI, and some compatibility artifacts retain their
aether-*/aethernames. This repository was formerly namedEvanL1/AetherIot; software identifiers remain stable during the migration.
How agent access is governed
The repository's Agent Skill is optional development guidance, not an AetherEdge software package. See Build Applications with AI if you want to add it to a compatible assistant.
The optional Skill supplies the development method and pulls current Markdown from the online docs. MCP supplies live, structured capabilities. Write tools are not registered unless the operator starts an explicitly write-enabled session, and every write still crosses the server-enforced permission, confirmation, validation, and audit boundary.
See Build Applications with AI for the client contract and Agent Quickstart for a complete safe-empty runtime setup.
Conversation-first, headless by design
AetherEdge does not ship a generic Web Console. A fixed dashboard cannot express every industry Pack, and a browser must never become a second configuration authority. Instead, AetherEdge ships the contracts, Agent Skill, and development guidance needed to generate or maintain fit-for-purpose applications.
The long-term configuration experience is conversation-first: users describe the result they want, while an agent generates an inspectable, versioned change. Consequential changes may still produce an on-demand summary, risk explanation, simulation, or confirmation surface. Those generated views explain a change; they do not own it.
User interfaces are downstream clients and reference implementations. They consume published application APIs, remain replaceable, and receive no direct SHM, SQLite, or internal-service access. The optional AetherEMS Console is one energy-domain implementation of this model.
Rust SDK
aether-edge-sdk, imported as aether_sdk, is the only supported Rust
application facade. Workspace implementation crates are source-only and cannot
be published independently. Downstream builds pin the exact commit behind a
signed source release and select local adapters through the SDK's
local-runtime feature. The example compositions above are SDK smoke tests,
not the supervised production runtime.
Edge runtime
| Process | Responsibility |
|---|---|
aether-io |
Protocol acquisition and sole telemetry/status writer |
aether-automation |
Instances, rules, and audited control dispatch |
aether-alarm |
Alarm evaluation and lifecycle |
aether-history |
Embedded history and optional history adapters |
aether-api |
Authenticated remote application API and WebSocket |
aether-uplink |
Legacy Cloud/MQTT delivery through a durable local outbox; experimental CloudLink foundation |
Devices -> aether-io -> authoritative SHM
|-> automation and alarms
|-> API and embedded history
`-> durable outbox -> optional cloud
domain <- ports <- application <- runtime/interfaces
^
`---- extensions
Only aether-api is a remote application boundary. The other process APIs stay on loopback.
Generated clients must use published application capabilities and must not expose or proxy those
internal ports.
Contributing
Development setup and verification live in CONTRIBUTING.md. Repository rules for agents and contributors live in AGENTS.md.
License
MIT OR Apache-2.0, at your option. See the MIT license and Apache License 2.0.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.