Skip to content

Features

Plain and Managed repository generation, package pools, policy, signing, transactions, publication, and audit.

SOW has two isolated execution paths. Plain mode is a stateless rebuild of one directory; Managed mode records package membership and immutable repository generations in a workspace. Neither path silently adopts state from the other.

Capability matrix

Capability Plain Managed
RPM and DEB metadata yes yes
Mixed RPM + DEB operation one directory one Repository, separate Dists
Persistent membership and generations no yes
Per-architecture views and neutral packages no yes
exclude and version limit policy no yes
Metadata signing no RPM and DEB
RPM package signing --sign-with never, fill, always
Transaction journal and recovery rerun create workspace, Repository, publication
Queryable operation log and JSONL export no yes
Publication targets no filesystem and R2

SOW parses packages and renders metadata in-process. It does not invoke createrepo_c, dpkg-scanpackages, reprepro, or modifyrepo_c. RPM package signing is the exception: it needs the host rpm command and GPG environment because it rewrites package payloads.

Repository formats

Surface RPM/YUM DEB/APT
Package facts RPM header DEB control archive
Identity NEVRA + exact-byte SHA-256 name=version:arch + exact-byte SHA-256
Indexes primary, filelists, other, repomd.xml Packages, Packages.gz, Release
Neutral architecture noarch all
Immutable index paths checksum-named rpm-md by-hash/SHA256
Managed metadata signatures repomd.xml.asc InRelease, Release.gpg

SOW intentionally omits SQLite rpm-md, zchunk, modulemd, source-package indexes, and MD5/SHA1 DEB manifests. It builds repository files; it does not run an HTTP server or CDN.

Read by question

Question Page
What does sow create write and replace? Plain Flat Repositories
How do workspaces, repositories, Dists, and private state relate? Managed Workspaces
How does one pool feed many metadata-only views? Pool & Metadata Views
Why was a package excluded or limited? Membership Policy
Which key signs which object? Signing Model
What happens after interruption? Transactions & Recovery
How do I inspect, verify, and audit a repository? Observability & Audit

For release targets, filesystem requirements, clients, and Providers, use Platforms & Integrations.

Plain Flat Repositories

The one-pass, overwrite-rebuild contract behind sow create, including deterministic output and the Pigsty completion marker.

Managed Workspaces

The Workspace to Repository to Dist model, the fixed on-disk layout, how sow.yml drives everything, and the discovery and selection rules.

Pool & Metadata Views

One package, one owner, metadata-only APT/RPM views: canonical pool addressing, neutral packages, relocation, and the explicit reposync export.

Membership Policy

How exclude and limit decide which packages stay in a Dist: rule fields, glob matching, version ordering, and why loosening a policy never resurrects a removed member.

Signing Model

Two independent trust chains, four key-reference forms, in-process versus external signing, and safe key changes.

Transactions & Recovery

Managed-mode journals, the two-level lock model, fixed commit order, and evidence-driven crash recovery.

Observability & Audit

Use status, check, changes, retention, and the operation log without confusing state with proof.