docs: refine fleet guide

This commit is contained in:
Federico Jaramillo Martinez
2026-06-05 23:40:16 +02:00
parent 271c9905f7
commit 0ae0bdf432
+24 -21
View File
@@ -69,20 +69,20 @@
<div class="container doc-layout"> <div class="container doc-layout">
<aside class="toc" aria-label="Machines page contents"> <aside class="toc" aria-label="Machines page contents">
<strong>On this page</strong> <strong>On this page</strong>
<a href="#what-it-is">What federation is</a> <a href="#what-it-is">What Fleet does</a>
<a href="#when-to-use">When to use it</a> <a href="#when-to-use">When to use it</a>
<a href="#prepare-machines">Prepare machines</a> <a href="#prepare-machines">Set up another runtime</a>
<a href="#add-machine">Add a machine</a> <a href="#add-machine">Add a machine</a>
<a href="#what-is-proxied">What is proxied</a> <a href="#what-is-proxied">What works remotely</a>
<a href="#auth-credentials">Auth and credentials</a> <a href="#auth-credentials">Credentials</a>
<a href="#plugins">Remote plugins</a> <a href="#plugins">Plugins</a>
<a href="#trust-model">Trust model</a> <a href="#trust-model">Trust boundaries</a>
<a href="#storage-troubleshooting">Storage and troubleshooting</a> <a href="#storage-troubleshooting">Troubleshooting</a>
</aside> </aside>
<div class="doc-content"> <div class="doc-content">
<section id="what-it-is"> <section id="what-it-is">
<h2>What machine federation is</h2> <h2>What Fleet does</h2>
<p> <p>
A machine is a PI WEB runtime endpoint. The local machine is synthesized automatically. Remote machines A machine is a PI WEB runtime endpoint. The local machine is synthesized automatically. Remote machines
are opt-in PI WEB runtimes that you register with a base URL and, optionally, a bearer token. are opt-in PI WEB runtimes that you register with a base URL and, optionally, a bearer token.
@@ -94,21 +94,24 @@
</p> </p>
<div class="code-card"> <div class="code-card">
<div class="copy-row"> <div class="copy-row">
<strong>Federated shape</strong> <strong>Fleet shape</strong>
<button class="copy-button" data-copy="#federated-shape">Copy</button> <button class="copy-button" data-copy="#federated-shape">Copy</button>
</div> </div>
<pre id="federated-shape"><code>Browser <pre id="federated-shape"><code>Browser
PI WEB gateway you opened PI WEB gateway you opened
↓ gateway proxy ├─ [ Local runtime ]
Remote PI WEB runtime
├─ [ Remote PI WEB runtime A ]
Remote projects, workspaces, sessions, terminals, plugins</code></pre> │ ↓ selected machine
│ projects, workspaces, sessions, terminals, plugins
└─ [ Remote PI WEB runtime B ]</code></pre>
</div> </div>
</section> </section>
<section id="when-to-use"> <section id="when-to-use">
<h2>When to use federation</h2> <h2>When to use it</h2>
<p> <p>
Federation is useful when you have more than one place where agents should work, but you want one stable Federation is useful when you have more than one place where agents should work, but you want one stable
browser entrypoint. browser entrypoint.
@@ -133,7 +136,7 @@ Remote projects, workspaces, sessions, terminals, plugins</code></pre>
</section> </section>
<section id="prepare-machines"> <section id="prepare-machines">
<h2>Prepare the target machines</h2> <h2>Set up another runtime</h2>
<p> <p>
Install and run PI WEB on every machine you want to register. The remote URL must be reachable from the Install and run PI WEB on every machine you want to register. The remote URL must be reachable from the
gateway server, not just from your browser. gateway server, not just from your browser.
@@ -159,7 +162,7 @@ Remote projects, workspaces, sessions, terminals, plugins</code></pre>
</section> </section>
<section id="add-machine"> <section id="add-machine">
<h2>Add a remote machine</h2> <h2>Add a machine</h2>
<ol> <ol>
<li>Open the PI WEB instance you want to use as the gateway.</li> <li>Open the PI WEB instance you want to use as the gateway.</li>
<li>Open <strong>Actions → Add Machine</strong>.</li> <li>Open <strong>Actions → Add Machine</strong>.</li>
@@ -178,7 +181,7 @@ Remote projects, workspaces, sessions, terminals, plugins</code></pre>
</section> </section>
<section id="what-is-proxied"> <section id="what-is-proxied">
<h2>What is proxied</h2> <h2>What works remotely</h2>
<p> <p>
After you select a machine, the rest of the app works in that machine's scope. The gateway routes the After you select a machine, the rest of the app works in that machine's scope. The gateway routes the
selected-machine work to the target PI WEB runtime. selected-machine work to the target PI WEB runtime.
@@ -194,7 +197,7 @@ Remote projects, workspaces, sessions, terminals, plugins</code></pre>
</section> </section>
<section id="auth-credentials"> <section id="auth-credentials">
<h2>Auth and credentials stay on the target machine</h2> <h2>Credentials stay on the target machine</h2>
<p> <p>
Model-provider credentials, Pi configuration, OAuth state, repositories, and active session runtimes stay Model-provider credentials, Pi configuration, OAuth state, repositories, and active session runtimes stay
on the selected target machine. The gateway does not copy them into its own Pi configuration. on the selected target machine. The gateway does not copy them into its own Pi configuration.
@@ -211,7 +214,7 @@ Remote projects, workspaces, sessions, terminals, plugins</code></pre>
</section> </section>
<section id="plugins"> <section id="plugins">
<h2>Remote plugins are machine-scoped</h2> <h2>Plugins follow the selected machine</h2>
<p> <p>
When you select a remote machine, PI WEB tries to load that machine's discovered plugins through the When you select a remote machine, PI WEB tries to load that machine's discovered plugins through the
gateway. Remote plugin actions, workspace panels, and workspace labels only appear while that machine is gateway. Remote plugin actions, workspace panels, and workspace labels only appear while that machine is
@@ -225,7 +228,7 @@ Remote projects, workspaces, sessions, terminals, plugins</code></pre>
</section> </section>
<section id="trust-model"> <section id="trust-model">
<h2>Trust model</h2> <h2>Trust boundaries</h2>
<p> <p>
Machine federation is for trusted users, trusted PI WEB servers, and trusted network paths. Adding a Machine federation is for trusted users, trusted PI WEB servers, and trusted network paths. Adding a
machine gives the gateway permission to contact that URL and forward user-initiated PI WEB traffic to it. machine gives the gateway permission to contact that URL and forward user-initiated PI WEB traffic to it.
@@ -238,7 +241,7 @@ Remote projects, workspaces, sessions, terminals, plugins</code></pre>
</section> </section>
<section id="storage-troubleshooting"> <section id="storage-troubleshooting">
<h2>Storage and troubleshooting</h2> <h2>Troubleshooting</h2>
<p> <p>
Remote machine records are stored on the gateway in <code>~/.pi-web/machines.json</code>. If Remote machine records are stored on the gateway in <code>~/.pi-web/machines.json</code>. If
<code>PI_WEB_DATA_DIR</code> is set, they live under <code>$PI_WEB_DATA_DIR/machines.json</code>. <code>PI_WEB_DATA_DIR</code> is set, they live under <code>$PI_WEB_DATA_DIR/machines.json</code>.