{% extends "base.html" %} {% from "_macros.html" import crumbs %} {% block title %}Agent fleet — Steward{% endblock %} {% block breadcrumb %}{{ crumbs([("Hosts", "/hosts/"), ("Agent fleet", "")]) }}{% endblock %} {% block content %}
Bulk agent operations across your inventory. For a single host, use its host page — provisioning and metrics live there.
{% if new_token %}This is the only time the raw token is shown. Rotate if you lose it.
curl -sSL '{{ install_url }}' | sudo sh
These actions run bundled Ansible playbooks to deploy and maintain the
Steward monitoring agent on your inventory hosts.
Steward generates each host's API token automatically and connects over SSH as the managed
steward account — you'll be dropped into the live Ansible run to watch it.
steward.
No Ansible inventory targets yet. Add some under Ansible → Inventory.
{% endif %}
First contact for a brand-new host. Connects with a one-time bootstrap
user + password (used for this run only, never stored), creates the steward
login account with passwordless sudo, installs the managed SSH key, then installs the
agent. Run this once per host.
For a host that's already provisioned (has the steward account) but has no
agent yet — or to re-enroll one. Connects as steward with the managed key,
mints a fresh token, and installs the agent. No curl | sh needed.
Refresh the agent binary on hosts already running it. Connects as steward
with the managed key and restarts the service — the token and config are left untouched,
so identity is preserved.
| Host | Reported IP | Agent version | Distro | Last seen | Actions |
|---|---|---|---|---|---|
| {{ item.host.name if item.host else item.reg.host_id }} | {{ item.reg.host_ip or "—" }} | {{ item.reg.agent_version or "—" }} | {{ item.reg.distro or "—" }} | {{ item.reg.last_seen_at.strftime("%Y-%m-%d %H:%M:%S") if item.reg.last_seen_at else "never" }} | |
| No hosts registered. Add one above. | |||||