Skip to content

Add high-level distributed runners documentation#963

Merged
phinze merged 1 commit into
mainfrom
phinze/mir-1173-highlevel-distributed-runner-docs
Jul 23, 2026
Merged

Add high-level distributed runners documentation#963
phinze merged 1 commit into
mainfrom
phinze/mir-1173-highlevel-distributed-runner-docs

Conversation

@phinze

@phinze phinze commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Distributed runners had a complete runner * CLI reference in the docs, but nothing that explained what any of it meant. A reader arriving fresh got a pile of commands (join, cordon, drain, reissue) with no picture of how a coordinator and its runners actually fit together. This fills that gap with a proper conceptual page.

The new page walks the whole arc: what problem distributed runners solve (one machine has a ceiling, so scale out instead of up), how the coordinator/runner split works, where the scheduler places things, and the two ways to add a node. The manual path is the three-step token/join/start flow. The automated path is the pattern we actually run our own fleet with: a reusable enrollment token in a secret manager plus an idempotent runner install call baked into cloud-init.

It's written for the default-on flip that's landing in parallel, so there's no labs-flag framing anywhere in the prose. The constraints section is honest about today's limits (the coordinator is a single point of coordination, and disk-backed apps stay pinned to it) while being clear those aren't permanent: the control plane is built to grow multi-node, and stateful migration is on the way.

Rounding it out: Coordinator and Distributed Runner glossary entries, a sidebar slot under Run & Scale, and the existing distributed-runner mentions in the disks and workload-identity pages now link to the new page instead of bouncing to the labs index.

Closes MIR-1173

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 35 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f2da95dc-0dc0-4047-91a6-0e057e3159a8

📥 Commits

Reviewing files that changed from the base of the PR and between 8360187 and 055c181.

📒 Files selected for processing (5)
  • docs/docs/disks.md
  • docs/docs/distributed-runners.md
  • docs/docs/terminology.md
  • docs/docs/workload-identity.md
  • docs/sidebars.ts

Comment @coderabbitai help to get the list of available commands.

@miren-code-agent miren-code-agent Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍪 biscuit: ✅ ready to merge — auto-review, non-blocking

This draft adds the new distributed-runners.md page and two glossary entries (Coordinator, Distributed Runner) in terminology.md, with small cross-reference tweaks in workload-identity.md and disks.md, plus a sidebar entry. The docs are ready to hand off to human review.

Accuracy against the rest of the codebase. The new page's claims are consistent with what the other docs already say. The "disks pin to coordinator" rule is confirmed by the disks.md text and its Limitations section. The workload-identity section on distributed runners (in workload-identity.md) already existed and matches the new page's description of token issuance routing through the coordinator. The scheduler preference for runners and the overlay network ranges (10.8.0.0/16, 10.10.0.0/16) are stated as fact; I can't verify them from doc files alone, but they read like deliberate product details rather than guesses.

Security guidance is sound. The :::warning and :::danger admonitions around join tokens are well-placed. The reusable-token section rightly emphasises keeping the secret in a secret manager and the cloud-init idempotency guard (systemctl cat) is a practical and correct pattern.

A few minor things worth noting:

  • Line 58 of distributed-runners.md: the token is described as having "the coordinator's address baked in" — this is useful, but it isn't explained anywhere how a runner that has no pre-existing network path to the coordinator would resolve or reach it. That's probably fine for a high-level doc, but operators running across cloud VPCs may hit this and find no guidance. Worth a one-liner note or a follow-up issue.
  • The --force flag in the cloud-init bash snippet (line 135) is used alongside --skip-system-check, but --force semantics aren't described anywhere in the doc or referenced command. If --force implies something operationally significant (e.g. overwriting an existing config), that deserves a brief inline callout.
  • The sidebar addition puts distributed-runners in "Run & Scale" between scaling and admin-interface — that ordering is logical.

Overall the prose is clear, internally consistent, and the structure (how it works → adding a runner → automating → operating → caveats → next steps) follows a natural operator journey. Nothing here blocks graduation to human review.


🍪 full review note · comment /biscuit review to run biscuit again.

miren runner install \
--token "$TOKEN" \
--skip-system-check \
--force

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The --force flag is used here but isn't described anywhere in this page or referenced to a command doc. If it has any destructive or surprising behavior (e.g. overwriting an existing config or bypassing a safety check), a brief inline explanation would help operators understand what they're opting into.

🤖 Prompt for AI Agents
In docs/docs/distributed-runners.md, line 135, the
bash snippet passes --force to `miren runner
install` without explanation. Add a short inline
comment or a sentence in the surrounding prose
that describes what --force does in this context
(e.g. 'overwrites any partially written config
from a previous attempt') so operators know what
they are opting into. If the flag is benign in
this specific context, say so explicitly.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added an explanation in the surrounding prose: --force overwrites the service file left by a half-finished earlier attempt, so a retried boot installs cleanly. The systemctl cat guard already keeps the happy path from re-running, so this only bites on a recovery. Fixed in 055c181.

Comment thread docs/docs/distributed-runners.md
@phinze
phinze marked this pull request as ready for review July 23, 2026 20:41
@phinze
phinze requested a review from a team as a code owner July 23, 2026 20:41

@maryelizbeth maryelizbeth left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

other than addressing the comments from biscy - docs lgtm

The distributed runners feature shipped with a full runner-* CLI
reference but no conceptual page, so a reader had all the verbs and
no mental model. This adds a guide that ties it together: the
coordinator/runner architecture, the overlay network and scheduling
rules, a manual walkthrough for adding a node, an automated
enrollment pattern for provisioning at scale, and an honest account
of the current constraints.

Written for the default-on flip, so there's no labs gating in the
prose. Also adds Coordinator and Distributed Runner glossary entries
and points the existing distributed-runner mentions in disks and
workload-identity at the new page.
@phinze
phinze force-pushed the phinze/mir-1173-highlevel-distributed-runner-docs branch from 3b3c287 to 055c181 Compare July 23, 2026 21:43
@phinze
phinze merged commit cce98bd into main Jul 23, 2026
36 of 38 checks passed
@phinze
phinze deleted the phinze/mir-1173-highlevel-distributed-runner-docs branch July 23, 2026 22:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants