Skip to content

Commit b63b56e

Browse files
committed
Document setup manifests in configuration docs
Add ~/.pilot/setups/ directory entry and new Setup Manifests section with JSON schema example and field reference table.
1 parent 7a89949 commit b63b56e

1 file changed

Lines changed: 57 additions & 1 deletion

File tree

web/src/pages/docs/configuration.astro

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const bodyContent = `<h1>Configuration</h1>
1313
<li><a href="#directory">Directory structure</a></li>
1414
<li><a href="#daemon-flags">Daemon flags</a></li>
1515
<li><a href="#logging">Logging</a></li>
16+
<li><a href="#setup-manifests">Setup manifests</a></li>
1617
</ul>
1718
</div>
1819
@@ -51,7 +52,7 @@ const bodyContent = `<h1>Configuration</h1>
5152
<tbody>
5253
<tr><td>PILOT_SOCKET</td><td>/tmp/pilot.sock</td><td>Path to the daemon IPC socket</td></tr>
5354
<tr><td>PILOT_REGISTRY</td><td>34.71.57.205:9000</td><td>Registry server address</td></tr>
54-
<tr><td>PILOT_HOSTNAME</td><td>(none)</td><td>Hostname to set during install; if unset, the daemon uses the system hostname</td></tr>
55+
<tr><td>PILOT_HOSTNAME</td><td>(none)</td><td>Hostname to set during install; if unset, no hostname is registered</td></tr>
5556
<tr><td>PILOT_ADMIN_TOKEN</td><td>(none)</td><td>Admin token for enterprise operations</td></tr>
5657
</tbody>
5758
</table>
@@ -63,6 +64,7 @@ const bodyContent = `<h1>Configuration</h1>
6364
config.json <span class="comment"># Configuration file</span>
6465
identity.json <span class="comment"># Ed25519 keypair (persistent identity)</span>
6566
trust.json <span class="comment"># Trust state (trusted peers, pending requests)</span>
67+
setups/ <span class="comment"># Setup manifests (role identity files)</span>
6668
received/ <span class="comment"># Files received via data exchange</span>
6769
inbox/ <span class="comment"># Messages received via data exchange</span>
6870
tasks/ <span class="comment"># Task files and results</span>
@@ -121,6 +123,60 @@ const bodyContent = `<h1>Configuration</h1>
121123
122124
<p>Log levels: <code>debug</code>, <code>info</code> (default), <code>warn</code>, <code>error</code></p>
123125
126+
<h2 id="setup-manifests">Setup manifests</h2>
127+
128+
<p>When a setup skill configures this agent for a specific role, it writes a <strong>setup manifest</strong> to <code>~/.pilot/setups/&lt;slug&gt;.json</code>. This file persists the role configuration so the agent knows its identity, which skills to use and how, which peers exist, and what data flows to expect.</p>
129+
130+
<pre><code>{
131+
"setup": "fleet-health-monitor",
132+
"setup_name": "Fleet Health Monitor",
133+
"role": "web-monitor",
134+
"role_name": "Web Server Monitor",
135+
"hostname": "acme-web-monitor",
136+
"description": "Watches nginx/app health, CPU, memory, response times.",
137+
"skills": {
138+
"pilot-health": "Check nginx, app endpoints, SSL certs.",
139+
"pilot-alert": "Publish alerts to acme-alert-hub on health-alert.",
140+
"pilot-metrics": "Collect CPU, memory, disk, response time."
141+
},
142+
"peers": [
143+
{
144+
"role": "alert-hub",
145+
"hostname": "acme-alert-hub",
146+
"description": "Central alert aggregator"
147+
}
148+
],
149+
"data_flows": [
150+
{
151+
"direction": "send",
152+
"peer": "acme-alert-hub",
153+
"port": 1002,
154+
"topic": "health-alert",
155+
"description": "Health check failures"
156+
}
157+
],
158+
"handshakes_needed": ["acme-alert-hub"]
159+
}</code></pre>
160+
161+
<h3>Manifest fields</h3>
162+
<table>
163+
<thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead>
164+
<tbody>
165+
<tr><td>setup</td><td>string</td><td>Setup slug (matches the filename)</td></tr>
166+
<tr><td>setup_name</td><td>string</td><td>Human-readable setup name</td></tr>
167+
<tr><td>role</td><td>string</td><td>This agent's role ID within the setup</td></tr>
168+
<tr><td>role_name</td><td>string</td><td>Human-readable role name</td></tr>
169+
<tr><td>hostname</td><td>string</td><td>This agent's hostname</td></tr>
170+
<tr><td>description</td><td>string</td><td>What this agent does in context</td></tr>
171+
<tr><td>skills</td><td>map</td><td>Skill name → contextual description of what it does <em>in this role</em></td></tr>
172+
<tr><td>peers</td><td>array</td><td>All peer agents in the setup (even indirect ones)</td></tr>
173+
<tr><td>data_flows</td><td>array</td><td>Directional data flows (send/receive) with port and topic</td></tr>
174+
<tr><td>handshakes_needed</td><td>array</td><td>Hostnames of peers that need direct trust (handshakes)</td></tr>
175+
</tbody>
176+
</table>
177+
178+
<p>The manifest is a convention — the AI agent writes it during setup and reads it when it needs to act. No daemon or CLI changes are required.</p>
179+
124180
<div class="callout">
125181
<strong>Further reading:</strong> <a href="/blog/run-agent-network-without-cloud-dependency">Run an Agent Network Without Cloud Dependency</a>
126182
</div>`;

0 commit comments

Comments
 (0)