All Sonny releases

Sonny 0.3.5

Published . Source commit 1d014bb9f6033e0f5aec459d559a3e03a6a7d0f9.

Download release JSON for this version's recorded download availability and publication evidence.

Downloads and verification

No verified downloads were recovered for this historical release.

The release entry exists, but its recorded release build failed or was skipped and package publishing was skipped. No installer links or file hashes are available in this record. This is not an installable release qualification.

No downloads were recovered from the original release attachments or visible generic packages in the six recorded states. The recorded source/tag-bound pipelines failed; their release builds failed or were skipped and package publishing was skipped. This is not proof of absence from deleted, unrelated or container storage, and does not qualify historical runtime behavior.

Release notes

These are the upstream release notes. Their runtime claims have not been requalified for this historical record.

v0.3.5 — Mesh authn/authz program + client mTLS flags

This release delivers the full mesh authn/authz program (7 sub-projects) plus the client-side mTLS CLI flags that make it usable end-to-end:

  • mesh/identity foundation: Principal model, SPIFFE-style URIs, per-type trust policy (node = cert-only, user = cert + getpwnam_r, svc = cert + YAML allowlist), audit-log field standard.

  • mesh/mtls: gRPC server credentials with mtls.Reloader for atomic SIGHUP-driven cert hot-reload; unary + stream server interceptors that extract the SPIFFE-ID from the peer cert and attach the resolved Principal to every RPC ctx; client credentials helper; PKCS#11 key loading via RFC 7512 pkcs11: URIs (ThalesGroup/crypto11) for HSM-backed server keys.

  • mesh/identity/sshkeys: OpenSSH authorized_keys parser + signature verifier with username extraction from a structured comment marker; v1 primitive for a future enrollment service.

  • mesh/identity/pam: cgo-backed pam_acct_mgmt + pam_open_session via msteinert/pam/v2; optional PAMChecker field on store.TrustPolicyEngine.

  • mesh/privsep: Supervisor.Spawn forks per-user workers via os/exec.Cmd with SysProcAttr.Credential, optionally holding a PAM session open for the worker’s lifetime; SIGTERM → 5s grace → SIGKILL stop; socketpair fd available for future IPC.

  • mesh/authz: YAML policy file + default-deny RBAC engine with built-in node / svc-readonly roles; gRPC unary + stream interceptors returning codes.PermissionDenied; SIGHUP reload that preserves prior state on parse failure.

  • packaging/systemd: hardened sonny-mesh.service unit (User=sonny, CAP_SETUID/CAP_SETGID only, full Protect*/syscall-allowlist hardening; systemd-analyze security score 2.3 OK); Debian and RPM packaging that creates the sonny system user and lays out /etc/sonny/mesh/{,principals.d,authorized_keys.d} with correct ownership.

  • cmd/sonny/cli: new persistent –client-cert / –client-key / –client-ca / –client-key-pin / –server-name flags on the mesh parent command so ‘sonny mesh nodes/sessions/push/attach/…’ can talk to mTLS-protected mesh nodes end-to-end.

Verified live on lothiriel: server with self-signed SPIFFE cert, client with full –client-* flag set, mesh nodes RPC returns the live node list through the full interceptor chain. Insecure clients correctly rejected at TLS handshake.

Deferred to follow-up releases:

  • 3b: SSH-key enrollment RPC + ‘sonny mesh login’ CLI
  • 5b: privsep wiring into actual session routing + ‘sonny mesh worker’ subcommand

Spec / plan / verification docs under docs/superpowers/{specs,plans}/.