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

  1. Use the example-module template repository
  2. Write your components
  3. Push a semver tag (vX.Y.Z) — GitHub Actions builds the image and pushes it to GHCR as ghcr.io/<org>/<module>:X.Y.Z (the v is stripped)
  4. List the version in a module repo's module.yaml, regenerate components.yaml from the image, and run tiny repo index
  5. 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.