Skip to content

StreamDeploy/streamdeploy-containers

Repository files navigation

StreamDeploy Containers

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.

How it works

  1. Contribute a container – Add a new folder under containers/<slug>/ with:
    • meta.json describing the container according to the schema in schema/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.
  2. Validation – Run npm run validate before opening a pull request. This checks that your meta.json files conform to the schema and that the slug matches the directory name.
  3. 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 under dist/.
  4. Marketplace – Clients of the StreamDeploy platform consume dist/marketplace.v1.json to render the marketplace UI and pull release templates from dist/templates/<slug>.json when creating deployments.

Local development

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.

Adding new containers

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.

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published