Skip to content

Targets

A Target is a machine where deployments execute. Each target runs the Tarsus agent, which registers and sends heartbeats directly to Mandible. Mandible assigns a Thorax orchestration instance, and commands are executed against the target through that Thorax instance.

Targets represent the actual infrastructure where your code runs:

  • Physical servers
  • Virtual machines
  • Cloud instances
  • Containers (with persistent Tarsus installation)
PropertyDescription
NameDisplay name (e.g., “web-prod-01”). Not enforced unique — no uniqueness constraint exists.
ModeConnection mode (Listen or Poll)
HostnameNetwork address
PortTarsus listening port (default: 9342)
StatusOnline, Stale, or Offline
TagsKey-value labels for grouping

Targets connect to Mantis in one of two modes:

Tarsus runs a gRPC server; Thorax initiates connections.

Best for:

  • Stable, routable IP addresses
  • Controlled network environments
  • Low-latency requirements
  • When inbound firewall rules are allowed

Characteristics:

  • Thorax pushes commands to Tarsus
  • Lower latency (immediate execution)
  • Requires inbound network access to target

Tarsus initiates all connections to Thorax (outbound only).

Best for:

  • Machines behind NAT or restrictive firewalls
  • Cloud instances with dynamic IPs
  • Networks with outbound-only rules
  • Complex network topologies

Characteristics:

  • Tarsus pulls commands from Thorax periodically
  • Configurable poll interval (default: 30 seconds)
  • Higher latency (commands wait for next poll)
  • Only requires outbound gRPC (TLS) access to Mandible and Thorax

Targets have three health states:

StatusBadgeDescription
OnlineTealActive connection, healthy (green in the high-contrast theme)
StaleOrangeNo recent heartbeat, may be recovering (yellow in high-contrast)
OfflineCrimsonNo active connection (red in high-contrast)

Status renders as a coloured text badge, not an icon/glyph.

Last Seen - Shows when the target last communicated (e.g., “2 hours ago”).

When a Tarsus agent starts, it registers with Mandible:

  1. Tarsus connects to Mandible with its certificate
  2. Mandible checks if the certificate thumbprint is known
  3. If new, the registration enters “Pending” state
  4. Administrator approves the registration
  5. Target becomes active

For zero-touch provisioning:

  1. Administrator generates a registration token in Lens
  2. Token is provided to Tarsus configuration
  3. Tarsus registers using the token
  4. Registration is approved only if the token has auto-approve enabled (it defaults to OFF — a secure default; otherwise the registration stays pending for manual approval)
  5. Token use count is incremented (tokens are unlimited-use by default; set max_uses to limit reuse)
  1. Navigate to Targets in the sidebar
  2. View the target list with status indicators
  3. Filter by status (the only server-side list filter — the API accepts page/limit/tenant only; no tag or environment filter)
  4. Search by name or hostname

Targets are typically auto-created when a Tarsus agent registers. To create manually:

  1. Click New Target
  2. Enter name and hostname
  3. Select connection mode
  4. Configure port (default: 9342)
  5. Save
  1. Click on a target in the list
  2. Modify properties as needed
  3. Save changes
  1. Click on a target in the list
  2. Click Delete
  3. Confirm deletion

Tags are key-value pairs for organizing and selecting targets:

Tag KeyTag ValuePurpose
environmentproductionEnvironment grouping
rolewebServer role
regionus-east-1Geographic location
tierfrontendApplication tier
  1. Open target detail page
  2. Navigate to Tags section
  3. Add, edit, or remove tags
  4. Save

Tags enable flexible target selection:

  • Deploy to all targets with role=web
  • Deploy to region=us-east-1 AND environment=production
  • (Tag selection is include-only — by id or by tag with ANY/ALL matching. There is no tag exclusion, so you cannot exclude maintenance=true targets by tag; deselect them manually.)

Targets can be assigned to one or more environments:

Targets have a priority within each environment, determining deployment order:

TargetPriorityDeployment Order
prod-web-1100First
prod-web-275Second
prod-web-350Third
prod-db-110Last

Higher priority values deploy first. Priority ranges from -100 to 100 and defaults to 50.

The dashboard shows target health at a glance:

  • Total Targets - All registered targets
  • Online - Healthy, active targets
  • Stale - Targets needing attention
  • Offline - Unavailable targets
  • Recent Activity - a deployment-event timeline (not target last-seen timestamps)

If a target shows offline:

  1. Check the agent - Is Tarsus running on the machine?
  2. Check networking - Can the target reach Thorax (poll) or be reached (listen)?
  3. Check certificates - Are TLS certificates valid and not expired?
  4. Check firewall - Are required ports open?
  5. Review logs - Check Tarsus logs for errors

Use consistent, descriptive names:

{role}-{environment}-{number}
web-prod-01
db-staging-01
worker-dev-01

Create a tagging taxonomy:

CategoryExample Tags
Environmentenv:dev, env:staging, env:prod
Rolerole:web, role:api, role:worker
Regionregion:us-east, region:eu-west
Teamteam:platform, team:payments
  • Review pending registrations promptly
  • Use registration tokens for automated provisioning
  • Rotate tokens after use
  • Monitor for unexpected registration attempts