Create a Module
The easiest way to contribute to the TinySystems ecosystem is to create your own module. A module is a Go program that packages one or more components into a Kubernetes operator.
Quick Start
- Use the example-module template repository
- Write your components
- Push a semver tag (
vX.Y.Z) — GitHub Actions builds the image and pushes it to GHCR asghcr.io/<org>/<module>:X.Y.Z(thevis stripped) - List the version in a module repo's
module.yaml, regeneratecomponents.yamlfrom the image, and runtiny repo index - Anyone who has added that repo (
tiny repo add) — or any platform workspace that registers it — can now install your module
For the full walkthrough, see Create Your Own Module.
How It Works
When you push a tag, the CI pipeline builds a container image from your Dockerfile and pushes it to GHCR. That image is the whole artifact — there is no publish step, no developer key, and no approval process.
Consumers find your module through a module repo index: a static index.yaml
generated from per-module module.yaml manifests with tiny repo index, hosted
anywhere as plain files. Listing your module there is what makes it installable —
via tiny repo add <alias> <url> on the CLI side, or via a workspace's
registered module repos on the platform side.
The index carries only discovery metadata (components.yaml: name, description,
info, tags per component). Port schemas are not published ahead of time — the
operator introspects them from the running module and reports them in its
status.