Build¶
How to author Plasma components — the reusable units that make up packages.
A component is a directory under src/<layer>/<kind>/<name>/ with metadata, build tasks, defaults, and templates. Plasma standardizes how components are structured, configured, and built, so that anything from a single function to a full application follows the same rules.
Principles you'll meet everywhere¶
- Builders, not raw tooling. Never call
dockerorkubectldirectly — components declare intent and a builder produces the artifact. - Configure at the service level, never the application level. Applications orchestrate; services configure.
- Variables carry environment decisions (
machine_env), never{% if %}logic inside templates. - Prefix every variable with its component name to avoid collisions.
In this section¶
- Component anatomy — files, metadata (MRN/MRK/MRV), the lifecycle
- Configuration — the service-level rule, method preference, environment-conditional config
- Templates & filters — Jinja2 templates and Plasma's machine filters
- Entity schemas — Protobuf as source of truth, JSON Schema generation, the registry
- Kubernetes patterns — manifests, annotations, registry auth, service accounts, ingress/TLS
- Defining agents — triggers, skill repertoires, channel configuration
See also the Component model concept page for the why.