·
Last changedVersion:
This version passed the hardening gate. Hardening applied 9 targeted changes and preserved all other text. Classified findings before hardening: 8. Classified findings closed: 2. Classified findings remaining: 7 (1 introduced by hardening). Unclassified scanner findings remaining: 0. Review findings closed: 5. Review findings remaining: 7.
5
3
4
3
Expand | File | Group | Subtype | Severity | Status |
|---|---|---|---|---|---|
references/pattern1/import-weight-extraction.md | Malicious Code & Command Execution | — | Medium | Open | |
references/shared/environment-setup.md | Excessive Agency & Rogue Autonomy | — | Medium | Closed | |
SKILL.md | Excessive Agency & Rogue Autonomy | — | Medium | Open | |
references/pattern1/workflow.md | Excessive Agency & Rogue Autonomy | — | Medium | Open | |
references/pattern1/compression-decision.md | Tool & MCP Manipulation | MCP configuration abuse | Medium | Open | |
LICENSE | Excessive Agency & Rogue Autonomy | — | Low | Introduced | |
LICENSE.md | Excessive Agency & Rogue Autonomy | — | Low | Closed | |
references/pattern1/compression.md | Supply Chain & Install-Time Trust | Install-time download and execute | Low | Open |
9 findings
Deploy AI models to embedded hardware using MATLAB® and Simulink®. This skill is written specifically for MATLAB R2026a and uses APIs, functions, and workflows introduced in that release. It covers the complete lifecycle: model creation or import, verification, compression, system-level simulation, and code generation for resource-constrained targets.
Requires MATLAB R2026a or newer. Core toolboxes: Deep Learning Toolbox, Statistics and Machine Learning Toolbox, MATLAB Coder, Embedded Coder, Simulink, and Fixed-Point Designer. Workflow-specific support packages are checked during Environment Discovery. The MATLAB and Simulink Agentic Toolkits must be available.
Determine the correct workflow pattern based on model origin and deployment target.
Primary discriminator for 3P models: model size + hardware class.
* Convert to PyTorch® (.pt2) or LiteRT (.tflite) to use Pattern 2 instead.
| Pattern | Model Origin | Target Hardware | Primary Toolchain |
|---|---|---|---|
1 | MATLAB-native or 3P imported as dlnetwork | ARM® Cortex®-M (M33, M4, M7), Cortex-A/R, DSP | Embedded Coder™ |
2 | PyTorch (.pt2) or LiteRT (.tflite) direct code generation | Cortex-A/R, DSP, x86, GPU | MATLAB Coder™ + PyTorch & LiteRT SPKG |
| Capability | Pattern 1 (dlnetwork) | Pattern 2 (PyTorch/LiteRT direct) |
|---|---|---|
C code generation | Yes | Yes |
Weight inspection / modification | Yes | No |
dlquantizer (INT8) | Yes | No |
Projection (compressNetworkUsingProjection) | Yes | No |
Pruning | Yes | No |
Simulink integration | Yes (exportNetworkToSimulink) | Yes (PyTorch SPKG Simulink blocks) |
Fixed-point codegen | Yes | No |
Combined compression (77%+ flash savings) | Yes | No |
Speed to first C code | Slower | Faster |
Requires native rebuild for 3P models | Yes | No |
Rule of thumb: Choose Pattern 1 for small models (< 500 KB) on lean hardware (Cortex-M, DSP) where you need MathWorks compression and tight simulation-codegen agreement. Choose Pattern 2 for larger models (> 1 MB) on high-performance hardware (x86, GPU, Cortex-A) where simulation speed is a priority and compression is done externally in Python. For Cortex-A/R and DSP targets, model size is the primary discriminator. Pattern 2 supports PyTorch (.pt2) and LiteRT (.tflite) formats. Both patterns support Simulink integration.
Regardless of pattern, always begin with these two prerequisite steps before entering the pattern-specific phases (which start at Phase 1):
references/shared/environment-setup.mdreferences/shared/project-discovery.mdProject Discovery determines the workflow pattern via the decision tree above.
| Legacy (BANNED) | Modern Replacement |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
detect_matlab_toolboxes and support packages via matlabshared.supportpkg.getInstalled before any workflow steprng("default") before any data splittingarguments blocks in all codegen-ready functionssingle precision for all inference inputs.m script file and execute it with run_matlab_file. Do NOT run ad-hoc MATLAB commands without first writing the script file. If a script needs changes, edit the script file and re-run it. This gives users full visibility into what code is being executed and enables reproducibility. IMPORTANT: run_matlab_file sets the working directory to the script's folder. Always use absolute paths (via fullfile) for model files, data, and saved outputs — never rely on pwd or relative paths.deepNetworkDesigner(net)) so the user can visually inspect the architecture. Announce this action and wait for user acknowledgment before proceeding.fprintf/disp strings, because re-running the script with different inputs or a different model will then print stale numbers.open(reportPath) or web(reportPath)) so the user can inspect the generated code, warnings, and metrics.help <function> output and on the function's reference page. Use those as the source of truth instead of any inline parameter table in this skill — inline tables go stale across releases and burn context. This skill only flags name-value arguments that materially change the recipe (e.g., ValidationThreshold for accuracy-budgeted pruning). Lookup procedure:
help <function> in the live MATLAB session. Fast and reflects the actually-installed release of the toolbox or support package.which <func> returns "not found") on a system that has the relevant support package installed, the support package is likely on a stale build. Ask the user to update via Add-On Explorer rather than working around the missing function.references/pattern1/compression-decision.md and walk the user through the question flow (hardware + Simulink availability, primary goal, retraining tolerance). Pick the compression and code generation path based on the answers. Compression is not mandatory and the optimal combination of pruning, projection, and quantization depends on the goal — for example, on Cortex-M with a latency-bound LSTM model, the float32 path with CMSIS-DSP outperforms the quantized path because CMSIS-NN provides no INT8 kernel for recurrent layers.references/pattern1/compression-decision.md — hardware target + Simulink availability, primary goal, retraining tolerance. The answers determine the compression techniques and the code-replacement library to use.DAGNetwork, SeriesNetwork, or network objectscompression-decision.md[C × T] array with format "CBT" to a sequence model — always reshape to [C × 1 × T] for single-sequence inferencedlnetwork to prepareNetwork — in R2026a the function takes a dlquantizer object (prepareNetwork(quantObj)) and mutates it in place. The legacy net = prepareNetwork(net) form is no longer definedMATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders.
Get started with chainctlchainctl skill install public/matlab/embedded-ai-deployment:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
skills.cgr.dev/public/github.com/matlab/demos/embedded-ai-deployment/skills/embedded-ai-deployment:latest
BSD-2-Clause
HARDENING.md
LICENSE
SKILL.md
agents/openai.yaml
references/pattern1/codegen-embedded.md
references/pattern1/compression-decision.md
references/pattern1/compression.md
references/pattern1/custom-layers-codegen.md
references/pattern1/data-preparation.md
references/pattern1/import-weight-extraction.md
references/pattern1/native-rebuild-patterns.md
references/pattern1/placeholder-blocks.md
references/pattern1/simulink-integration.md
references/pattern1/training-native.md
references/pattern1/troubleshooting.md
references/pattern1/workflow.md
references/pattern2/architecture-patterns.md
references/pattern2/coder-configuration.md
references/pattern2/pytorch-export.md
references/pattern2/troubleshooting.md
references/pattern2/verification-testing.md
references/pattern2/workflow.md
references/shared/ai-verification.md
references/shared/environment-setup.md
references/shared/project-discovery.md