Raw dependency graph data (JSON)
SPIFFE / SPIRE
Author: Ludovic HENRY ludovic.henry@qti.qualcomm.com
Date: 2026-09-08
Readiness: orange
Scope: RISC-V (riscv64/linux) support status for SPIFFE / SPIRE
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
SPIFFE (Secure Production Identity Framework For Everyone) defines a workload-identity standard, and SPIRE (the SPIFFE Runtime Environment) is its reference implementation: a Go-based control plane (spire-server, spire-agent, plus an OIDC discovery provider) that performs node and workload attestation and issues X.509/JWT SVIDs (identity documents) to production workloads.
SPIRE is hosted by the Cloud Native Computing Foundation (CNCF), accepted 2018-03-29, and currently carries Graduated status in the Key Management category. License is Apache License 2.0.
Governance follows the SPIFFE project’s model, reporting to the SPIFFE Technical Steering Committee (TSC), engaged only for serious maintainer disputes (described in MAINTAINERS.md as never yet needed in practice). The project deliberately keeps 5 maintainer seats (odd number, to ease dispute resolution). Involuntary removal requires unanimous vote of the remaining maintainers, capped at one removal per 9-month window, with CNCF notified of all changes.
Corporate maintainer roster (from CODEOWNERS):
| Maintainer | GitHub | Company |
|---|---|---|
| Evan Gilman | @evan2645 | SPIRL, Inc. |
| Agustin Martinez Fayo | @amartinezfayo | Hewlett Packard Enterprise (HPE) |
| Sorin Dumitru | @sorindumitru | Bloomberg L.P. |
| Marcos Yacob | @MarcosDY | Hewlett Packard Enterprise (HPE) |
| Ryan Turner | @rturner3 | Cielara AI |
| Community Chair: Umair Khan | @umairmkhan | Stacklet, Inc. |
HPE holds 2 of 5 maintainer seats, the largest single corporate presence in governance. ADOPTERS.md lists a broad adopter base (Anthem, Bloomberg, ByteDance, Duke Energy, GitHub, Netflix, Niantic, Pinterest, Square, Twilio, Uber, Unity) and a wider user list including Amazon, Anthropic, Arm, Cisco, F5, HashiCorp, HPE, Intel, Google, IBM, SAP, VMware.
Community stance on new ports: doc/supported_operating_systems.md states the project is “open to adding operating systems to the officially supported list” but frames this explicitly as an ongoing maintenance commitment, not a one-time patch: a new platform requires in-tree node and workload attestor implementations, a dedicated CI runner running the integration suite on every PR, and a committed long-term community maintainer. No one has opened an issue, PR, or discussion proposing RISC-V support as of this report.
2. Port History and Upstreaming Timeline
No RISC-V port history exists. There is no tracking issue, no port pull request, and no commit anywhere in spiffe/spire that adds, discusses, or references RISC-V support in SPIRE’s own code, build system, or documentation.
Every GitHub search performed (mcp__github__search_issues, search_pull_requests, search_commits, search_code, scoped to repo:spiffe/spire, plus general org-wide queries) for riscv, riscv64, and risc-v returns either zero results or only incidental Dependabot dependency-bump PRs whose upstream dependency changelog happens to mention “riscv” (see Sections 9 and 11 for the full list). None of these PRs touch SPIRE’s own source, build matrix, or documentation.
| Date | Event | Source |
|---|---|---|
| n/a | No RISC-V port work of any kind exists in spiffe/spire | GitHub code search, 0 hits for “riscv”/”riscv64” |
There are no contributors, corporate or individual, associated with RISC-V work on this project because no such work exists. The project is not fully upstream on RISC-V; it is entirely absent from RISC-V.
3. Upstream Support Tier
doc/supported_operating_systems.md defines a formal, two-tier support policy:
- Officially supported: Linux, Windows. Built and released with full CI (unit + integration tests) on every PR; bugs are treated as project bugs.
- Supported for development: macOS. Builds and unit tests run in CI, no integration tests, best-effort issue handling.
- Everything else (explicitly, per the doc): “receives no project attention at all.”
Formal criteria to promote a platform to officially-supported status: (1) in-tree node and workload attestor implementations, (2) a dedicated CI runner so the integration suite runs on every PR, and (3) a committed community maintainer for the long haul (“Maintainers cannot take this on for platforms they do not run”). None of these three prerequisites exist for riscv64.
| Architecture | Build (upstream CI) | Test (upstream CI) | Official release artifact |
|---|---|---|---|
| amd64/x64 | Yes | Yes (unit + integration) | Yes (spire-*-linux-amd64-musl.tar.gz) |
| arm64 | Yes | Yes (unit + integration) | Yes (spire-*-linux-arm64-musl.tar.gz) |
| riscv64 | No | No | No |
Source: pr_build.yaml and release_build.yaml, both read directly at commit b232c970fcb66be40f334f57c0c462996a15c25c, confirm arch: [x64, arm64] as the complete build matrix in both files, with no third entry.
4. Technical Architecture and RISC-V-Specific Subsystems
SPIRE has no architecture-specific source code for any architecture. It is a pure-Go application with one cgo dependency (mattn/go-sqlite3, gated behind an optional sqlite3 datastore backend) and no hand-written assembly, no SIMD/vector kernels, and no JIT compiler of its own.
Repository-wide search confirms this:
mcp__github__search_codequeries for__riscv repo:spiffe/spire,riscv64 repo:spiffe/spire, andGOARCH repo:spiffe/spireeach returned 0 results (control querypackage mainreturned 459 hits, confirming the index itself is live).- Full local-clone grep (
grep -rniE "riscv|risc-v" ., excluding.git) returned 0 matches anywhere in source, docs, tests, CI, or shell scripts. - Only one Go file in the entire repository references
amd64at all (pkg/agent/plugin/workloadattestor/k8s/k8s_posix_test.go), and that reference is a container-image tag string in a test fixture (quay.io/coreos/flannel:v0.9.0-amd64), not an architecture-conditional code path. Zero Go files referencearm64. The only//go:buildconstraint found in the codebase (!windows) is OS-level, not CPU-architecture-level.
| Component | amd64 | arm64 | riscv64 |
|---|---|---|---|
| Hand-written assembly / SIMD | None (pure Go) | None (pure Go) | None (pure Go) - N/A, none exists for any arch |
| JIT compiler | None in SPIRE itself | None in SPIRE itself | None in SPIRE itself |
| cgo (SQLite datastore) | Standard gcc toolchain | Standard gcc toolchain | Untested - no riscv64 gcc cross-toolchain wired into the Dockerfile/Makefile |
| Crypto (TLS/SVID signing) | Go stdlib + golang.org/x/crypto, portable |
Go stdlib + golang.org/x/crypto, portable |
Portable Go fallback available (per-arch assembly in x/crypto degrades gracefully; not verified end-to-end for SPIRE’s build) |
Because SPIRE implements no per-architecture compute logic anywhere, its amd64/arm64 “support” is entirely a build/release-infrastructure property (CI matrix membership plus Docker TARGETARCH branching), not a code-quality property. riscv64 is absent at that same infrastructure layer, not as a degraded/stub implementation, so there is nothing to grade as partial, minimal, or scalar - it is simply not present as a build target.
5. Build System, Cross-Compilation, and Toolchain
SPIRE is a pure Go project with no CMake build system - there is no CMakeLists.txt, no cmake/ directory, and no toolchain files anywhere in the repository. Build orchestration is a top-level Makefile that wraps the Go toolchain (go build, go test, protoc codegen) plus a Dockerfile for containerized multi-arch builds.
- Go version pinned via
.go-versionandgo.mod: 1.27.1. No separately stated minimum GCC/Clang version exists in the repository; the Alpine-based Docker builder installsclang,lld,build-base,musl-devat whatever version ships withalpine3.23, unpinned. - Main
Dockerfileusestonistiigi/xx:1.7.0(a generic Clang-based cross-compilation helper, not QEMU) inside agolang:1.27.1-alpine3.23base, withCGO_ENABLED=1andlibseccomp-devinstalled viaxx-apk.TARGETARCHhandling explicitly special-cases onlyarm64ands390xfor the muslCCcross-compiler prefix (aarch64-alpine-linux-musl,s390x-alpine-linux-musl); there is no riscv64 branch. .github/workflows/scripts/build_linux_artifacts.shhardcodes its entire architecture dispatch as two lines:build_artifact amd64andbuild_artifact arm64- no riscv64 call exists, commented out or otherwise.- The Makefile’s OS/architecture autodetection block explicitly errors out (
$(error unsupported ARCH: $(arch1))) for any architecture other thanx86_64,aarch64/arm64,s390x, andppc64le. riscv64 would hit this error path if attempted. - No QEMU usage exists anywhere in the Makefile or Dockerfiles for any supported architecture - cross-compilation uses Clang via
xx, not emulation. - No
BUILDING.md,docs/building.md, ordocs/cross-compilation.mdexists; build instructions live inCONTRIBUTING.mdunder “## Building” (make,make all,make bin/spire-server,make bin/spire-agent,make bin/oidc-discovery-provider,make images,make test).
Known build failures on riscv64: none documented, because no one has attempted or reported a riscv64 build. This is an untested gap, not a confirmed failure - Go’s standard GOARCH=riscv64 cross-compilation would very likely produce a working binary for the pure-Go portions, but the cgo-gated SQLite datastore path and the Docker/Makefile toolchain plumbing above would require new work (a riscv64 gcc cross-toolchain wired into xx/Alpine, plus a new TARGETARCH branch and Makefile arch-detection entry) before an official riscv64 artifact could be produced through the existing pipeline.
6. Feature Coverage and Gap Analysis vs arm64 and amd64
| Feature | amd64 | arm64 | riscv64 |
|---|---|---|---|
| spire-server binary | Builds, tested, released | Builds, tested, released | Not built, not tested, not released |
| spire-agent binary | Builds, tested, released | Builds, tested, released | Not built, not tested, not released |
| Node attestor plugins | Full | Full | Untested (no riscv64-specific attestor gap identified, but never exercised) |
| Workload attestor plugins | Full | Full | Untested |
| SQLite datastore (cgo) | Works | Works | Untested - no riscv64 cross-toolchain wired in |
Container images (ghcr.io/spiffe/spire-server, etc.) |
Published | Published | Not published |
| OIDC discovery provider | Built, released | Built, released | Not built, not released |
There is no performance-gap analysis to make: SPIRE has no SIMD/vector code paths on any architecture (Section 4), so there is no “missing SIMD” delta to characterize on riscv64 relative to amd64/arm64 - the gap is purely one of build/test/release existence, not of execution quality once built.
Security hardening gaps: not evaluable - since no riscv64 build has ever been produced or tested, there is no data on whether SPIRE’s seccomp profile, cgo/SQLite linkage, or crypto stack behave correctly on riscv64. This is an unknown, not a confirmed absence of hardening.
NaN / floating-point semantics issues: none found or applicable - SPIRE’s control-plane logic (attestation, SVID issuance, X.509/JWT signing) does no floating-point numerical computation of the kind that would expose RISC-V floating-point semantics differences.
7. CI/CD Infrastructure
No riscv64 CI exists for SPIFFE/SPIRE. This was verified by direct content reads (not GitHub search alone) of every file in .github/workflows/: assign_reviewer.yaml, assign_reviewer_review_apply.yaml, assign_reviewer_review_capture.yaml, dco.yaml, dependabot_milestone.yml, depsreview.yaml, milestone_check.yaml, nightly_build.yaml, pr_build.yaml, release_build.yaml, stalebot.yaml. Zero case-insensitive matches for riscv/RISCV/RISC-V in any of them. No .gitlab-ci.yml, Jenkinsfile, or .cirrus.yml exists in the repository.
Runner/architecture inventory read directly from pr_build.yaml and release_build.yaml:
- Runners used:
ubuntu-22.04,ubuntu-24.04,ubuntu-24.04-arm,ubuntu-22.04-arm,windows-2022,ubuntu-latest. - Build matrix
arch:values in both files:[x64, arm64]only. nightly_build.yamlhas only two jobs, bothruns-on: ubuntu-22.04, with no arch matrix at all.- No riscv64 runner label, no QEMU-based riscv64 emulation step, and no riscv64 cross-compilation target anywhere in the workflow set.
- No use of RISE RISC-V runners (no reference to
riseproject-devor any RISE runner label anywhere in the workflow files).
| amd64/x64 | arm64 | riscv64 | |
|---|---|---|---|
| CI builds | Yes (ubuntu-24.04/ubuntu-22.04) |
Yes (ubuntu-24.04-arm/ubuntu-22.04-arm) |
No |
| CI runs tests | Yes (unit + integration) | Yes (unit + integration) | No |
| CI publishes release artifact | Yes | Yes | No |
| Runner type | Native GitHub-hosted (ubuntu-*) |
Native GitHub-hosted (ubuntu-*-arm) |
N/A |
| RISE runner usage | No | No | No |
RISE (riseproject.dev) has no involvement with SPIFFE/SPIRE whatsoever: it is not a RISE member project, has no RISE blog post, no dedicated repo in the riseproject-dev GitHub org (25 repos checked, none SPIFFE/SPIRE-related via both search_repositories and search_code), and no RISE runner usage. The only mentions of SPIFFE/SPIRE found in RISE-adjacent or local tracking material are (1) an unactioned candidate entry in this repository’s own project-reports/.queue.yml, and (2) spiffe/go-spiffe appearing as a third-party dependency in an unrelated Traefik RISC-V readiness report - neither reflects RISE project involvement with SPIRE itself.
8. Distribution and Release Status
No official riscv64 binaries exist for SPIFFE/SPIRE from any channel checked.
- GitHub Releases: latest release v1.15.3 (2026-08-21) assets are
spire-1.15.3-linux-amd64-musl.tar.gz,spire-1.15.3-linux-arm64-musl.tar.gz,spire-1.15.3-windows-amd64.zip, plus matchingspire-extras-*bundles, sha256sums, and source archives. Zero asset filenames in any recent release contain “riscv” or “riscv64”. Source: spiffe/spire releases. - PyPI: the
spiffepackage (a separate, minor Python SDK, not the Go server/agent) publishes pure-Pythonpy3-none-anywheels and sdists across all 38 files, versions 0.1.0-0.3.1 - architecture-independent by construction, so this is not evidence either way about the compiled Go binaries. Source: pypi.org/pypi/spiffe/json. - RISE Python wheel builder: request to
https://gitlab.com/api/v4/projects/56254198/packages/pypi/simple/spiffe/returned an HTTP 302 redirect topypi.org, i.e. RISE does not host a dedicated build for this package - it defers to upstream PyPI (which, as above, is pure-Python anyway). - Ubuntu (all suites, including resolute/26.04): no
spire,spiffe,spire-server, orspire-agentbinary package exists in any suite. The only match isgolang-github-spiffe-spire-api-sdk-dev(present in noble, questing, resolute), architectureall- a Go source/protobuf-definitions library, not a compiled SPIRE binary. Source: packages.ubuntu.com search. - Arch Linux RISC-V port (
archriscv.felixc.at): zero matches for “spire” or “spiffe”. - OCI/container images (
ghcr.io/spiffe/spire-server,spire-agent,oidc-discovery-provider): published for amd64/arm64 only, consistent with the release_build.yamlarch: [x64, arm64]matrix; no riscv64 platform tag found.
What a user must do today to get a working riscv64 binary: build from source with the standard Go toolchain (GOARCH=riscv64 GOOS=linux go build ./cmd/spire-server and equivalent for spire-agent), bypassing the project’s own Makefile/Docker pipeline (which errors out on unrecognized architectures per Section 5) or patching around that limitation. If the SQLite datastore backend is required, a riscv64 gcc cross-toolchain must also be available since that path uses cgo. This is unverified as a working procedure - no one has reported attempting or succeeding at it upstream.
9. Dependencies
| Dependency | Role | riscv64 build | riscv64 test | riscv64 release | Community/notes |
|---|---|---|---|---|---|
tetratelabs/wazero (now wazero/wazero) |
JIT/AOT WASM runtime, transitive via open-policy-agent/opa |
Builds (pure Go, no cgo) | Interpreter engine tested on riscv64 upstream; Compiler (JIT/AOT) engine explicitly unsupported on riscv64 per project README compatibility matrix | Go module, source-built | Structural gap: no JIT backend for riscv64, falls back to slower interpreter. Closed issue wazero/wazero#249 (resolved); no open riscv64 issues found. |
open-policy-agent/opa |
Embedded Rego policy engine; optional WASM target pulls in wazero | Builds (pure Go) | No dedicated riscv64 CI found upstream | Go module | Inherits wazero’s WASM-path JIT gap; risk applies only if SPIRE exercises the WASM policy-evaluation path. |
mattn/go-sqlite3 |
cgo binding for optional SQLite datastore backend | Requires working cgo + riscv64 C toolchain; no riscv64-specific code issues found | No go-sqlite3-specific riscv64 CI found | Go module, source-built | Underlying C SQLite engine is functionally complete on riscv64 (portable C, no SIMD/JIT) per separate SQLite research; no riscv64-specific issues open or closed for go-sqlite3 itself. |
cloudflare/circl |
Advanced crypto primitives (incl. post-quantum), via JOSE/signing chain | Portable Go fallback on riscv64 (hand-asm only for amd64/arm64) | No riscv64-specific issues found | Go module | 1 unrelated open generic-impl issue (#120, P384); no riscv64 issues. |
decred/dcrd/dcrec/secp256k1/v4 |
secp256k1 elliptic-curve crypto | Portable Go fallback on riscv64 | No issues found | Go module | 0 riscv64-related results. |
klauspost/compress |
Compression codecs, transitive dependency | Portable Go fallback on riscv64 | No riscv64 issues found | Go module | 1 unrelated closed issue (#532, aarch64 timeout). |
golang/snappy |
Compression codec (distinct from C++ google/snappy) | Portable Go fallback on riscv64 | No riscv64 issues found | Go module | Do not conflate with the C++ google/snappy project, which has separate, unrelated RVV work in flight. |
golang.org/x/crypto |
TLS/crypto primitives (chacha20poly1305, curve25519, etc.) | Portable Go fallback on riscv64; per-arch assembly for amd64/arm64/s390x | riscv64 is a Tier-2 Go port exercised by the Go project’s own build infrastructure | Go module | None found specific to this package. |
filippo.io/edwards25519 |
Ed25519 crypto (indirect) | Pure Go, architecture-neutral by construction | No riscv64 concerns | Go module | None. |
Critical-dependency deep dive: the only structural, unresolved riscv64 gap among SPIRE’s dependencies is wazero’s missing JIT/Compiler backend on riscv64, which transitively affects open-policy-agent/opa’s optional WASM policy-execution path. All other flagged dependencies (crypto and compression libraries) degrade gracefully to a portable Go scalar fallback on riscv64 with no reported functional blockers. Note that the SPIRE toolchain manifest is go.mod only - the project has no CMakeLists.txt, setup.py, or Cargo.toml.
Unresolved research gap: the project-graph MCP server was unavailable for this entire research pass (CONNECTION_CLOSED), so the two SPARQL queries against the Ubuntu 26.04 (resolute) package graph for golang-1.27/golang-go and gcc-riscv64-linux-gnu toolchain availability could not be run. This is a tooling outage, not a confirmed finding either way, and should be re-run once the server reconnects.
11. Known Bugs and Active Issues
| ID | Title | Status | Severity | Notes |
|---|---|---|---|---|
| n/a | No riscv64-related issue, PR, or commit exists in spiffe/spire | n/a | n/a | Confirmed via mcp__github__search_issues/search_pull_requests/search_commits/search_code for riscv, riscv64, risc-v scoped to repo:spiffe/spire - all return 0 results for issues/commits |
| PR #4409 | Bump golang.org/x/sys from 0.10.0 to 0.11.0 | Merged 2023-08-08 | n/a (not a SPIRE-side change) | Dependency changelog mentions “unix: add riscv_hwprobe for riscv64” - unrelated to SPIRE code |
| PR #4933 | Bump github.com/shirou/gopsutil/v3 from 3.24.1 to 3.24.2 | Merged 2024-03-03 | n/a | gopsutil changelog mentions “add support for OpenBSD/riscv64” - unrelated |
| PR #5465 | Bump golang.org/x/sys from 0.24.0 to 0.25.0 | Merged 2024-09-05 | n/a | x/sys changelog: “update riscv64 hwprobe to Linux kernel 6.10” - unrelated |
| PR #6047 | Bump golang.org/x/sys from 0.32.0 to 0.33.0 | Merged 2025-05-08 | n/a | x/sys changelog: “cpu: add crypto extensions detection for riscv64” - unrelated |
| PR #6095 | Bump github.com/docker/docker from 28.1.1 to 28.2.1+incompatible | Closed without merging (superseded by #6097) | n/a | Docker’s seccomp profile changelog mentions riscv_hwprobe syscall allowlisting - never shipped via this PR |
| PR #6457 | Bump github.com/google/go-containerregistry from 0.20.6 to 0.20.7 | Merged 2025-11-30 | n/a | changelog mentions “Build artifacts for riscv64” - unrelated to SPIRE |
| PR #6526 | Bump github.com/shirou/gopsutil/v4 from 4.25.11 to 4.25.12 | Merged 2026-01-01 | n/a | gopsutil release notes: “[cpu][linux]: add riscv cpu parser” - unrelated |
| PR #6979 | Bump the golang-org-x group across 1 directory with 3 updates | Merged 2026-05-26 | n/a | x/sys changelog: “cpu: detect zbc extension on riscv64” - unrelated |
| PR #7227 | build(deps): bump the minor-and-patch group with 16 updates | Merged 2026-08-20 | n/a | x/crypto changelog: “crypto/internal/poly1305: provide optimised assembly for riscv64” - unrelated |
Correctness bugs: none found or applicable - since no riscv64 build has ever been produced by this project, there is no reported runtime behavior (correct or incorrect) to evaluate. No NaN/floating-point issues were found because SPIRE performs no relevant floating-point computation (Section 6).
All nine “riscv”-mentioning PRs above are Dependabot dependency bumps whose bodies incidentally quote an upstream dependency’s own changelog text; none is a tracking issue, port PR, or CI change for SPIRE itself.
12. Objections and Upstream Blockers
Stated objections: none found - no maintainer has commented for or against RISC-V support, because no one has proposed it.
Technical blockers:
- No riscv64 entry in the CI build matrix (
pr_build.yaml,release_build.yaml) - would need to be added. - No riscv64 branch in the Dockerfile’s
TARGETARCHhandling and no riscv64 gcc cross-toolchain wired into the Alpine/xxbuild path (needed for the cgo-gated SQLite datastore). - Makefile’s architecture-detection block explicitly errors on unrecognized architectures - needs a new case for riscv64.
- wazero (transitive, via OPA’s optional WASM path) has no JIT/Compiler backend for riscv64 - only relevant if SPIRE’s WASM policy-evaluation path is exercised in production configurations.
Organizational blockers: per doc/supported_operating_systems.md, official support requires (1) in-tree node and workload attestor implementations for the platform, (2) a dedicated CI runner running the integration suite on every PR, and (3) a committed long-term community maintainer. None of these three exist for riscv64 today, and standing up all three is an explicit prerequisite the maintainers have stated they will hold to (“Maintainers cannot take this on for platforms they do not run”).
Acceptance probability: the stated policy is that the project is open in principle to new platforms, and the technical blockers are modest (SPIRE has no per-architecture source code to port - Section 4). The primary blocker is organizational: nobody has stepped up as a committed riscv64 maintainer, and no CI runner has been contributed. Given the policy’s explicit precondition list, a well-resourced sponsor (silicon vendor or RISE-adjacent effort) contributing CI infrastructure and a maintainer commitment would likely be well received, but as of this report no such effort has been initiated.
13. Readiness Assessment
- Color: orange (from skill invocation of
/project-color-codingagainst this project’s findings; case is “no upstream CI and no distro package,” the closest fit among the model’s orange sub-cases) - Release provider: none - no channel (upstream, RISE, distro, or third party) publishes a riscv64 artifact for SPIFFE/SPIRE.
- SPIRE is not an optimization-purpose project (it is an identity/attestation control plane, not a project whose value proposition depends on algorithmic speed), so the Step 2 optimization modifier does not apply and no Optimization level is reported.
- Justification: Upstream CI’s build matrix is
arch: [x64, arm64]only, confirmed by direct reads ofpr_build.yamlandrelease_build.yamlat commitb232c970, with zero riscv64 references anywhere in the workflow set. No Linux distribution ships a compiledspire-server/spire-agentbinary for any architecture - the only Ubuntu match is anarch: allGo source-library stub (packages.ubuntu.com), so the distribution floor (which would otherwise cap at yellow or orange) does not apply because there is no distro package to floor on. Per the color model’s default rule, “no upstream CI and no distro package” resolves to orange, not red (no evidence of confirmed breakage - this is untested, not broken) and not grey (ample data exists to classify confidently). - Pending work that could change the grade: none identified. There is no open PR, no open issue, and no RISE Project involvement of any kind tied to SPIFFE/SPIRE (Section 7). The grade will not move until either (a) a distro packages a working riscv64 build (yellow floor), or (b) upstream adds a riscv64 CI build-and-test job and/or release artifact (yellow/blue/green depending on scope).
14. Investment Analysis
RISE has done and funded nothing for SPIFFE/SPIRE (Section 7) - all work sized below is unclaimed.
14.1 Functional Enablement
- Add a
riscv64entry to thearch:matrix inpr_build.yamlandrelease_build.yaml, and a matching runner. - Add a
riscv64branch to the Dockerfile’sTARGETARCHhandling (mirroring the existingarm64/s390xcases) and install a riscv64 gcc cross-toolchain viaxx-apkfor the cgo-gated SQLite datastore path. - Add a riscv64 case to the Makefile’s architecture-detection block (currently errors on unrecognized architectures).
- Validate node/workload attestor plugins function correctly on riscv64 (no known architecture-specific logic in these plugins per Section 4, but unverified end-to-end).
- Estimated effort: 2-4 person-weeks for an engineer already familiar with SPIRE’s build system, assuming no unexpected attestor or cgo/SQLite issues surface.
14.2 Performance Optimization
Not applicable in the traditional sense - SPIRE has no SIMD/vector/JIT code paths on any architecture to optimize (Section 4). The only performance-relevant gap is wazero’s missing riscv64 JIT/Compiler backend, which is an upstream wazero project concern, not something fixable within SPIRE itself; SPIRE could avoid the affected WASM/OPA path if riscv64 performance in that path proves inadequate, at no engineering cost of its own. No dedicated optimization work is sized here.
14.3 CI/CD Infrastructure
- Stand up a riscv64 CI runner (RISE free GitHub riscv64 runners are a plausible source, though no relationship currently exists - see Section 7) and wire it into the existing
pr_build.yaml/release_build.yamljob structure alongside the existing x64/arm64 matrix entries. - Add riscv64 to the integration-test job matrix once the runner exists, matching the arm64 precedent (arm64 was added specifically to close this kind of arch gap, per its own CI history).
- Estimated effort: 1-2 person-weeks for CI wiring, contingent on runner availability (external dependency, not purely internal effort).
14.4 Ecosystem Enablement
Not applicable - Section 10 is omitted because SPIRE has no significant dependent package ecosystem (no npm/PyPI/Maven consumer ecosystem depends on riscv64-specific SPIRE artifacts; the separate spiffe PyPI SDK is pure-Python and already architecture-independent).
14.5 Summary Table
| Area | Work Item | Effort (person-weeks) | Owner | Priority |
|---|---|---|---|---|
| Functional | Add riscv64 to CI build matrix, Dockerfile TARGETARCH branch, riscv64 gcc cross-toolchain, Makefile arch-detection case |
2-4 | Unclaimed | High |
| Functional | Validate node/workload attestor plugins on riscv64 | 0.5-1 | Unclaimed | Medium |
| CI/CD | Stand up riscv64 CI runner and wire into pr_build.yaml/release_build.yaml | 1-2 | Unclaimed (RISE runners a plausible source, no current relationship) | High |
| CI/CD | Add riscv64 to integration-test job matrix | 0.5-1 | Unclaimed | Medium |
| Performance | None sized - no SIMD/JIT code paths in SPIRE itself; wazero JIT gap is an upstream wazero concern | n/a | n/a | Low |
15. Updates
(No updates yet - initial report dated 2026-09-08.)
16. References
- spiffe/spire GitHub repository
- SPIFFE homepage
- spiffe/spire release_build.yaml workflow
- spiffe/spire pr_build.yaml workflow
- spiffe/spire nightly_build.yaml workflow
- spiffe/spire doc/supported_operating_systems.md
- spiffe/spire MAINTAINERS.md
- spiffe/spire CODEOWNERS
- spiffe/spire ADOPTERS.md
- spiffe/spire LICENSE
- spiffe/spire releases page
- spiffe/spire Makefile
- spiffe/spire Dockerfile
- spiffe/spire CONTRIBUTING.md
- PyPI spiffe package JSON API
- RISE Python wheel builder index for spiffe (redirects to PyPI)
- Ubuntu package search: spire
- Ubuntu package search: spiffe
- Arch Linux RISC-V port package search
- riseproject.dev homepage
- riseproject.dev blog
- riseproject.gitlab.io Python wheel builder
- PR #4409 - Bump golang.org/x/sys from 0.10.0 to 0.11.0
- PR #4933 - Bump github.com/shirou/gopsutil/v3 from 3.24.1 to 3.24.2
- PR #5465 - Bump golang.org/x/sys from 0.24.0 to 0.25.0
- PR #6047 - Bump golang.org/x/sys from 0.32.0 to 0.33.0
- PR #6095 - Bump github.com/docker/docker (closed without merging)
- PR #6457 - Bump github.com/google/go-containerregistry from 0.20.6 to 0.20.7
- PR #6526 - Bump github.com/shirou/gopsutil/v4 from 4.25.11 to 4.25.12
- PR #6979 - Bump the golang-org-x group across 1 directory with 3 updates
- PR #7227 - build(deps): bump the minor-and-patch group with 16 updates
- wazero/wazero GitHub repository
- wazero/wazero issue #249 - interpreter copysign f32 spec compatibility on RISC-V 64 (resolved)
- open-policy-agent/opa GitHub repository
- mattn/go-sqlite3 GitHub repository