Comparison
CRACI vs Exein
Exein secures the device: an agent that runs on it and a firmware analyzer before release. CRACI secures the build: the runner your Yocto image is built on, and the record of what went into it.
The short answer
Exein makes security products for embedded and connected devices. Exein Runtime watches and blocks threats on the
device itself, and Exein Analyzer scans firmware for vulnerabilities before release. Its Yocto layer,
meta-exein, puts the runtime agent into your image. CRACI is a GitHub Actions runner: your Yocto build
runs on it, and CRACI records what the build downloaded, limits where it can connect, and signs the result. Exein
works on the device and the firmware; CRACI works on the build. Most teams that need both will use both.
At a glance
| Capability | CRACI | Exein |
|---|---|---|
| Runs your Yocto builds | BitBake on runners up to 32 vCPUs | Integrates into your existing pipeline |
| Records what the build fetched | Observed by the runner during each job | Analyzes the firmware, or an SBOM you provide |
| Egress policy while the build runs | Checked before the job, fails closed | Outside its scope |
| Signed build provenance | Ed25519 signatures, including OCI artifacts | Not described in Exein's documentation |
| Security agent on the device | Exein Runtime, built on eBPF | |
| Yocto layer for your image | CRACI runs the build, adds nothing to the image | meta-exein adds Pulsar to the image |
| Binary firmware analysis | Exein Analyzer | |
| Reachability prioritization | Reachability scoring and LLM filtering | |
| SBOM | From the build, with a completeness state | Generated by Exein Analyzer |
| CRA evidence | Reports in PDF, HTML, CSV, Excel, JSON | CRA evidence mapping in Analyzer |
- Included
- Not included
What Exein's Yocto integration is
The two products are easy to confuse because both mention Yocto, so it is worth being precise.
meta-exein is an open-source Yocto layer that "contains Pulsar and kernel recipes to add the Pulsar
security framework to an image." You add the layer to bblayers.conf, append pulsar to
IMAGE_INSTALL and enable BTF, and your image ships with Pulsar, Exein's eBPF-based runtime security
tool. The layer is tested on Yocto releases from Kirkstone onward and became an official Yocto Project Compatible
layer in 2024. Exein joined the Yocto Project as a Platinum Member in 2023.
In other words, Exein's layer changes what runs on the device. It does not run your build or record what the build fetched. Exein also says Exein Analyzer is "natively integrated into Yocto, Buildroot, and your CI/CD pipeline" so that it scans every new build, which is analysis of the build output inside your own pipeline.
What Exein does well
Runtime protection on the device. Exein Runtime is written in Rust and uses eBPF to monitor and block malicious behavior at the kernel level, "the moment it tries to run." Across a fleet it traces incidents and generates forensic and compliance reporting from runtime telemetry. Exein also publishes Pulsar, "a modular and blazing fast runtime security tool for the IoT, powered by eBPF," as open source.
Firmware analysis before release. Exein Analyzer inspects the final firmware directly, or ingests your SBOM when the binary is not available. Exein says it covers Linux, RTOS, Docker, UEFI, Android and more, and uses reachability scoring and LLM-powered filtering to put exploitable CVEs first.
Remediation and CRA mapping. Exein describes AI-driven remediation that runs inside Yocto and CI/CD pipelines, and maps findings to Cyber Resilience Act requirements.
Where CRACI is different
It runs the build
Yocto builds are long and heavy. CRACI runs BitBake from your GitHub Actions workflow on runners of up to 32 vCPUs
and 96 GB of RAM, set with cracicorp/setup@v1 and size: "32". Jobs run in isolated
virtual machines, and the runs still appear in GitHub.
It records what the build fetched
While a job runs, CRACI observes traffic to package and source hosts and keeps it as build evidence, with a
completeness state per job and per cache. For Yocto that is an independent account of what came over the network,
next to the SPDX SBOM that Yocto's create-spdx class already writes. CRACI does not replace that SBOM.
Sources BitBake fetches from the Yocto source mirror are recorded in the CRACI job SBOM.
It controls where the build can connect
BitBake can restrict its fetcher with BB_ALLOWED_NETWORKS. CRACI adds an egress policy at the runner,
validated before the job starts and failing closed, so a script or tool that goes around the fetcher still cannot
reach a host you did not allow. Violations can be sent by email.
It signs and watches what shipped
Signed provenance (Ed25519 over SHA-512) links each artifact to its build. CRACI aggregates vulnerabilities across builds and repositories, and keeps re-evaluating monitored SBOMs.
CRACI does not put anything on the device and does not analyze binaries. If you need runtime protection or a scan of a finished image, that is Exein's ground.
When to use which, and when to use both
- You want threat detection and blocking on devices in the field. Exein Runtime. CRACI has no on-device component.
- Your Yocto builds run on a server under a desk, or take hours on small CI runners. CRACI runs them from GitHub Actions and keeps a record of each one.
- You ship a Yocto image with
meta-exein. Build it on CRACI. The layer builds like any other, and signed provenance ties the protected image to the build that produced it. - You need to show where the SBOM came from. CRACI's runner record and signed provenance tie the SBOM to a specific build. Exein Analyzer's scan of the output is a useful second view.
For the CRA
The Cyber Resilience Act asks manufacturers to document the components in their products, including an SBOM, to handle vulnerabilities through the support period, and, from September 2026, to report actively exploited vulnerabilities. Exein helps on the device side, with pre-release firmware analysis, CRA evidence mapping and runtime telemetry from the field. CRACI helps on the build side, with per-build evidence of what went into the firmware, provenance, ongoing monitoring and report export. CRACI automates a significant part of the software supply chain visibility and evidence that manufacturers need for their wider CRA compliance process; it does not make a product compliant on its own. Read what the CRA requires.
Adding CRACI to a Yocto workflow
Keep your layers, including meta-exein, and your Exein Analyzer step. Set runs-on: craci
on the build job and choose a runner size. The Yocto example in the CRACI docs builds core-image-sato with the official Yocto source mirror and a
matching BB_ALLOWED_NETWORKS setting. CRACI supports GitHub Actions only today. See how CRACI works for
industrial IoT and consumer
electronics.
Bring a Yocto build to the demo
Book a demo and we will run one of your BitBake builds on a CRACI runner and walk through what it fetched.
Book a demo