Raw dependency graph data (JSON)
Edge Impulse CLI
Author: Ludovic HENRY ludovic.henry@qti.qualcomm.com
Date: 2026-09-08
Readiness: orange
Scope: RISC-V (riscv64/linux) support status for Edge Impulse CLI
Audience: Technical leadership, resource allocation strategy
Verification policy: Every claim is cross-referenced to a primary upstream source. Items that could not be verified against a second source are marked [NEEDS VERIFICATION].
1. Project Overview
Edge Impulse CLI (npm package edge-impulse-cli, distributed at github.com/edgeimpulse/edge-impulse-cli) is a Node.js/TypeScript command-line tool for the Edge Impulse embedded-ML platform: device management, data ingestion/upload, a daemon, serial connection handling, and related sub-tools (edge-impulse-daemon, edge-impulse-uploader, edge-impulse-blocks, etc.). It is not the inference SDK/runtime (that is a separate repository such as inferencing-sdk-cpp); this repo is purely the operator-facing CLI.
Governance. No MAINTAINERS, OWNERS, CODEOWNERS, GOVERNANCE, or SUPPORT.md file exists anywhere in the repository, and there is no .github/ directory of any kind (no PR template, no CODEOWNERS). This is a conventional single-company repository, not a foundation-governed project with a documented tiering or new-port policy.
License. LICENSE.3-clause-bsd-clear - BSD-3-Clause-Clear (“Clear BSD License”), copyright Edge Impulse Inc. (2025). Confirmed in package.json: "author": "EdgeImpulse Inc. <hello@edgeimpulse.com>", "license": "BSD-3-Clause-Clear".
Corporate sponsors / community culture. All contributors are Edge Impulse Inc. staff or automation: Edge Impulse Firmware Uploader (bot, 84 commits), Jorge Silva (33 commits), Jan Jongboom (29 commits, Edge Impulse co-founder/CTO), Mateusz Majchrzycki (17 commits), plus two minor contributors. No commits from Intel, Google, Arm, SiFive, or any other named corporate sponsor were found. Edge Impulse Inc. was acquired by Qualcomm Technologies in March 2025 [NEEDS VERIFICATION - acquisition date sourced from a single web search result, not a primary Edge Impulse or Qualcomm press release in these findings]. Qualcomm is a RISE Premier Member, but Edge Impulse itself has no separate/direct RISE membership found anywhere.
There is no evidence of any community culture around new architecture ports for this repo specifically - no governance document addresses the question, and no port (RISC-V or otherwise) appears anywhere in its history.
2. Port History and Upstreaming Timeline
No RISC-V port exists, so there is no timeline to report.
| Date | Event | Source |
|---|---|---|
| - | No RISC-V-related commit, issue, or PR found in full repo history (166 commits, all branches: master, main, better-freq-detection, fix-npm-build) |
git log --all --grep -i riscv (0 matches); GitHub code search riscv repo:edgeimpulse/edge-impulse-cli (0 results) |
No key contributors exist for a RISC-V port because none has ever been attempted. There is nothing “fully upstream” or otherwise to assess.
3. Upstream Support Tier
No formal tier policy exists (no governance documentation of any kind, see Section 1). There is no CI, no release-blocking gate, and no official riscv64 binaries.
| Architecture | CI builds | CI tests | Official binaries |
|---|---|---|---|
| amd64 | N/A - no CI configuration exists for this repo at all | N/A | Runs via npm + Node.js on any platform with Node >=16; not architecture-differentiated |
| arm64 | N/A - no CI configuration exists for this repo at all | N/A | Same as above |
| riscv64 | N/A - no CI configuration exists for this repo at all | N/A | Same as above; no riscv64-specific claim made anywhere |
Official docs at docs.edgeimpulse.com/docs/tools/edge-impulse-cli state supported platforms as x86_64, ARMv7, and AArch64 for “Edge Impulse for Linux” - RISC-V is not mentioned anywhere in official documentation, forum posts, or repo content.
4. Technical Architecture and RISC-V-Specific Subsystems
The CLI repository itself contains no compiled, architecture-specific code of any kind, for any ISA:
- No
arch/directory (path:archcode search: 0 results). - No assembly files (
filename:*.Ssearch: 0 results; repo-wide file-type scan found zero.c/.cpp/.cc/.h/.node/.s/.asmfiles outsidenode_modules). - No
Dockerfile, no CMake, no Makefile-based native build system anywhere. - No
process.archbranching anywhere in the 984-file TypeScript/JavaScript source tree (grep -rn "process.arch": 0 matches). - No JIT backend, no SIMD dispatch, no crypto acceleration, no GC barriers - this is a pure Node.js CLI wrapper with
engines.node >= 16.0.0.
| Component | amd64 | arm64 | riscv64 |
|---|---|---|---|
| JIT / native codegen | none in repo (delegated to Node.js/V8 runtime) | none in repo (delegated to runtime) | none in repo (delegated to runtime) |
| SIMD / vectorization | none in repo | none in repo | none in repo |
| Crypto acceleration | none in repo | none in repo | none in repo |
| Hand-written assembly | none | none | none |
The only place architecture could plausibly matter is in the prebuilt native binaries shipped by two transitive npm dependencies, sharp (image codec bindings) and serialport (N-API serial bindings) - see Section 9. That surface lives entirely outside this repository’s own source and is not “architecture-specific code” belonging to Edge Impulse CLI itself.
This project is not optimization-purpose (it is an operator CLI, not a numerics/SIMD/codec library), so the Step 2 optimization-gap modifier does not apply.
5. Build System, Cross-Compilation, and Toolchain
The only build/install instructions in README.md:
git clone https://github.com/edgeimpulse/edge-impulse-cli
npm install
npm run build # runs `tsc -p ./`
npm link
Stated requirement: Node.js v16 or higher. No architecture-specific or cross-compilation guidance exists anywhere in README.md or the seven auxiliary README files (README-blocks.md, README-daemon.md, README-data-forwarder.md, README-himax-flash-tool.md, README-internal.md, README-run-impulse.md, README-uploader.md) - exhaustive case-insensitive greps for riscv, toolchain, qemu, cross-compil, arm64/aarch64, and cmake across the entire tree all returned zero matches.
npm install and tsc are architecture-agnostic for the CLI’s own TypeScript source. The risk is entirely in npm install’s resolution of the two native transitive dependencies (sharp, serialport), which use node-gyp/prebuild-install mechanics that are architecture-sensitive - the CLI’s own build system documents nothing about this, let alone riscv64. No QEMU usage, no documented build failures specific to this repository were found (because no one has attempted the build on riscv64, per the exhaustive issue/PR/commit search in Section 2).
6. Feature Coverage and Gap Analysis vs arm64 and amd64
| Feature | amd64 | arm64 | riscv64 |
|---|---|---|---|
| Core CLI (device mgmt, ingestion, daemon) | Works (pure JS, Node >=16) | Works (pure JS, Node >=16) | Would run wherever Node.js >=16 is available, but never tested or claimed by Edge Impulse [NEEDS VERIFICATION - no direct riscv64 execution report found] |
Image dataset upload (depends on sharp) |
Prebuilt native binary available | Prebuilt native binary available | No prebuilt binary; build-from-source against system libvips reported failing even when libvips is present (lovell/sharp#4352) |
Serial/USB device communication (depends on serialport) |
Prebuilt/buildable native binary | Prebuilt/buildable native binary | No prebuilt binary; falls back to node-gyp rebuild from source (architecture-generic C++, no SIMD/asm), but no confirmed successful riscv64 report found either way |
No performance-gap analysis applies (no SIMD/hot-path code in this repo, see Section 4). No security-hardening or floating-point/NaN semantics issues apply for the same reason - this is not a numerics or codec project.
Functional gap: image-dataset-upload workflows that depend on sharp are the concrete, documented risk point on riscv64, since sharp’s own npm distribution channel excludes riscv64 and its from-source build path is reported broken by at least one third-party user even against a working system libvips (lovell/sharp#4352, lovell/sharp#4367).
7. CI/CD Infrastructure
No riscv64 CI exists - confirmed independently across two research passes on this repository.
Direct filesystem inspection of a fresh, verified clone (git rev-parse HEAD = 000b0f8, “Release v1.39.3”, origin confirmed as github.com/edgeimpulse/edge-impulse-cli):
ls -laat repo root: no.githubdirectory exists at all.- No
.gitlab-ci.yml,Jenkinsfile,.travis.yml, or.cirrus.ymlat root. - Checked on every branch, not only default:
master(default,origin/HEAD),main,better-freq-detection,fix-npm-build.git ls-tree -r --name-onlygrepped for^\.githubon each: no.githubpath on any branch. git grep -il "riscv"against each branch’s full tree: zero matches on any branch.- GitHub’s own code-search index cross-check:
path:.github/workflows repo:edgeimpulse/edge-impulse-cli-> 0 results (nothing indexed at that path at all).
There is nothing to quote lines from, no trigger conditions, no runner type, and no QEMU or cross-compilation setup of any kind to report, because no CI configuration of any kind exists in this repository for any architecture, not only riscv64.
| Architecture | CI exists | Runner type | RISE runners used |
|---|---|---|---|
| amd64 | No (no CI config of any kind in the repo) | N/A | N/A |
| arm64 | No (no CI config of any kind in the repo) | N/A | N/A |
| riscv64 | No | N/A | No - confirmed zero RISE involvement (Section 12) |
8. Distribution and Release Status
No riscv64 binary, package, or release asset exists anywhere checked:
- GitHub Releases: Only one formal release exists,
v1.13.16-alpha(pre-release), with exactly two assets - auto-generatedv1.13.16-alpha.zipandv1.13.16-alpha.tar.gz(source archives only). Neither filename references riscv. Many version tags exist (e.g., 1.39.3, 1.39.2 down through 1.35.1) but these are npm-publish git tags, not GitHub Releases with attached binaries. - npm registry (the actual distribution channel):
registry.npmjs.org/edge-impulse-clireturns HTTP 200, latest version1.39.3, pure JavaScript/TypeScript package,engines.node >= 16.0.0, no per-architecture binaries published by Edge Impulse itself (npm doesn’t carry per-arch assets for this package). - PyPI:
https://pypi.org/pypi/edge-impulse-cli/json-> HTTP 404. No such package exists on PyPI (the tool is npm-distributed, not Python-distributed). - Ubuntu 26.04 (Resolute):
packages.ubuntu.comsearch -> “Sorry, your search gave no results.” No package under any architecture, not only riscv64. Project-graph SPARQL query against the Ubuntu 26.04 riscv64 binary-package graph (edge impulse cli/python3-edge-impulse-cli/libedge-impulse-cli) also returned 0 bindings. - Arch Linux RISC-V port (archriscv.felixc.at): no results.
- RISE GitLab wheel builder:
https://gitlab.com/api/v4/projects/56254198/packages/pypi/simple/edge-impulse-cli/redirects to the nonexistent PyPI project (404) - not applicable since this is not a Python package.
What a user must do to get a working install on riscv64: run npm install -g edge-impulse-cli on a riscv64 machine with Node.js >=16 present. This has not been documented as tried or verified by anyone (Edge Impulse, RISE, or a third party) in any source checked. Success is contingent on sharp and serialport resolving on riscv64, which is unconfirmed and, for sharp, has at least one documented third-party failure report (Section 6, Section 9).
9. Dependencies
The CLI’s JS-level dependency tree (express, ws, socket.io, undici, tar, yauzl, cbor, js-yaml, papaparse, jpeg-js, etc.) is pure JavaScript and architecture-agnostic. Two dependencies carry native/compiled, architecture-dependent code, plus the JS runtime itself:
| Dependency | Role | riscv64 build | riscv64 test | riscv64 release | Blocking issues |
|---|---|---|---|---|---|
Node.js / V8 (engine >=16) |
JS runtime + JIT for the whole CLI | Found in Ubuntu 26.04 riscv64 (resolute) as a distro-built package. Upstream Node.js declined official riscv64 support: nodejs/node#56175 “Please add official support for riscv64-linux”, closed not planned. Only community unofficial-builds.nodejs.org binaries exist upstream. |
Multiple open 2026 correctness bugs on riscv64: nodejs/node#65724 (SIGILL in JS-to-wasm wrapper, opened 2026-09-01), #64538 (illegal-instruction crash from V8 vector-instruction misdetection, opened 2026-07-16), #64717 (test-code-cache fails w/ FFI, opened 2026-07-24), #61110 (Single Executable Application tests fail, opened 2025-12-18) |
No official upstream binary release for riscv64; distro-built or unofficial-builds only | nodejs/node#56175 (official support declined), #65724, #64538, #64717 (all open) |
| sharp 0.32.6 | Native image decode/resize (uploader/data pipelines for image datasets) | libvips (its C backend) found in Ubuntu 26.04 riscv64 (resolute): libvips-dev, libvips-tools, libvips42t64. sharp itself ships no prebuilt riscv64 binary; build-from-source reported failing even with system libvips present (lovell/sharp#4352, sharp 0.33.5 on Milk-V Mars, libvips 8.17.0 installed but build failed) |
No riscv64 CI evidence in the sharp repo; only user bug reports | No official riscv64 prebuilt npm binary; npm install --build-from-source is the only path and is not confirmed reliably working |
lovell/sharp#4367 “Prebuilt binaries for linux-riscv64” (closed, unresolved), #4352 (closed, unresolved) |
| serialport 8.0.8 | Native N-API serial-port bindings for daemon/uploader/serial-terminal | Not distro-tracked as a separate package (npm-distributed native module; largely self-contained C++, not tied to a shared lib like libserialport). Supporting system libs libserialport0/libserialport-dev, libudev1/libudev-dev present in Ubuntu 26.04 riscv64 (resolute). No riscv64-specific issues found in serialport/node-serialport (0 direct hits; 2 general ARM-adjacent issues, neither riscv64-specific) |
No riscv64 CI evidence found | Predates any riscv64 prebuild target (2019-era); npm install falls back to node-gyp rebuild from source, architecture-generic (no SIMD/asm), should compile given a build toolchain, but no confirmed successful report found |
None found - likely untested by that community, not evidence of a known fix |
Deeper trace of the libvips codec chain sharp depends on (all confirmed present in Ubuntu 26.04 riscv64 “resolute” per the project graph):
- libjpeg-turbo: has a real RVV 1.0 intrinsics SIMD port but declined to publish riscv64 release binaries (libjpeg-turbo#885, “won’t implement”); Ubuntu therefore carries pre-RVV versions. 2 of 590 unit tests fail on
qemu-system-riscv64(libjpeg-turbo#710, worked around). - libpng: upstream merged RVV support May 2025 (PR #666, released v1.6.49), with a follow-up build-break fix in v1.6.53 (PR #771) under
-march=rv64gv. No blocking issues. - libwebp: no RISC-V port at all upstream (0 riscv64 files in
src/dsp/, no CI target); Ubuntu ships a working scalar-C riscv64 build regardless. - zlib: pure-C, builds on riscv64 without dedicated effort; only OpenBSD/riscv64 CI exists upstream (merged PR #1139), no Linux/riscv64 CI; an RVV-accelerated Adler32 PR (#1099) is unmerged.
- Highway (libhwy): found packaged (
libhwy1t64) in Ubuntu 26.04 riscv64; not independently deep-dived in this pass.
The mitigating finding: the entire native library chain behind sharp (libvips, libjpeg-turbo, libpng, libwebp, zlib, lcms2, Highway, and further transitive deps) is already packaged and available on Ubuntu 26.04 riscv64, so a from-source sharp build against system libvips is theoretically viable on that distro even though sharp’s own npm distribution channel does not support riscv64 - the packaging/build glue is the gap, not the underlying C libraries.
Of these, libpng, libjpeg-turbo, libwebp, zlib, V8, and Highway are separately tracked in projects.yml; sharp, libvips, serialport, and Node.js itself are not currently tracked as separate projects in that file.
11. Known Bugs and Active Issues
No riscv64-related issues, PRs, or commits exist in edgeimpulse/edge-impulse-cli itself. Confirmed via multiple independent search passes:
search_issuesfor “riscv”, “riscv64”, “risc-v” scoped to the repo: 0 results each.search_pull_requestsfor “riscv”, “riscv64”, “risc-v”: 0 results each.search_commitsfor “riscv” (default branch): 0 results.- Full-repo case-insensitive
grep -ril "riscv"on a fresh clone: 0 matches.
| ID | Title | Status | Severity | Notes |
|---|---|---|---|---|
| - | No riscv64-related issue or PR exists in this repository | N/A | N/A | Corpus is empty, not merely thin |
Correctness bugs affecting riscv64 exist one dependency layer down, not in this repo: nodejs/node#65724 (SIGILL, open, 2026-09-01), nodejs/node#64538 (illegal-instruction crash, open, 2026-07-16), and lovell/sharp#4352 (install/build failure, closed unresolved). None of these are filed against edge-impulse-cli itself.
12. Objections and Upstream Blockers
Stated objections: none found - because no one has ever asked. No feature request, no tracking issue, and no discussion of riscv64 support exists anywhere in this repository’s history.
Technical blockers:
- No CI infrastructure of any kind exists to validate a riscv64 build even if contributed (Section 7).
- The
sharpnative dependency has a documented, unresolved riscv64 install/build failure report even when the systemlibvipsbackend is present (lovell/sharp#4352), which is a blocker outside this repo’s control. - Node.js itself carries open, unresolved 2026 correctness bugs (SIGILL/illegal-instruction crashes) on the only available (unofficial) riscv64 builds, and upstream Node.js has explicitly declined official riscv64 support (nodejs/node#56175).
Organizational blockers:
- No governance process exists for accepting new-platform contributions (no MAINTAINERS/GOVERNANCE doc, no PR template, no CODEOWNERS - Section 1).
- Single-vendor repo maintained exclusively by Edge Impulse Inc. staff/automation, with no RISE membership or RISE-tracked involvement of any kind found (Section “RISE Project” research, Section 13 below).
Acceptance probability: Low in the near term absent an external contribution, given zero prior engagement, no CI to validate a port, and unresolved blockers in two upstream dependencies (Node.js, sharp) that sit outside Edge Impulse’s control.
13. Readiness Assessment
- Color: orange
- Release provider: none
- Justification: No upstream CI of any kind exists for this repository (no
.github/workflows, no GitLab CI, no Jenkinsfile - confirmed on every branch via direct clone inspection and cross-checked against GitHub’s own code-search index), and no distribution ships a riscv64 package for this project under any name (Ubuntu 26.04 “resolute” package search returns no results for any architecture; no PyPI package exists; no Arch Linux RISC-V listing). Per the color model’s Step 1, “no upstream riscv64 CI” with no distribution floor available (nothing is packaged anywhere to apply the floor to) places this project at orange, not grey, because the absence is well-established through exhaustive search rather than being an unknown-unknown, and not red, because there is no direct evidence that edge-impulse-cli itself is confirmed broken on riscv64 (no one has attempted or reported an install on riscv64 in any source checked). See Ubuntu 26.04 package search and the GitHub Releases page. - This is not an optimization-purpose project (Step 2 does not apply); no
Optimization levelheader field is included. - Pending work that could change the grade: none identified. No open PRs, no open issues, and no RISE involvement of any kind exists for this project (confirmed by checking riseproject.dev/blog via its feed - 26 posts scanned back to September 2024, the RISE GitLab wheel builder - 85 packages listed, none Edge Impulse-related, and the full
riseproject-devGitHub org - 25 repos, org-wide code search, and issue search inai-ml-wgandpython-wheels, all returning zero Edge Impulse CLI references). The single trace of “Edge Impulse CLI” anywhere in RISE-affiliated sources is an unresearched backlog entry in this repository’s own tracking queue (project-reports/.queue.yml), not a RISE-funded or RISE-tracked deliverable. Should upstream Node.js resolve its open riscv64 correctness bugs and sharp gain a working riscv64 build path, the practical runnability of this CLI on riscv64 would improve without any change needed in edge-impulse-cli itself - but that is downstream work in other projects, not evidence bearing on this project’s own grade today.
14. Investment Analysis
RISE-funded work check: Confirmed zero RISE involvement with Edge Impulse CLI or its sibling repos (Section 13). No work is currently covered by RISE that would need to be excluded from sizing below.
14.1 Functional Enablement
Core CLI functionality (device management, data ingestion, daemon) is pure JavaScript and requires no porting work - it will run wherever Node.js >=16 runs. The functional risk is narrow and concentrated in validating the two native transitive dependencies (sharp, serialport) on riscv64: confirming npm install succeeds, that sharp builds against the already-packaged Ubuntu riscv64 libvips stack (or securing a working alternative), and that serialport’s node-gyp fallback compiles cleanly. No code changes to edge-impulse-cli itself are anticipated to be required; this is primarily a validation and packaging-glue exercise.
14.2 Performance Optimization
Not applicable. This project has no architecture-specific hot paths, no SIMD/JIT/crypto code of its own (Section 4), and is not optimization-purpose. Any performance characteristics on riscv64 are inherited entirely from the Node.js/V8 runtime, which is out of scope for this repo’s own optimization work.
14.3 CI/CD Infrastructure
The repository has no CI of any kind for any architecture, so introducing riscv64 CI first requires introducing CI at all (e.g., a baseline GitHub Actions workflow covering npm install && npm run build), then adding a riscv64 job (native runner or QEMU) atop it. This is a larger lift than adding a riscv64 job to an existing matrix, since there is no existing amd64/arm64 CI to extend.
14.4 Ecosystem Enablement
Not applicable - Section 10 is omitted per the report’s own rule. Edge Impulse CLI is a standalone tool distributed via npm; it has no dependent package ecosystem (no plugins, no packages that consume it as a library) requiring separate riscv64 enablement.
14.5 Summary Table
| Area | Work Item | Effort (person-weeks) | Owner | Priority |
|---|---|---|---|---|
| Functional | Validate npm install -g edge-impulse-cli end-to-end on riscv64 hardware/QEMU; confirm sharp builds against Ubuntu-packaged libvips or document a working workaround |
1-2 | Edge Impulse Inc. or a RISE-affiliated contributor | High |
| Functional | Track and, if feasible, contribute to resolving lovell/sharp#4352/#4367 upstream (sharp riscv64 prebuilt binaries or reliable from-source build) | 2-4 (upstream-dependent, outside this repo’s control) | sharp/lovell upstream, with possible RISE assistance | Medium |
| Functional | Validate serialport 8.0.8 node-gyp fallback build on riscv64; upgrade to a newer serialport release if compatibility issues are found |
0.5-1 | Edge Impulse Inc. or a RISE-affiliated contributor | Medium |
| CI/CD | Introduce a baseline GitHub Actions workflow for the repo (none currently exists for any architecture), then add a riscv64 build/test job | 1-2 | Edge Impulse Inc. | Medium |
| Runtime dependency | No direct action item for edge-impulse-cli; monitor upstream Node.js riscv64 correctness bugs (nodejs/node#65724, #64538) that could affect CLI reliability | N/A (tracking only) | N/A | Low |
15. Updates
(No updates yet - initial report dated 2026-09-08.)
16. References
- Edge Impulse CLI repository
- Edge Impulse CLI documentation
- Edge Impulse CLI releases page
- Edge Impulse CLI v1.13.16-alpha expanded assets
- Edge Impulse CLI tags
- npm registry: edge-impulse-cli
- PyPI JSON API: edge-impulse-cli (404)
- PyPI simple index: edge-impulse-cli (404)
- Ubuntu 26.04 (resolute) package search: edge-impulse-cli
- Arch Linux RISC-V port search
- RISE GitLab wheel builder
- RISE Project blog
- RISE Project homepage
- nodejs/node#56175 - official riscv64-linux support declined
- nodejs/node#65724 - SIGILL in JS-to-wasm wrapper
- nodejs/node#64538 - illegal-instruction crash from V8 vector-instruction misdetection
- nodejs/node#64717 - test-code-cache fails w/ FFI
- nodejs/node#61110 - Single Executable Application tests fail on RISC-V
- lovell/sharp#4352 - Error when installing on RISCV
- lovell/sharp#4367 - Prebuilt binaries for linux-riscv64
- libjpeg-turbo#885 - riscv64 release binaries declined (“won’t implement”)
- libjpeg-turbo#710 - 2/590 unit tests fail on qemu-system-riscv64
- Internal status reports:
project-reports/v8.md,project-reports/libjpeg-turbo.md,project-reports/libpng.md,project-reports/libwebp.md,project-reports/zlib.md - Local full checkout of
edgeimpulse/edge-impulse-cli(HEAD000b0f8, “Release v1.39.3”) at/home/user/edgeimpulse/edge-impulse-cli, used for direct filesystem/CI-configuration/grep verification /home/user/sw-ecosystem/projects.yml(project tracking scope reference)