Service labels
The complete set of fibe.gg/* labels you can add under labels: on a service. Any unrecognized fibe.gg/* label is rejected, so typos surface quickly.
Source & build
| Label | Purpose |
|---|---|
fibe.gg/repo_url | HTTP(S), full ssh://, or SCP-style SSH repository URL. Required for built and live-source services; plain HTTP warns. |
fibe.gg/branch | Pin to a non-default branch. |
fibe.gg/dockerfile | Dockerfile path relative to the repo root (defaults to Dockerfile). |
fibe.gg/build_target | Name of the stage when using a multi-stage build. |
fibe.gg/build_args | Comma-separated KEY=value pairs for build-time arguments. |
fibe.gg/start_command | Command to run, overriding the image's default. For dev-mode templates this is where you put your hot-reload command (bin/rails server -b 0.0.0.0, next dev -H 0.0.0.0, vite --host 0.0.0.0, uvicorn app:main --reload --host 0.0.0.0). |
fibe.gg/env_file | Path to the env example file in your Prop (defaults to .env.example). Fibe reads this file to discover the env keys your service expects, pre-fills them in the launch form, and injects the final values into the container's environment — your service just reads ordinary environment variables. |
fibe.gg/production | Set to "true" for built images, "false" for source-mounted dev mode. When it's false, Fibe mounts your repository into the container so edits show up live — pair it with fibe.gg/start_command set to your dev/watch command so reloads actually happen. |
working_dir is a standard service-level Compose field, not a label. Every
service with fibe.gg/repo_url must set it to an explicit absolute container
path. It has no Fibe default. On non-production services it is also the managed
source-bind target; on production services it remains the process directory but
Fibe does not generate a bind.
Prefer credential-free GitHub HTTPS URLs. Standalone Core can apply its one
host-wide GITHUB_TOKEN; Enterprise resolves the Player's Prop/provider
credential. Explicit credentials in an HTTP(S) URL are supported but persist
with the authored and rendered configuration, Git origin, and backups. SSH URLs
use the server's mounted SSH configuration with host-key verification.
Routing & exposure
| Label | Purpose |
|---|---|
fibe.gg/port | Container port to route through Traefik. |
fibe.gg/visibility | external for a public HTTPS URL, or internal for a URL gated by Basic Auth. Defaults to external. |
fibe.gg/subdomain | Choose the subdomain under the Marquee's root domain. Lowercase letters and digits, optional hyphens. Use @ to bind at the root domain itself. Defaults to the service name. |
fibe.gg/path_rule | Share a subdomain across multiple services using path matchers like Path, PathPrefix, and PathRegexp. Combine with && or ` |
Rolling updates
Set fibe.gg/zerodowntime: "true" when the service is exposed, speaks HTTP, and can run multiple replicas at once. Then add the healthcheck labels so Fibe knows when a new replica is ready:
| Label | Purpose |
|---|---|
fibe.gg/healthcheck_path | HTTP path that returns 2xx when the service is ready. |
fibe.gg/healthcheck_interval | How often to poll (10s, 500ms, 1m). |
fibe.gg/healthcheck_timeout | How long to wait for a response — keep it shorter than the interval. |
fibe.gg/healthcheck_retries | Consecutive failures that mark the replica unhealthy. |
fibe.gg/healthcheck_start_period | Grace window during boot — match real boot time. |
Automation
| Label | Purpose |
|---|---|
fibe.gg/job_watch | Set to "true" on the service whose exit defines the result of a Trick. |
Booleans: quote them
Label values that look boolean (like "true" or "false") should be written as quoted strings. Avoid yes, no, on, off, 1, or 0 — only the literal strings are recognized.
labels:
fibe.gg/production: "true"
fibe.gg/zerodowntime: "false"
Cross-label rules
The runtime enforces these consistency rules:
- A Compose
build:block requiresfibe.gg/repo_url. - A repository-backed service requires an absolute service-level Compose
working_dir;working_diralone remains ordinary Compose. fibe.gg/visibilityrequiresfibe.gg/port.fibe.gg/zerodowntime: "true"requiresfibe.gg/port, and the service must not declarecontainer_name. Composeports:are stripped by default, but ifx-fibe.gg.metadata.preserve_ports: trueis set, zero-downtime services must not declareports:either.- Any label value can be a variable reference using
$$var__NAME.
An example
A Rails dev-mode service with source mount, dev server command, healthcheck, and rolling updates disabled (since Rails dev mode is single-process):
services:
web:
image: ruby:3.3
working_dir: /app
labels:
fibe.gg/repo_url: https://github.com/owner/rails-app
fibe.gg/start_command: bin/rails server -b 0.0.0.0 -p 3000
fibe.gg/port: 3000
fibe.gg/visibility: external
fibe.gg/subdomain: app
fibe.gg/production: "false"
fibe.gg/env_file: .env.example
depends_on:
- db
Related
- Compose → Fibe — the conversion flow.
- Settings block —
x-fibe.ggreference. - Execution modes —
job_watchin context. - Reference:
reference-fibe-labels— the authoritative skill.