{{define "fleetdetail"}}{{template "top" .}} {{if .Flash}}{{end}} {{if .FlashErr}}{{end}}

Fleet · {{.Account.Name}}

{{.FleetDetail.Name}}

Your own boxes, dialling this console — and the apps placed on them.

Data bucket {{.FleetDetail.Bucket}}

{{if .RotatedToken}} {{end}}

Boxes

{{if .FleetBoxes}}
{{if .IsOwner}}{{end}} {{range .FleetBoxes}} {{if .Reachable}} {{else if .Age}} {{else}} {{end}} {{if $.IsOwner}} {{end}} {{end}}
LabelStatusTagsTunnel Memory freeLoadDisk freeRelease
{{.Label}} {{.Status}} {{range .Tags}}{{.}} {{end}}{{if not .Tags}}—{{end}}{{emptyOrDash .Tunnel}} {{if .Metrics}}{{bytesOrDash .Metrics.MemAvailBytes}} / {{bytesOrDash .Metrics.MemTotalBytes}}{{else}}—{{end}} {{if .Metrics}}{{loadOrDash .Metrics.Load1}}{{else}}—{{end}} {{if .Metrics}}{{bytesOrDash .Metrics.DiskFreeBytes}}{{else}}—{{end}} {{if .Metrics}}{{emptyOrDash .Metrics.Release}}{{else}}—{{end}}unreachable last heartbeat {{.Age}} agono heartbeat yet — unreachable (age unknown)

Rotating a token refuses that box's NEXT dial-in with the old credential but does not evict a channel it already holds; a compromised box needs Detach instead.

{{else}}

No boxes registered to this fleet yet — add one with carlos fleets add-box.

{{end}}

Placed apps

{{if .FleetApps}}
{{range .FleetApps}} {{end}}
AppHosts
{{.App}} {{range .Hosts}}{{.}} {{end}}
{{else}}

No apps placed on this fleet yet — carlos apps place sends one here.

{{end}} {{if and .IsOwner .FleetPlaceableApps}}

Place an app here

Moving changes where that app serves. Data does not move: hibernated instance state stays in the old placement's bucket.

{{end}} {{template "bottom" .}}{{end}}