Skip to main content

Test and submit

Before you submit, check that the manifest is valid and that the app actually starts on an Obacht device. Then send it in through the registry site.

Check the manifest​

The spec repo validates manifests with the same checks the registry runs: the JSON Schema, the semantic rules and the Compose allow list.

git clone https://github.com/obacht-dev/obacht-template-spec
cd obacht-template-spec/ts
pnpm install
cp ~/my-template/manifest.yml ../examples/my-template.yml
pnpm validate:examples

The validator reads every file in examples/, so put yours there. It names the field and the rule for every problem it finds. Fix until it passes.

Try it on your own device​

A device installs only manifests the registry has signed, so you cannot install your own manifest directly. What you can do is run its moving parts:

  • A bundle: install the app Custom Docker Composition from the store (under "For tinkerers & developers") and paste your Compose body into it. Replace ${cfg.…} and ${secret.…} by hand, or use the Environment field for them. The device applies the same allow list as for your template, so if it starts here, the body is fine. Details on Run your own Docker Compose.
  • A single container: put it into a Compose body with one service and do the same.

Check what a user would check: the web address opens, the first account can be created, data is still there after Stop and Start. Try it on the smallest device you claim in resources.

Watch how long the first start takes. If it is more than five minutes on the smallest device, set readiness.timeoutSeconds (see The manifest).

Things the device check catches that the schema does not: an image that has no linux/arm64 build, an app that only listens on 127.0.0.1 inside the container, a first start that takes longer than a few minutes.

Submit​

  1. Put the manifest in a public repository, next to a README if you like.
  2. Sign in on registry.obacht.dev/contribute with your Obacht account.
  3. Fill in the form. Template name and Repository URL are required. Add the Manifest URL (the raw link to manifest.yml), the category and platforms, and what you tested on in Notes for the reviewer. Both URLs must be public https links.
  4. Send it. The submission appears under Your submissions with its status.

The review​

The status moves from pending to reviewing to approved or rejected, and review notes show up next to it. We read the manifest, check that the images are what they claim to be, and install the template on a Raspberry Pi, a Linux PC and a Mac. Expect questions, especially about resources and settings.

When it is approved, we add it to the registry: the images are pinned, the manifest is signed, and the template appears in the store as Experimental. After a longer look it moves to Community (Reviewed). Accepted community templates go into the store from the public launch on.

Updates​

For a new upstream version, change the image tag, bump metadata.version and submit again with a note on what changed. Patch for a new image, minor when you add a setting, major when existing installs need different settings. Users see "Update to v…" on the app page.

Money for the project behind it​

From the public launch on, a template can pass money to the project behind it. Every template in the registry records whether its upstream project can receive money. Where the project has a payout channel (GitHub Sponsors, Open Collective and the like), a per-install fee goes to that project. No payout channel, no fee. During the pilot Obacht is free, so nothing is charged and nothing is paid out yet.

Tell us the project's funding links in the notes. How it works is on obacht.dev/open-source.

Questions​

Write to post@obacht.dev, or open an issue on obacht-template-spec if something in the spec is unclear.