{% extends "base.html" %} {% block title %}Runners · Administration{% endblock %} {% block mainclass %} class="wide"{% endblock %} {% block content %}
{{ n }}
{% endif %} {% if let Some(e) = error %}{{ e }}
{% endif %} {% if let Some(t) = new_token %}Use it once, within a day, on the machine that will run jobs. It is shown only now.
flow runner register {{ hub }} --token {{ t }} --name NAME [--ca hub-ca.pem] [--label LABEL]
flow runner
The runner sends its signing identity when it registers; this hub accepts receipts from it signed by that key only.
No runners yet. Create a registration token below and run flow runner register on the runner.
| Runner | Status | Signing key | Machine | Labels | Capacity | Running | Last seen | |
|---|---|---|---|---|---|---|---|---|
| {{ r.name }}{% if r.source == "config" %} hub.toml{% endif %} | {{ r.status() }} | {% if r.key.is_empty() %}not yet{% else %}{{ r.key|short }}{% endif %} |
{% if r.arch.is_empty() %}unknown{% else %}{{ r.arch }} · {{ r.os }} · flow {{ r.version }}{% endif %} | {% for l in r.label_list() %}{{ l }} {% endfor %} | {{ r.max_jobs|plural("job", "jobs") }}{% if let Some(m) = r.memory_mib %} · {{ m }} MiB{% endif %}{% if let Some(c) = r.cpus %} · {{ c }} vCPU{% endif %} | {{ row.running }} | {% if let Some(t) = r.last_seen_ms %}{% else %}never{% endif %} |
A runner registers with a one-time token: it sends its signing identity, architecture and labels, and gets its own credential, kept in runner.toml beside its flow.toml.
Unused tokens: {% for (by, made, expires) in pending %}by {{ by }} {{ made|ago_i }}, expires {{ expires|when_i }}{% if !loop.last %}; {% endif %}{% endfor %}
{% endif %}