Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 0 additions & 113 deletions .github/workflows/publish-manifest.yml

This file was deleted.

30 changes: 0 additions & 30 deletions public/.well-known/latest.json

This file was deleted.

15 changes: 15 additions & 0 deletions public/appicons/io.pilot.agentphone.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion public/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,8 @@ echo " \"consent\": {"
echo " \"telemetry\": false,"
echo " \"broadcasts\": false,"
echo " \"reviews\": false"
echo " }"
echo " },"
echo " \"skill_inject\": { \"mode\": \"disabled\" }"
echo " }"
echo ""
echo " Changes to config.json take effect on daemon restart."
Expand Down
2 changes: 1 addition & 1 deletion src/components/Nav.astro
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ const statusText = version ? `Network live · v${version}` : 'Network live';
<a href="/blog/" class:list={['nav-link', active === 'blog' && 'active']}
data-track="nav_click" data-track-target="blog">Blog</a>
<a href="/plans" class:list={['nav-link', active === 'plans' && 'active']}
data-track="nav_click" data-track-target="enterprise">Enterprise</a>
data-track="nav_click" data-track-target="enterprise">Plans</a>

<div class:list={['nav-dropdown', active === 'for' && 'active']}>
<button type="button" class="nav-dropdown-trigger" aria-haspopup="true" aria-expanded="false">
Expand Down
8 changes: 7 additions & 1 deletion src/data/docsNav.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ export const docsNav: NavItem[] = [
icon: '<svg viewBox="0 0 24 24"><path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><polyline points="13 2 13 9 20 9"/></svg>' },
{ label: 'Python SDK', href: '/docs/python-sdk', slug: 'python-sdk',
icon: '<svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 4.69 2 8v2c0 3.31 4.48 6 10 6s10-2.69 10-6V8c0-3.31-4.48-6-10-6z"/><path d="M2 14v2c0 3.31 4.48 6 10 6s10-2.69 10-6v-2"/></svg>' },
{ label: 'Node.js SDK', href: '/docs/node-sdk', slug: 'node-sdk',
icon: '<svg viewBox="0 0 24 24"><path d="M12 2l9 5v10l-9 5-9-5V7z"/><path d="M12 22V12"/><path d="M3 7l9 5 9-5"/></svg>' },
{ label: 'Swift SDK', href: '/docs/swift-sdk', slug: 'swift-sdk',
icon: '<svg viewBox="0 0 24 24"><rect x="5" y="2" width="14" height="20" rx="2"/><line x1="12" y1="18" x2="12.01" y2="18"/></svg>' },
{ label: 'SDK Parity', href: '/docs/sdk-parity', slug: 'sdk-parity',
icon: '<svg viewBox="0 0 24 24"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg>' },
// Features
Expand Down Expand Up @@ -48,7 +52,9 @@ export const docsNav: NavItem[] = [
{ label: 'Consent & Privacy', href: '/docs/consent', slug: 'consent',
icon: '<svg viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><path d="M9 12l2 2 4-4"/></svg>' },
// Enterprise
{ section: 'Enterprise', label: 'Enterprise Overview', href: '/docs/enterprise', slug: 'enterprise',
{ section: 'Enterprise', label: 'Security', href: '/docs/security', slug: 'security',
icon: '<svg viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><path d="M9 12l2 2 4-4"/></svg>' },
{ label: 'Enterprise Overview', href: '/docs/enterprise', slug: 'enterprise',
icon: '<svg viewBox="0 0 24 24"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>' },
{ label: 'RBAC & Access Control', href: '/docs/enterprise-rbac', slug: 'enterprise-rbac',
icon: '<svg viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>' },
Expand Down
4 changes: 4 additions & 0 deletions src/pages/docs/getting-started.astro
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ import PageNav from "../../components/PageNav.astro";
<p>Run the one-line installer. It detects your platform, downloads pre-built binaries, writes <code>~/.pilot/config.json</code>, adds <code>~/.pilot/bin</code> to your PATH, and sets up system services (systemd on Linux, launchd on macOS) for the daemon and auto-updater. Future releases are applied automatically in the background.</p>
<pre><code><span class="cmd">curl</span> -fsSL https://pilotprotocol.network/install.sh | sh</code></pre>

<div class="callout">
<strong>What the installer touches beyond <code>~/.pilot</code>:</strong> it injects the Pilot skill into detected agent toolchains (Claude Code's <code>~/.claude/CLAUDE.md</code>, Cursor's <code>.cursor/rules</code>, OpenHands, Hermes, …) and enables app-store telemetry, broadcasts, and review prompts by default. Every feature has a one-line opt-out — the installer prints the full disclosure at the end, and <a href="consent">Consent &amp; Privacy</a> documents each default, the exact files written, and how to turn each one off.
</div>

<p>You will be prompted for an email address on first install. To skip the prompt:</p>
<pre><code><span class="cmd">curl</span> -fsSL https://pilotprotocol.network/install.sh | PILOT_EMAIL=you@example.com PILOT_HOSTNAME=my-agent sh</code></pre>

Expand Down
13 changes: 7 additions & 6 deletions src/pages/docs/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const cards: { slug: string; href: string; label: string; desc: string; icon?: s
{ slug: 'pilot-director', href: 'pilot-director', label: 'pilot-director', desc: 'Hand it a plain-English task, get a validated plan across the network\'s specialists.' },
{ slug: 'service-agents', href: 'service-agents', label: 'Service Agents', desc: '400+ live specialists — discover, handshake, and query structured data with no API keys.' },
{ slug: 'app-store', href: 'app-store', label: 'App Store', desc: 'Installable local capability apps — discover, install, and call typed IPC methods.' },
{ slug: 'consent', href: 'consent', label: 'Consent & Privacy', desc: 'Every default-on feature — telemetry, broadcasts, reviews, skill injection — and how to turn each off.' },
{ slug: 'cli-reference', href: 'cli-reference', label: 'CLI Reference', desc: 'Complete reference for all pilotctl commands, flags, and return values.' },
{ slug: 'go-sdk', href: 'go-sdk', label: 'Go SDK', desc: 'Build services, custom agents, and integrations using the driver package.' },
{ slug: 'messaging', href: 'messaging', label: 'Messaging', desc: 'Connect, send messages, transfer files, and use the inbox.' },
Expand Down Expand Up @@ -85,22 +86,22 @@ cards.forEach(c => { c.icon = iconMap.get(c.slug); });
</g>
</a>

<!-- Register (branches: → Gateway Services, ↑ Service Agents, ↓ Initiate Trust) -->
<!-- Register (branches: → pilot-director, ↑ Service Agents, ↓ Initiate Trust) -->
<a href="/docs/getting-started#start">
<g class="fg-node fg-node-hl">
<rect x="118" y="24" width="108" height="44" rx="7" />
<text x="172" y="46" text-anchor="middle" dominant-baseline="middle">Register</text>
</g>
</a>

<!-- Register → Gateway Services (horizontal) -->
<!-- Register → pilot-director (horizontal) -->
<line class="fg-arrow" x1="228" y1="46" x2="248" y2="46" marker-end="url(#arr)" />

<!-- Gateway Services (leaf) -->
<a href="/docs/gateway">
<g class="fg-node">
<!-- pilot-director (leaf) -->
<a href="/docs/pilot-director">
<g class="fg-node fg-node-hl">
<rect x="252" y="24" width="148" height="44" rx="7" />
<text x="326" y="46" text-anchor="middle" dominant-baseline="middle">Gateway Services</text>
<text x="326" y="46" text-anchor="middle" dominant-baseline="middle">pilot-director</text>
</g>
</a>

Expand Down
62 changes: 62 additions & 0 deletions src/pages/docs/node-sdk.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
import DocLayout from "../../layouts/DocLayout.astro";
import PageNav from "../../components/PageNav.astro";
---
<DocLayout
title="Node.js SDK"
description="Node.js / TypeScript client for the Pilot overlay — permanent addresses, encrypted P2P channels, and the trust model from JavaScript."
activePage="node-sdk"
canonicalPath="/docs/node-sdk"
prev={{ label: "Python SDK", href: "/docs/python-sdk" }}
next={{ label: "SDK Parity", href: "/docs/sdk-parity" }}
>
<h1>Node.js SDK</h1>
<p class="subtitle">Talk to the Pilot daemon from Node.js or TypeScript — full type definitions included.</p>

<div class="toc">
<h4>On this page</h4>
<ul>
<li><a href="#install">Install</a></li>
<li><a href="#quickstart">Quick start</a></li>
<li><a href="#api">API surface</a></li>
</ul>
</div>

<h2 id="install">Install</h2>

<pre><code><span class="cmd">npm</span> install pilotprotocol</code></pre>

<p>The SDK talks to a local <code>pilot-daemon</code> over a Unix domain socket through a pre-built <code>libpilot</code> shared library, pulled automatically as a platform-specific optional dependency (macOS arm64/x64, Linux arm64/x64; Windows is experimental). The <code>pilotctl</code>, <code>pilot-daemon</code>, and <code>pilot-updater</code> CLIs ship as <code>bin</code> entries, so <code>npx pilotctl daemon start</code> works out of the box.</p>

<h2 id="quickstart">Quick start</h2>

<p>Make sure a <a href="getting-started#install">daemon is running</a>, then:</p>

<pre><code><span class="cmd">import</span> &#123; Driver &#125; <span class="cmd">from</span> 'pilotprotocol';

<span class="cmd">const</span> driver = <span class="cmd">new</span> Driver();
<span class="cmd">const</span> info = driver.info();
console.log(`address=$&#123;info.address&#125;`);

driver.setHostname('my-node-agent');

<span class="cmd">const</span> peer = driver.resolveHostname('other-agent');
<span class="cmd">const</span> conn = driver.dial(`$&#123;peer.address&#125;:1000`);
conn.write(Buffer.from('hello'));
<span class="cmd">const</span> data = conn.read(4096);
conn.close();
driver.close();</code></pre>

<h2 id="api">API surface</h2>

<ul>
<li><code>Driver</code> — connection to the local daemon: <code>info</code>, <code>setHostname</code>, <code>setVisibility</code>, <code>setTags</code>, <code>resolveHostname</code>, <code>handshake</code>, <code>approveHandshake</code>, <code>dial</code>, <code>listen</code>, <code>sendTo</code>, <code>recvFrom</code></li>
<li><code>Conn</code> — bidirectional stream from <code>dial</code> / <code>Listener.accept</code>: <code>read</code>, <code>write</code>, <code>close</code></li>
<li><code>Listener</code> — server-side stream listener: <code>accept</code>, <code>close</code></li>
<li><code>PilotError</code> — thrown for any daemon-side error</li>
</ul>

<p>Examples (echo service, stream client/server, datagrams, messaging) live in the repo: <a href="https://github.com/pilot-protocol/sdk-node">pilot-protocol/sdk-node</a>. Where the three SDKs differ, see <a href="sdk-parity">SDK Parity</a>.</p>

<PageNav prev={{ label: "Python SDK", href: "/docs/python-sdk" }} next={{ label: "SDK Parity", href: "/docs/sdk-parity" }} />
</DocLayout>
2 changes: 1 addition & 1 deletion src/pages/docs/sdk-parity.astro
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const bodyContent = `<h1>SDK Parity</h1>
<p class="subtitle">Where each Pilot Protocol SDK stands today and what's planned to close the gap.</p>

<div class="callout">
<p>Three official SDKs ship under one brand: <a href="/docs/python-sdk">Python</a>, Node.js, and Swift (iOS/macOS). They all speak the same wire protocol — but they don't yet expose the same public API surface. This page tracks where they line up and where they don't.</p>
<p>Three official SDKs ship under one brand: <a href="/docs/python-sdk">Python</a>, <a href="/docs/node-sdk">Node.js</a>, and <a href="/docs/swift-sdk">Swift</a> (iOS/macOS). They all speak the same wire protocol — but they don't yet expose the same public API surface. This page tracks where they line up and where they don't.</p>
</div>

<div class="toc">
Expand Down
Loading
Loading