This repository houses a curated collection of container definitions for robotics and edge‑AI workloads. Each container lives in its own directory under containers/
with a meta.json
, Dockerfile
, entrypoint.sh
and a small README.md
describing its purpose.
- Contribute a container – Add a new folder under
containers/<slug>/
with:meta.json
describing the container according to the schema inschema/container-meta.schema.json
.- A
Dockerfile
which builds the container for all declared architectures. - An
entrypoint.sh
script (or explanatory placeholder if not used). - An optional
README.md
with runtime notes and further details.
- Validation – Run
npm run validate
before opening a pull request. This checks that yourmeta.json
files conform to the schema and that the slug matches the directory name. - CI/CD – When a PR is merged into
main
the GitHub Actions workflow in.github/workflows/build-publish.yml
builds multi‑architecture images, pushes them to GitHub Container Registry (GHCR), generates a combined marketplace JSON, release templates, and publishes them to GitHub Pages underdist/
. - Marketplace – Clients of the StreamDeploy platform consume
dist/marketplace.v1.json
to render the marketplace UI and pull release templates fromdist/templates/<slug>.json
when creating deployments.
Install dependencies and run scripts using npm
:
npm install
npm run validate # validate all meta.json files
npm run build-dist # build dist/marketplace.v1.json and release templates
You can also generate container folders from a TypeScript seed via tools/seed-from-ts.ts
if you maintain your definitions in code.
Please follow the existing examples under containers/
for guidance. A minimal meta.json
must include:
{
"slug": "example-container",
"name": "Example Container",
"tagline": "Short tagline for the container",
"primaryHw": "Hardware or device this container targets",
"whatItDoes": "One‑sentence description of functionality",
"whyItSavesTime": "One‑sentence description of why it helps",
"architectures": ["arm64"],
"tags": ["ROS 2", "Example"]
}
See the schema for optional fields supported by StreamDeploy (e.g. ghcr_image
, deployment_ready
, default_env
, etc.).
The files under dist/
are automatically generated by CI and must not be edited by hand. They are served via GitHub Pages and consumed by the StreamDeploy platform.