managed
27 pages-
SOW v0.4.0
SOW 0.4.0 improved Managed repository verification and recovery. check reads each physical package once for its content hash. RPM verification keeps separate trust decisions for separate key sets. Publication targets can change their public URL or …
SOW 0.4.0 improved Managed repository verification and recovery. check reads each physical package once for its content hash. RPM verification keeps separate trust decisions for separate key sets. Publication targets can change their public URL or …
-
SOW v0.3.0
SOW 0.3.0 reduced repeated package reads and database queries. Plain generation uses one pass over package content. Managed builds cache parsed package data and commit new pool files in batches. This release also removed retired runtime and …
SOW 0.3.0 reduced repeated package reads and database queries. Plain generation uses one pass over package content. Managed builds cache parsed package data and commit new pool files in batches. This release also removed retired runtime and …
-
Design Principles
SOW separates package storage, repository builds, and publication. These principles explain where each kind of state belongs and how operations use it. One owner for each record Record Owner Package bytes and identity Repository Desired membership …
SOW separates package storage, repository builds, and publication. These principles explain where each kind of state belongs and how operations use it. One owner for each record Record Owner Package bytes and identity Repository Desired membership …
-
SOW v0.2.0
SOW 0.2.0 introduced Plain and Managed workflows for RPM and DEB repositories. It builds static package repositories with one Go executable on Linux or macOS. This page describes the 0.2.0 release. Use the current documentation for installation and …
SOW 0.2.0 introduced Plain and Managed workflows for RPM and DEB repositories. It builds static package repositories with one Go executable on Linux or macOS. This page describes the 0.2.0 release. Use the current documentation for installation and …
-
The v0.2 Reset: Plain and Managed Instead of a Universal Control Plane
On 2026-07-31, after sealing the v0.1 source baseline, SOW began a product reset. The goal was a small repository engine that could replace Pigsty’s daily package-build workflow. It kept the earlier lessons about integrity and recovery while removing …
On 2026-07-31, after sealing the v0.1 source baseline, SOW began a product reset. The goal was a small repository engine that could replace Pigsty’s daily package-build workflow. It kept the earlier lessons about integrity and recovery while removing …
-
sow build
sow build updates local indexes to match Desired membership and current configuration. Run it after add --skip, rm --skip, or a policy change. It recovers unfinished local Repository operations before starting the next build. Synopsis sow build …
sow build updates local indexes to match Desired membership and current configuration. Run it after add --skip, rm --skip, or a policy change. It recovers unfinished local Repository operations before starting the next build. Synopsis sow build …
-
sow status
sow status reports whether a Repository needs a build, how much pending data it holds, and whether a writer is active. It reads stored state without hashing package files. Use sow check to verify file contents. Synopsis sow status [-C|--workdir DIR] …
sow status reports whether a Repository needs a build, how much pending data it holds, and whether a writer is active. It reads stored state without hashing package files. Use sow check to verify file contents. Synopsis sow status [-C|--workdir DIR] …
-
sow where
sow where finds the Desired membership locations of one package across a Workspace. It searches all Repositories by default. Use -r or -d to limit the search. Synopsis sow where PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] …
sow where finds the Desired membership locations of one package across a Workspace. It searches all Repositories by default. Use -r or -d to limit the search. Synopsis sow where PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] …
-
sow show
sow show displays one package in the selected Repository. The text output summarizes its identity, storage, and membership. Add --json for the complete stored package record. Synopsis sow show PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist …
sow show displays one package in the selected Repository. The text output summarizes its identity, storage, and membership. Add --json for the complete stored package record. Synopsis sow show PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist …
-
sow ls
sow ls lists packages in the selected Dists’ Desired membership. Each row also shows the package’s Desired and Built locations across the Repository. Use it to obtain package references for show or rm. Synopsis sow ls [-C|--workdir DIR] [-r|--repo …
sow ls lists packages in the selected Dists’ Desired membership. Each row also shows the package’s Desired and Built locations across the Repository. Use it to obtain package references for show or rm. Synopsis sow ls [-C|--workdir DIR] [-r|--repo …
-
sow rm
sow rm removes packages from the selected Dists and rebuilds their local indexes. Use --check to preview the removal, or --skip to postpone the build. Package files remain in pool/ until sow gc can reclaim them. Synopsis sow rm PACKAGE... …
sow rm removes packages from the selected Dists and rebuilds their local indexes. Use --check to preview the removal, or --skip to postpone the build. Package files remain in pool/ until sow gc can reclaim them. Synopsis sow rm PACKAGE... …
-
sow add
sow add imports packages into the selected Dists and builds their local indexes. It reads package format and architecture from the package headers, then applies each Dist’s policy. Use --skip to import several batches before one build. To update a …
sow add imports packages into the selected Dists and builds their local indexes. It reads package format and architecture from the package headers, then applies each Dist’s policy. Use --skip to import several batches before one build. To update a …
-
Membership Policy
Use Dist policy to exclude unwanted packages and limit the number of versions in indexes. Set exclude and limit in sow.yml: dists: el9: format: rpm limit: 2 exclude: - kind: [debuginfo, debugsource, llvmjit] SOW applies exclude first, then limit. …
Use Dist policy to exclude unwanted packages and limit the number of versions in indexes. Set exclude and limit in sow.yml: dists: el9: format: rpm limit: 2 exclude: - kind: [debuginfo, debugsource, llvmjit] SOW applies exclude first, then limit. …
-
sow dist
sow dist manages the distributions that clients use. Each Dist contains either RPM or DEB packages. Dists in one Repository share pool/ and have separate indexes under dists/. Synopsis sow dist ls [-C DIR] [-r NAME] [--json] sow dist new NAME …
sow dist manages the distributions that clients use. Each Dist contains either RPM or DEB packages. Dists in one Repository share pool/ and have separate indexes under dists/. Synopsis sow dist ls [-C DIR] [-r NAME] [--json] sow dist new NAME …
-
Build the pigsty-infra Repository
pgsty/infra-pkg is the upstream build source for Pigsty Infra packages. This tutorial uses already-built RPMs and DEBs for x86-64 and ARM64. It creates an infra Repository with rolling channels, stable releases, and monthly snapshots. Install SOW, …
pgsty/infra-pkg is the upstream build source for Pigsty Infra packages. This tutorial uses already-built RPMs and DEBs for x86-64 and ARM64. It creates an infra Repository with rolling channels, stable releases, and monthly snapshots. Install SOW, …
-
Serve and Publish Repositories
SOW generates static repository files. This guide publishes a Managed Repository to a separate directory, then serves that directory with Nginx. It continues from First Workspace. The source is /srv/sow/local; the public copy will be …
SOW generates static repository files. This guide publishes a Managed Repository to a separate directory, then serves that directory with Nginx. It continues from First Workspace. The source is /srv/sow/local; the public copy will be …
-
sow repo
sow repo creates, lists, inspects, upgrades, and removes Repositories. Each Repository stores its packages in pool/ and its indexes in dists/. Packages are shared among Dists in the same Repository. Synopsis sow repo ls [-C DIR] [--json] sow repo new …
sow repo creates, lists, inspects, upgrades, and removes Repositories. Each Repository stores its packages in pool/ and its indexes in dists/. Packages are shared among Dists in the same Repository. Synopsis sow repo ls [-C DIR] [--json] sow repo new …
-
Core Concepts
Choose a mode Need Plain Managed Build indexes from a package directory sow create DIR Import packages with sow add Keep configuration and package membership Directory contents are the state sow.yml and private SQLite databases Organize packages One …
Choose a mode Need Plain Managed Build indexes from a package directory sow create DIR Import packages with sow add Keep configuration and package membership Directory contents are the state sow.yml and private SQLite databases Organize packages One …
-
Managed Workspaces
Use Managed mode for repositories that receive regular updates. SOW records package membership, applies Dist policy, builds metadata, and keeps operation history. Workspace, repository, and Dist Workspace └── Repository └── Dist └── Architecture view …
Use Managed mode for repositories that receive regular updates. SOW records package membership, applies Dist policy, builds metadata, and keeps operation history. Workspace, repository, and Dist Workspace └── Repository └── Dist └── Architecture view …
-
Your First Workspace
This example creates a Managed repository with two named package sets, called Dists: el9 for RPMs and bookworm for DEBs. Use an empty, writable /srv/sow directory, or substitute another path. Initialize the workspace sow init /srv/sow cd /srv/sow …
This example creates a Managed repository with two named package sets, called Dists: el9 for RPMs and bookworm for DEBs. Use an empty, writable /srv/sow directory, or substitute another path. Initialize the workspace sow init /srv/sow cd /srv/sow …
-
Features
SOW creates repository indexes in two modes. Choose Plain for a directory you can rebuild. Choose Managed for ongoing package updates, policy, signing, and publication. Capabilities Capability Plain Managed RPM and DEB indexes One directory, either …
SOW creates repository indexes in two modes. Choose Plain for a directory you can rebuild. Choose Managed for ongoing package updates, policy, signing, and publication. Capabilities Capability Plain Managed RPM and DEB indexes One directory, either …
-
sow init
sow init creates a Workspace with sow.yml and private .sow/ state. If the configuration already declares Repositories and Dists, it creates the missing ones. Run it again to complete initialization after adding declarations. Synopsis sow init [DIR] …
sow init creates a Workspace with sow.yml and private .sow/ state. If the configuration already declares Repositories and Dists, it creates the missing ones. Run it again to complete initialization after adding declarations. Synopsis sow init [DIR] …
-
sow.yml Reference
sow.yml configures a Managed workspace. It declares repositories, Dists, package policy, signing, and publication targets. Plain sow create does not read it. After editing the file, validate it and inspect the effective settings: sow config check sow …
sow.yml configures a Managed workspace. It declares repositories, Dists, package policy, signing, and publication targets. Plain sow create does not read it. After editing the file, validate it and inspect the effective settings: sow config check sow …
-
Build an APT Repository
This tutorial creates a new Managed DEB repository. Install SOW and Python 3, and prepare DEB files built for your clients. Use an empty /srv/sow directory that your user can create and write to, or substitute another writable path. 1. Create the …
This tutorial creates a new Managed DEB repository. Install SOW and Python 3, and prepare DEB files built for your clients. Use an empty /srv/sow directory that your user can create and write to, or substitute another writable path. 1. Create the …
-
Get Started
SOW turns RPM and DEB files into static YUM and APT repositories. Install SOW, then choose how to manage your packages: Plain mode: run sow create DIR to build indexes for the packages in a directory. Managed mode: create a workspace to group …
SOW turns RPM and DEB files into static YUM and APT repositories. Install SOW, then choose how to manage your packages: Plain mode: run sow create DIR to build indexes for the packages in a directory. Managed mode: create a workspace to group …
-
Build a YUM Repository
This tutorial creates a new Managed RPM repository. Install SOW and Python 3, and prepare RPM files built for your clients. Use an empty /srv/sow directory that your user can create and write to, or substitute another writable path. 1. Create the …
This tutorial creates a new Managed RPM repository. Install SOW and Python 3, and prepare RPM files built for your clients. Use an empty /srv/sow directory that your user can create and write to, or substitute another writable path. 1. Create the …
-
Design Records
Design records explain the choices behind SOW’s repository layout, state model, and publication workflow. Article dates record when a decision was documented; modification dates record later revisions. Start with these current design explanations: …
Design records explain the choices behind SOW’s repository layout, state model, and publication workflow. Article dates record when a decision was documented; modification dates record later revisions. Start with these current design explanations: …