Public code, private inventory
Open infrastructure is most useful when reusable mechanisms are separated from the identities and facts of one real deployment.
Publishing infrastructure code creates a tension that application repositories do not feel as sharply.
The useful parts are exactly the things worth showing: topology, bootstrap, policy, image construction, recovery, and delivery. The dangerous parts are often nearby: real machine identities, private addresses, secret history, operator habits, and the inventory of what actually exists.
The answer is not to keep everything private. It is to make the boundary structural.
Repositories should describe ownership
RS Platform uses separate repositories for shared foundations, applications, the public web presence, and eventually private home inventory.
That split is not about maximizing repository count. Each repository should answer who may change a thing and which deployment must move with that change. Shared networking belongs with the platform. Application source and delivery belong with the application. Host-specific Compose state and real device identity belong in a private inventory.
Reusable modules stay with their first consumer until a second real consumer proves the shared interface. Otherwise a “platform module” becomes a promise made before its requirements exist.
Publish the mechanism
The home plane can publish its generic Ubuntu Core image workflow, model assertion, agent source, policy, digest-pinned workload definitions, SBOM, and provenance.
The image itself is an install artifact, not a credential bundle. A real machine becomes a platform node only after hardware-bound enrollment and operator approval. Desired state may contain opaque node identifiers and secret references, while active nodes retrieve only their assigned values.
That lets someone inspect or reuse the engineering without learning which device is in which house or inheriting a fleet-wide key.
Treat history as part of the exposure
Changing a repository from private to public is not a visibility toggle. Its entire history, issues, workflows, artifacts, and assumptions need review.
A current tree with no secret can still contain an old credential. A generic configuration can still name a real host. A CI log can preserve a value that never appeared in Git.
Publication is therefore a repository-by-repository promotion with history and artifact review, not a blanket principle applied by checkbox.
Keep the public story independently available
The site and writing live as a separate static application. They can explain the platform when the platform itself is unavailable, and they contain no credential or control-plane dependency merely to render a page.
This independence also clarifies the audience. Public code shows how the system is built. Public writing explains why. Private inventory records which real resources currently embody it.
Openness works best when it exposes decisions and mechanisms without exposing the people and machines those mechanisms protect.