Verifiable, repairable, generation-based package manager for UdonBSD.
This repository contains the current Rust implementation of Iris.
- content-addressed BLAKE3 store
- generation-based install / remove / rollback model
- SQLite-backed state tracking
- repository indexing for local paths and
file://repositories - Ed25519 trusted-key manifest verification during
repo sync - dependency-aware install / update planning
- fast
verifyand fullverify --full - UI-neutral request/response core API and a minimal
irisdUnix-socket daemon - orphaned config preservation,
repair,history,pin, andwhy
The long-form architecture and CLI specification live in:
docs/overview.mddocs/operations.mdspec/system-spec.mdspec/manifest-spec.mdspec/cli-spec.md
The current implementation is suitable as a release-hardened core for the Iris model described in the spec. It includes a local irisd Unix-socket daemon that performs startup and periodic full verification, persists the latest daemon verify status under the state root, supports explicit CLI delegation while keeping the default CLI path direct and fail-closed, and rejects long-running root execution unless an explicit privilege-drop target is configured.
cargo testcargo clippy --all-targets --all-features -- -D warningscargo build --release
- package ops:
install,remove,purge,update,search,info - integrity ops:
verify,repair,audit - generation ops:
generation list|switch|rollback|diff|gc - repository ops:
repo add <url> <trusted-key>,repo sync - state introspection:
history,pin,why,orphan list|show|purge - local daemon:
irisd --root <path>serving JSON over<state-root>/run/irisd.sock - root-start hardening:
irisd --user <name|uid> [--group <name|gid>] ... - daemon verification controls:
irisd --no-verify-on-start,irisd --verify-interval-secs <n> - explicit daemon transport:
iris --transport daemon [--socket <path>] ...
iris repo add stores a trusted Ed25519 public key for a repository. During repo sync, each package manifest must:
- declare
signature.algorithm = "ed25519" - reference the configured trusted public key
- contain a valid base64 Ed25519 signature over the unsigned manifest payload
If any manifest fails trust validation, the sync fails and the repository index is not replaced.
- default
verify: fast integrity checks for generation layout, symlink/store presence, and managed file existence verify --full: recomputes BLAKE3 for managed store-backed files and config files- config drift is reported as a warning rather than a hard corruption error
audit: aggregates repository trust checks, full verification results, and orphan-config warnings into a structured reportirisdbackground verification uses full verify, records the latest result inrun/daemon-status.json, and appends per-run records tolog/daemon-verify.jsonl
iris repo add file:///srv/iris/repo <base64-ed25519-public-key>iris repo synciris install helloiris verifyiris verify --fulliris history
- the implementation is developed and tested in this repository on Linux, while targeting the FreeBSD-oriented Iris design
- integration coverage for lifecycle, signature rejection, dependency resolution, and full verification lives in
tests/iris_flow.rs