Playspecs
A Playspec is a launch blueprint — one configured launch, ready to fire. A Template is a reusable recipe a Playspec is launched from. Many Playspecs can share one Template. Both manage what a launch becomes, from different angles: the Playspec carries the launch-time values; the Template carries the body.
This page covers both, in that order.
Playspecs
A Playspec points at a Template version, holds variable values, names a target Marquee, and lists mounted files. Launching it produces a Playground.
What a Playspec stores
| Field | What it holds |
|---|---|
| Template Version | The frozen Template snapshot to launch from. May be omitted if launched from raw YAML. |
| Variable values | Inputs the Template asks for. |
| Marquee | The host the Playground runs on. |
| Mounted files | Optional uploads attached at launch (e.g. seed data, credentials). |
| Schedule / triggers | Optional automation (cron, VCS push). Applies to Tricks. |
Re-launch the same Playspec months later and you get an equivalent environment. The Template Version is frozen; the variables are stored; the Marquee is named.
Launching
Pick a Template (or paste raw YAML), pick a Marquee, fill variables, click Launch. The resulting Playspec is saved. Launching is repeatable from the Playspec itself.
Editing a Playspec
Edits to a Playspec don't touch the running Playground. The Playground keeps running until you apply the change:
- Rollout — apply with minimum disruption.
- Hard restart — full stop and start.
- Deploy — explicit re-launch.
- Reconciliation — Fibe's periodic match-up.
Prep changes in advance, apply on your schedule.
Switch to a newer Template version
When a new Template version exists, every Playspec bound to that Template can be switched:
- Open the Playspec.
- Fibe surfaces the new version with a diff preview.
- Apply. The Playspec is now bound to the new version. The running Playground picks it up on the next rollout.
You can also bulk-upgrade every Playspec bound to one Template at once.
This control only applies to Playspecs with a source Template Version. A Playspec launched from raw YAML has nothing to switch to.
Launch without a Template
Paste a Compose file into a new Playspec, set variables, go. Use a Template only when you want reuse, sharing, auto-publish from a Prop file, or Bazaar publication.
For a one-off run, skip the Template entirely.
Templates
A Template is a reusable environment recipe — a Docker Compose file plus a few Fibe additions (labels, optional settings block). Author privately, iterate, keep for yourself or publish to the Bazaar.
Templates keep launches reproducible. Two people launching the same Template version get the same starting environment.
For authoring a Template from scratch — Compose-to-Fibe conversion, label and settings-block reference, recipes, playbooks — see the top-level Fibe Templates section.
Lifecycle
- Create. Paste a Compose file, import from a connected Prop, fork an existing Template, or take one from the Bazaar.
- Publish a Version. A frozen snapshot of body + variables + metadata + automation settings. New launches default to the latest suitable version.
- Existing Playspecs keep the version they launched from. Switching is explicit — see Switch to a newer Template version above.
- Source-linked Templates auto-publish a new version when the linked file changes.
- Fork any time. Forks are independent. They don't track the source.
Versions are frozen
Published versions can't change. Edits become a new Version with a new ID. This is what makes a Playspec reproducible — it always knows the exact Version it came from.
Source-linked Templates — the strongest pattern
A Template can point at a file in a Prop. The environment recipe lives in source control alongside your code.
When creating a Template, point it at:
- A specific Prop.
- A specific file path (usually
docker-compose.ymlat the repo root). - Optionally a specific branch (defaults to the repo default).
Then:
- New commits touching that file auto-publish a new Template version. The body is the file at that commit.
- Flip the CI toggle and Fibe creates a dedicated Trick that runs against the latest version on push or pull request.
This keeps Templates editable in normal source control — PRs, code review, branch protection — and Fibe stays in sync without pasting.
source_defaults
Inside a Template's metadata, set source_defaults: true. Launching the Template from a Prop then auto-fills the repo URL and branch into dynamic services and any trigger_config.
File-linking and source_defaults are distinct:
- File-linking — where the Template body lives (in a Prop's file).
source_defaults— how launch-time values are populated (from the importing Prop).
Use either, both, or neither. See Fibe Templates → Settings block.
Test before sharing
Before publishing to the Bazaar:
- Real test launch from a fresh setup. No leftover state.
- Confirm variables are honest. No hidden hardcoded values.
- Capture screenshots in the launch's mutters.
- Walk the publishing checklist.
FAQ
Template vs Playspec?
A Template is a reusable recipe. A Playspec is one configured launch — picks a Template Version, fills variables, picks a Marquee, mounts files. Many Playspecs can derive from the same Template.
Can two Playspecs share the same launch values?
Yes. Both can point at the same Template Version with the same variables. They produce equivalent Playgrounds. Each Playground runs independently.
How do I delete a Playspec?
Destroy the Playground first, then delete the Playspec.
How do I delete a Template?
Delete a Template only when no Playspecs are bound to its versions. Delete or unlink the Playspecs first.
Template vs Compose file in the repo?
If the Template is source-linked, the repo file is the body. Edits become new Template versions automatically. If not source-linked, the body lives in Fibe. Edit it in the UI.
Related
- Props — where source-linked Template bodies live.
- Playgrounds — what a Playspec produces when launched.
- Marquees — where Playgrounds run.
- Bazaar — public Template marketplace.
- Tricks — Playspecs run as one-shot jobs.
- Fibe Templates — full authoring guide: Compose-to-Fibe, labels, settings block, recipes, playbooks.
- Reference:
fibe-resource-lifecycles,convert-compose-to-fibe,recipe-add-metadata.