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.jsondescribing the container according to the schema inschema/container-meta.schema.json.- A
Dockerfilewhich builds the container for all declared architectures. - An
entrypoint.shscript (or explanatory placeholder if not used). - An optional
README.mdwith runtime notes and further details.
- Validation – Run
npm run validatebefore opening a pull request. This checks that yourmeta.jsonfiles conform to the schema and that the slug matches the directory name. - CI/CD – When a PR is merged into
mainthe GitHub Actions workflow in.github/workflows/build-publish.ymlbuilds 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.jsonto render the marketplace UI and pull release templates fromdist/templates/<slug>.jsonwhen 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 templatesYou 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.