Skip to content
Cyber Resilience Act: vulnerability reporting applies since 11 September 2026

Fix, audit and secure your Yocto Project builds with AI.

Yocman repairs failed bitbake tasks with a patch you approve, then checks the image you ship for unpatched CVEs, embedded secrets, weak accounts, licenses and SBOM gaps. It all runs in your terminal; only masked excerpts reach the AI.

  • Patches for your own layers, never poky
  • CVE, secrets, licenses and SBOM in one audit
  • JSON reports and exit codes for CI
New to the Yocto Project? What it is and how it works →
~/yocto/build
$ bitbake core-image-base
NOTE: Executing Tasks
NOTE: Running task 1984 of 3127 (busybox_1.36.1.bb:do_patch)
ERROR: busybox-1.36.1-r0 do_patch: Applying patch '0001-ash-increase-history-size.patch'
Hunk #1 FAILED at 9871. 1 out of 1 hunk FAILED

$ yocman fix
… collecting context: log.do_patch, 4 layers, local.conf (masked)
… reading meta-custom/recipes-core/busybox/busybox_%.bbappend
Diagnosis  the patch from meta-custom no longer applies to BusyBox 1.36.1
--- a/recipes-core/busybox/busybox_%.bbappend
+++ b/recipes-core/busybox/busybox_%.bbappend
@@ -1,6 +1,5 @@
 SRC_URI += " \
-    file://0001-ash-increase-history-size.patch \
     file://ash-tweaks.cfg \
Apply this patch? [y/N] y
✓ patch applied in meta-custom
… re-running bitbake -c patch -f busybox
✓ do_patch succeeded

$ yocman audit --fail-on high
  Overall score 18/100 over 10 categories
critical  CVE-2099-0101 (CVSS 9.8) in openssl 3.2.1
critical  OpenSSH private key in /etc/ssh
exit 1: findings at or above high

Audit the image you actually ship

yocman audit reads what the build produced, not a questionnaire: the rootfs, the cve-check report, the SPDX SBOM, the kernel .config and your layers. Every finding has a rule id, the file it comes from and a fix, with a score per category.

Vulnerabilities
Unpatched CVEs by CVSS, and cve diff to see what an update fixed or introduced.
Secrets
Private keys, tokens and passwords in the rootfs or the layers, reported by location, never displayed.
Hardening
Empty passwords, extra root accounts, readable /etc/shadow, telnet, kernel options.
Licenses and SBOM
GPLv3 and unclear licenses, source obligations, SPDX SBOM consistency with the image.
See every security check
yocman audit
$ yocman audit --fail-on high
Overall score 18/100 over 10 categories
cve 9 secrets 0 users 0 licenses 76 sbom 86
critical CVE-001 CVE-2099-0101 (CVSS 9.8) in openssl 3.2.1
critical SECRET-001 OpenSSH private key in /etc/ssh
critical USER-001 root has no password
critical SVC-002 telnet.socket enabled: clear-text login
medium LIC-003 GPL-3.0 in the image
→ upgrade the recipe or backport the fix with 'CVE: <id>'
exit 1: findings at or above high
Demo build, fictitious CVE identifiers

The Cyber Resilience Act applies to your firmware

Products with digital elements sold in the EU must handle vulnerabilities, ship security updates and document their software, SBOM included. yocman cra report assembles the build-side evidence — CVEs, secrets, SBOM, hardening — into one report.

The Cyber Resilience Act, explained for embedded Linux →
  1. 11 Sep 2026

    Reporting of actively exploited vulnerabilities and severe incidents

  2. 11 Dec 2027

    All essential requirements apply

From a red build to a green one

  1. Your build breaks

    bitbake stops on do_patch, do_compile or a QA check. Run yocman fix in the same shell, nothing to set up.

  2. Yocman diagnoses

    The CLI collects the failing task log, your layers and configuration. The agent investigates with read-only tools and finds the cause.

  3. You approve the fix

    You get the diagnosis and a unified diff against your own layer. Nothing changes until you say yes, then the task re-runs.

Your build stays on your machine

The agent never gets a shell on your workstation. It asks the CLI for specific files, and you see every request.

Runs locally
bitbake, kas and every tool run on your workstation or CI runner. Only masked excerpts leave it.
Secrets masked
Tokens, passwords, private keys, credentials in URLs, e-mails, private IPs and your home path are replaced before sending.
--dry-run
Prints the exact payload that would be sent, and sends nothing.
You validate
Patches only touch your own layers, never poky or upstream ones, and wait for your confirmation.
What the agent receives
$ yocman fix --dry-run
- PREMIRRORS:prepend = "git://.*/.* https://builder:k7Fq2v9X@mirror.corp.example/src/"
+ PREMIRRORS:prepend = "git://.*/.* https://***:***@mirror.corp.example/src/"
- ERROR: Logfile of failure stored in: /home/alice/yocto/build/tmp/work/.../log.do_patch
+ ERROR: Logfile of failure stored in: ~/yocto/build/tmp/work/.../log.do_patch
- GITLAB_TOKEN = "glpat-Xq2Lk9vWmP4rT7sB1nYd"
+ GITLAB_TOKEN = "<redacted>"
Dry run: nothing was sent.

One CLI for the whole build

See all features

Fix

fixexplainaskcontextlogin

Diagnose a failed task and get a patch for your layer, or ask about your project. Failures already solved for you are answered from your own history.

--- a/recipes-apps/myapp/myapp_1.0.bb
+++ b/recipes-apps/myapp/myapp_1.0.bb
inherit cmake systemd
+DEPENDS += "zlib"
✓ do_compile succeeded

Analyze

doctorrulesconflayers checkdepswhyprovidesunusedorphansduplicatessizebuildtimesstateboot

Understand your image: why a package is in it, what takes the space, where the build and boot time go, what sstate rebuilds.

Installed size 42.0 MiB in 43 packages
libc6-dbg 8789 KiB 20.4%
libcrypto3 4394 KiB 10.2%
SIZE-002 debug symbols in the image

Audit

auditcvesecretsuserspermsserviceskernel-auditlicensessbomcra report

Security and compliance checks on the image you actually ship: CVEs, secrets, accounts, services, kernel, licenses, SBOM, with a score per category.

Overall score 18/100 over 10 categories
critical CVE-001 unpatched CVE (CVSS 9.8)
critical SECRET-001 private key in the rootfs
medium LIC-003 GPL-3.0 in the image

Start

initaddremovebuildshellenvflash

Create a kas project for a verified board or describe it in your words, add features, build with live progress on the host or in a container, flash the card.

$ yocman init --release scarthgap --board rpi4-64 \
--feature ssh-openssh --env container
✓ Project generated in ~/yocto/rpi4-scarthgap

Try it on your next build

Free plan included, no credit card. Install the CLI, then run yocman fix on a failed build or yocman audit on a finished one.

$ pipx install yocman
Get started free