Device trust and intrusion detection for embedded systems.
Lightweight, open-source runtime security. On-device anomaly detection for low-power embedded and IoT devices, with no dynamic memory allocation.
- Apache 2.0
- C11 static library
- No heap allocation
- Works offline
- Zephyr RTOS module
Device trustVerified
IntrusionClear
Trust checks
Intrusion detection
Runs on
New to EmbedIDS?
Now a Zephyr RTOS module
Add intrusion detection to Zephyr firmware with a few Kconfig lines. Threads and interrupts submit samples without blocking; one detector thread checks each one.
- ≤ 120 ms from trigger to alert in every simulated attack scenario
- No heap allocation in the detector or the queue adapter
- 19 / 19 tests passing on
native_simwith Zephyr v4.2.0
CONFIG_EMBEDIDS=y CONFIG_EMBEDIDS_MAX_METRICS=8 CONFIG_EMBEDIDS_SAMPLE_QUEUE_SIZE=32
Overview
An open-source intrusion detection library that runs on the device, offline, in memory you allocate.
Linuscent OS Product compliance platform
EmbedIDS Device layer · trust checks · intrusion detection
- Linux and Jetson agent
- Zephyr RTOS firmware
- Your C11 firmware
Product Features
Open-Source SDK (Apache 2.0 Licensed)
One C11 library. You provide the buffers; it checks every sample against your rules.
- No heap allocation
- Threshold rules
- Custom algorithms
- CMake package
- Zephyr module
static embedids_metric_datapoint_t cpu_history[50];
// …
cpu_metric.type = EMBEDIDS_METRIC_TYPE_PERCENTAGE;
cpu_metric.history = cpu_history;
cpu_metric.max_history_size = 50;
// …
threshold_algo.type = EMBEDIDS_ALGORITHM_THRESHOLD;
threshold_algo.config.threshold.max_threshold.f32 = 80.0f;
threshold_algo.config.threshold.check_max = true;
// …
embedids_metric_value_t value = {.f32 = cpu};
embedids_add_datapoint(&context, "cpu_usage", value, (uint64_t)time(NULL) * 1000);
if (embedids_analyze_metric(&context, "cpu_usage") == EMBEDIDS_OK) {
printf("OK CPU: %.1f%% - Normal\n", cpu);
} else {
printf("ALERT CPU: %.1f%% - THRESHOLD EXCEEDED!\n", cpu);
} Key Features
On-Device Intelligence
- Detection runs on the device, with no cloud dependency
- Fixed history buffers that you allocate
Customizable Security
- Your own metrics and thresholds
- Custom detection functions beside the built-in rules
Developer-Friendly Design
- CMake package, FetchContent or Zephyr module
- Examples, a tutorial and automated tests
Why EmbedIDS?
- Tight memory and power budgetsFixed memory, no heap allocation
- Unreliable connectivityDetection runs offline, on the device
- Fleet-scale costsOpen source, with no licence fees
- Diverse hardwarePortable C11 core, Linux agent and Zephyr module
Getting Started
Three steps from clone to your first alert. Follow the Quick Start.
- Add EmbedIDS with CMake, or as a Zephyr module
- Describe each metric and the rule that guards it
- Feed samples and act on the alerts
Use Cases
- Industrial IoT sensors
- Edge AI devices
- Smart home devices
- Automotive systems
- Medical IoT devices
- Gateways and edge nodes
Community and Support
Questions, ideas and contributions happen in the open.
Ready to secure your devices? Get the open-source SDK.