Skip to content
LabTether

Services and Containers

The Services page is where you see every application and service running across your fleet — web apps, Docker containers, system daemons, network services — all discovered automatically and organized for fast triage.

Service inventory

LabTether discovers services through a multi-source pipeline:

  1. Docker containers — event-coalesced, incremental updates for container churn, with periodic full reconciliation snapshots for consistency.
  2. Proxy/API enrichment — Traefik routes, Portainer stacks, and similar metadata enrich discovered services with URLs, domains, and backend targets.
  3. Local port scan — discovers services listening on ports that are not already represented by other sources.
  4. LAN CIDR scan (opt-in) — bounded by CIDR range, port list, and host caps. Discovered entries include scan_scope=lan and scan_target_host metadata for traceability.

Discovery is configurable at two levels:

  • Fleet defaults: Settings → Service Discovery Defaults (or Advanced Settings → services) using services.discovery_default_*
  • Per-node overrides: Node → Agent Settings → Service Discovery Policy using services_discovery_*

Tip: Change discovery settings on 1-2 canary nodes first, validate the output, then expand to the broader fleet. The source pipeline is additive — enabling LAN scan does not disable Docker discovery.

Each service card shows health state, category, and key metadata. The detail panel includes a rolling Health History view (24-hour window) with uptime percentage, current-state streak, transition markers, an availability timeline, and recent check samples. Use the Health filter scopes (Unstable, Changed Recently) and sort modes (Most Unstable, Uptime High-Low, Recently Changed) to prioritize triage during incidents.

The Discovery Cycle Stats panel shows per-source timing, counters, and recent per-host cycle snapshots so you can see exactly how discovery is performing.

Customizing services

Open any service card and use the edit flow to override auto-discovered metadata:

  • Display name — rename the service to something human-friendly
  • Category — reassign to a different group
  • Icon — pick from the built-in library or your custom uploads
  • URL override — set a preferred URL when auto-discovery picks the wrong one
  • Tags — add custom tags for filtering
  • Visibility — hide noisy or irrelevant services (the LabTether bootstrap service is hidden by default)
  • Alternative URLs — managed with source badges (e.g., traefik, manual); removing an alt URL persists a never-group rule so the split sticks across refreshes

Service matching uses normalized container image names, so mirrored registries (like lscr.io/linuxserver/sonarr) still resolve to known service definitions. Fallback classification uses normalized name and domain hints from container names and proxy routes when image or port signals are ambiguous.

Reset to Auto removes all manual overrides and lets discovery take over again.

Custom icon library

Upload custom SVG icons once and reuse them across services:

  1. Open any service's edit flow or go to Services Config → Icons.
  2. Upload an SVG file.
  3. Rename or delete library entries as needed.
  4. Assign icons to services during edit.

Bulk editing

For large fleets, editing services one-by-one gets old fast.

  1. Use Select mode (checkboxes on service cards) to pick specific services, or use filters to scope down to a category, health state, or host.
  2. Open Bulk Edit from the header.
  3. Apply category, visibility, or icon changes across the selection.
  4. Bulk Reset in the config page removes all overrides at once.

Arrange mode lets you drag-and-drop reorder services within category grids. Layout order persists in browser storage and can be reset from the arrange-mode banner.

Container management

The Containers page (/containers) gives you a fleet-wide view of every Docker container across all hosts.

What you see:

  • Summary bar — total containers, running/stopped/paused counts, total hosts
  • Top-10 tables — highest CPU and memory consumers with sparkline trends
  • Per-host cards — collapsible cards for each Docker host with container list, state indicators, and quick actions (start, stop, restart)

Filters: Docker host, state (running, stopped, paused), and Docker Compose stack.

Container metrics come from Docker stats collected by the agent on each host. Stats sampling is adaptive — active containers are sampled more frequently while quiet ones back off to save resources. All metrics are available via Prometheus export.

Pull Images deduplicates image refs per host, so pulling across a fleet does not re-pull the same image on the same host.

Service configuration

The service configuration page (Services Config or the gear icon in the Services header) centralizes settings in one place:

Manual services

Add services that are not auto-discovered — external SaaS URLs, cloud services, or apps on hosts without agents. Manual services can be:

  • Host-bound — attached to a specific asset
  • Standalone — not attached to any asset

Tip: When a host asset is deleted, its manual services are promoted to standalone rather than deleted — your curated service data is preserved.

URL grouping

Control how related URLs are merged into a single service card:

  • Grouping mode — aggressive broadens alias matching; conservative and balanced are stricter
  • Confidence threshold — below-threshold matches trigger a toast notification with accept/deny actions
  • Alias rules — including one-click wildcard generation for patterns like *.*.domain → *.domain
  • Never-group rules — override automatic grouping for specific URL pairs

Saving or resetting grouping settings triggers an immediate refresh so changes are visible without waiting for the next poll.

Overrides

Customize display name, category, icon, and visibility for auto-discovered services. Use filters to find services quickly.

Icons

Manage the custom icon library — upload, rename, delete, and browse the built-in library.