Skip to main content

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

LabelPurpose
fibe.gg/repo_urlHTTP(S), full ssh://, or SCP-style SSH repository URL. Required for built and live-source services; plain HTTP warns.
fibe.gg/branchPin to a non-default branch.
fibe.gg/dockerfileDockerfile path relative to the repo root (defaults to Dockerfile).
fibe.gg/build_targetName of the stage when using a multi-stage build.
fibe.gg/build_argsComma-separated KEY=value pairs for build-time arguments.
fibe.gg/start_commandCommand 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_filePath 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/productionSet 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

LabelPurpose
fibe.gg/portContainer port to route through Traefik.
fibe.gg/visibilityexternal for a public HTTPS URL, or internal for a URL gated by Basic Auth. Defaults to external.
fibe.gg/subdomainChoose 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_ruleShare 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:

LabelPurpose
fibe.gg/healthcheck_pathHTTP path that returns 2xx when the service is ready.
fibe.gg/healthcheck_intervalHow often to poll (10s, 500ms, 1m).
fibe.gg/healthcheck_timeoutHow long to wait for a response — keep it shorter than the interval.
fibe.gg/healthcheck_retriesConsecutive failures that mark the replica unhealthy.
fibe.gg/healthcheck_start_periodGrace window during boot — match real boot time.

Automation

LabelPurpose
fibe.gg/job_watchSet 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 requires fibe.gg/repo_url.
  • A repository-backed service requires an absolute service-level Compose working_dir; working_dir alone remains ordinary Compose.
  • fibe.gg/visibility requires fibe.gg/port.
  • fibe.gg/zerodowntime: "true" requires fibe.gg/port, and the service must not declare container_name. Compose ports: are stripped by default, but if x-fibe.gg.metadata.preserve_ports: true is set, zero-downtime services must not declare ports: 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