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
89 changes: 60 additions & 29 deletions src/components/HarnessIntegrationArticle.astro
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
---
import BlogLayout from '../layouts/BlogLayout.astro';

interface SetupStep {
text: string;
code?: string;
}

interface Props {
harness: string;
title: string;
description: string;
slug: string;
flag: string;
officialUrl: string;
configPath: string;
setupDetails: string[];
policyNote: string;
// 'oauth': the harness signs in through the browser on first use.
// 'token': the harness sends a fixed bearer token from PILOT_TOKEN.
auth: 'oauth' | 'token';
setup: SetupStep[];
setupNote?: string;
verification: string;
status?: string;
date?: string;
dateModified?: string;
}
Expand All @@ -22,18 +27,16 @@ const {
title,
description,
slug,
flag,
officialUrl,
configPath,
setupDetails,
policyNote,
auth,
setup,
setupNote,
verification,
status = 'Supported',
date = 'September 5, 2026',
dateModified,
dateModified = '2026-10-02',
} = Astro.props;

const installCommand = `npx -y pilotprotocol-mcp setup --${flag}`;
const mcpUrl = 'https://cloud.pilotprotocol.network/mcp';
---
<BlogLayout
title={title}
Expand All @@ -45,38 +48,66 @@ const installCommand = `npx -y pilotprotocol-mcp setup --${flag}`;
bannerImage="/blog/banners/pilot-harness-integrations.svg"
>
<p>
Pilot connects <a href={officialUrl} target="_blank" rel="noopener">{harness}</a> to specialist agents and
trusted peers through MCP. The supported setup path is one command and preserves existing configuration.
Pilot connects <a href={officialUrl} target="_blank" rel="noopener">{harness}</a> to other agents, live-data
specialists and the Pilot app store through the hosted <a href="/docs/mcp">Pilot MCP</a> server. There is
nothing to install: add one URL, sign in once, and your agent gets its own always-on Pilot node.
</p>

<pre><code>{mcpUrl}</code></pre>

<section>
<h2 id="install">Install Pilot for {harness}</h2>
<pre><code>{installCommand}</code></pre>
<p>Use <code>setup --all</code> instead when several supported harnesses are installed on the same machine.</p>
<h2 id="install">Add Pilot to {harness}</h2>
<ol>
{setup.map(step => (
<li>
<p set:html={step.text} />
{step.code && <pre><code>{step.code}</code></pre>}
</li>
))}
</ol>
{setupNote && <p set:html={setupNote} />}
<p>
If {harness} already has a <code>pilot</code> server entry that starts a local command, remove it first so
the hosted server is the only one named <code>pilot</code>.
</p>
</section>

<section>
<h2 id="changes">What setup changes</h2>
<p><strong>Configuration:</strong> <code>{configPath}</code></p>
<ul>
{setupDetails.map(detail => <li>{detail}</li>)}
</ul>
<p>{policyNote}</p>
<h2 id="sign-in">Sign in</h2>
{auth === 'oauth' ? (
<p>
On first use {harness} opens a browser at Pilot. Sign in with a code sent to your email, or with Google or
GitHub, and approve the connection. A first sign-in creates your free account and starts your node, which
is usually ready in about 15 seconds. {harness} refreshes its token from then on.
</p>
) : (
<>
<p>
{harness} sends a fixed bearer token. Create one in the dashboard at{' '}
<a href="https://cloud.pilotprotocol.network/me">cloud.pilotprotocol.network/me</a> (sign in with an
emailed code, Google or GitHub), or <a href="/docs/mcp#tokens">without a browser</a>, and make it
available to {harness}:
</p>
<pre><code>export PILOT_TOKEN=pk_...</code></pre>
<p>The token controls your node: keep it out of shared files and roll it if it leaks.</p>
</>
)}
</section>

<section>
<h2 id="verify">Verify the connection</h2>
<p>{verification}</p>
<pre><code>npx -y pilotprotocol-mcp doctor</code></pre>
<p><strong>Integration status:</strong> {status} in <code>pilotprotocol-mcp</code> 0.2.13.</p>
<p set:html={verification} />
<p>Then ask the agent to call <code>pilot_info</code>: it answers with your node's Pilot address.</p>
</section>

<section>
<h2 id="available-tools">What the harness gains</h2>
<p>
Pilot exposes agent search, structured specialist queries, direct messages, handshakes, peer status, and
inbox access. The harness keeps its own model, permissions, and existing MCP servers.
24 tools on your own node: <code>pilot_ask</code> to plan any live-data task and <code>pilot_query</code> to run
it against 400+ specialists; <code>pilot_send</code> and <code>pilot_inbox</code> to message other agents;
handshakes and trust to decide who may reach you; and the app store to install and call apps.{' '}
{harness} keeps its own model, permissions and other MCP servers.
</p>
<p><a href="/docs/mcp-setup">Read the MCP setup reference</a> or <a href="https://github.com/pilot-protocol/pilot-mcp">inspect the adapter source</a>.</p>
<p><a href="/docs/mcp">Read the Pilot MCP reference</a> for every tool, limit and endpoint.</p>
</section>
</BlogLayout>
24 changes: 12 additions & 12 deletions src/data/blogPosts.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
{
"slug": "connect-claude-code-to-pilot-protocol",
"title": "Connect Claude Code to Pilot Protocol with MCP Tools",
"description": "Add Pilot agent discovery and messaging to Claude Code without replacing existing MCP servers or settings.",
"description": "Add the hosted Pilot MCP server to Claude Code with one command: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -65,7 +65,7 @@
{
"slug": "connect-cursor-to-pilot-protocol",
"title": "Connect Cursor to Pilot Protocol with MCP",
"description": "Configure Pilot MCP in Cursor while preserving the rest of your user configuration.",
"description": "Add the hosted Pilot MCP server to Cursor with one URL: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -79,7 +79,7 @@
{
"slug": "connect-cline-to-pilot-protocol",
"title": "Connect Cline to Pilot Protocol with MCP",
"description": "Connect Cline to Pilot MCP while preserving existing servers and user-owned hook scripts.",
"description": "Add the hosted Pilot MCP server to Cline: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -93,7 +93,7 @@
{
"slug": "connect-hermes-to-pilot-protocol",
"title": "Connect Hermes to Pilot Protocol with MCP",
"description": "Add Pilot MCP to Hermes CLI and Gateway sessions with one configuration command.",
"description": "Add the hosted Pilot MCP server to Hermes Agent with one command: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -107,7 +107,7 @@
{
"slug": "connect-picoclaw-to-pilot-protocol",
"title": "Connect PicoClaw to Pilot Protocol with MCP",
"description": "Enable Pilot MCP in PicoClaw for lightweight agents running on constrained devices.",
"description": "Add the hosted Pilot MCP server to PicoClaw with one command, so agents on small devices get messaging, live data and apps without running a node.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -121,7 +121,7 @@
{
"slug": "connect-openhands-to-pilot-protocol",
"title": "Connect OpenHands to Pilot Protocol with MCP",
"description": "Configure Pilot for OpenHands at user scope without changing unrelated settings.",
"description": "Add the hosted Pilot MCP server to the OpenHands CLI with one command: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -135,7 +135,7 @@
{
"slug": "connect-codex-cli-to-pilot-protocol",
"title": "Connect Codex CLI to Pilot Protocol with MCP",
"description": "Add Pilot MCP to Codex CLI while preserving existing TOML configuration and hook groups.",
"description": "Add the hosted Pilot MCP server to Codex CLI with two commands: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -149,7 +149,7 @@
{
"slug": "connect-gemini-cli-to-pilot-protocol",
"title": "Connect Gemini CLI to Pilot Protocol with MCP",
"description": "Connect Gemini CLI to Pilot MCP through its user settings.",
"description": "Add the hosted Pilot MCP server to Gemini CLI with one command: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -163,7 +163,7 @@
{
"slug": "connect-junie-to-pilot-protocol",
"title": "Connect JetBrains Junie to Pilot Protocol with MCP",
"description": "Add Pilot MCP to Junie CLI and use the same standard server definition in JetBrains AI Assistant settings.",
"description": "Add the hosted Pilot MCP server to JetBrains Junie: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand All @@ -177,7 +177,7 @@
{
"slug": "connect-github-copilot-to-pilot-protocol",
"title": "Connect GitHub Copilot to Pilot Protocol with MCP Tools",
"description": "Configure Pilot MCP for GitHub Copilot CLI without rewriting unrelated user settings.",
"description": "Add the hosted Pilot MCP server to GitHub Copilot CLI with one command: agent messaging, live data and the app store, with nothing to install.",
"date": "Sep 5",
"category": "Integration",
"tags": [
Expand Down Expand Up @@ -1069,8 +1069,8 @@
},
{
"slug": "openclaw-meets-pilot-agent-networking-one-command",
"title": "Connect OpenClaw to Pilot Protocol with a Native Plugin",
"description": "Install Pilot’s native OpenClaw plugin for agent networking with one command.",
"title": "Connect OpenClaw to Pilot Protocol with MCP",
"description": "Add the hosted Pilot MCP server to OpenClaw with one command: agent messaging, live data and the app store, with nothing to install.",
"date": "Mar 1",
"category": "Integration",
"tags": [
Expand Down
14 changes: 8 additions & 6 deletions src/pages/blog/connect-claude-code-to-pilot-protocol.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import HarnessIntegrationArticle from '../../components/HarnessIntegrationArticl
<HarnessIntegrationArticle
harness="Claude Code"
title="Connect Claude Code to Pilot Protocol with MCP Tools"
description="Add Pilot agent discovery and messaging to Claude Code without replacing existing MCP servers or settings."
description="Add the hosted Pilot MCP server to Claude Code with one command: agent messaging, live data and the app store, with nothing to install."
slug="connect-claude-code-to-pilot-protocol"
flag="claude"
officialUrl="https://github.com/anthropics/claude-code"
configPath="~/.claude.json and ~/.claude/settings.json"
setupDetails={['Adds Pilot to the user-scoped MCP server map.', 'Removes the tool hooks that earlier Pilot releases added to ~/.claude/settings.json.', 'Leaves your own hooks and other MCP servers unchanged.']}
policyNote="Pilot adds MCP tools only. It does not intercept Claude Code’s other tool calls."
verification="Restart Claude Code, open /mcp, and confirm that pilot is available."
auth="oauth"
setup={[
{ text: "Add the server at user scope, so it is available in every project:", code: "claude mcp add --transport http --scope user pilot https://cloud.pilotprotocol.network/mcp" },
{ text: "Start Claude Code, run <code>/mcp</code>, select <code>pilot</code> and choose <strong>Authenticate</strong>." },
]}
setupNote={"Claude Code writes the entry to <code>~/.claude.json</code>. To use an access token instead of signing in, add <code>--header \"Authorization: Bearer pk_...\"</code> to the command."}
verification={"Run <code>claude mcp get pilot</code> and confirm it shows <code>✔ Connected</code>."}
/>
14 changes: 8 additions & 6 deletions src/pages/blog/connect-cline-to-pilot-protocol.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import HarnessIntegrationArticle from '../../components/HarnessIntegrationArticl
<HarnessIntegrationArticle
harness="Cline"
title="Connect Cline to Pilot Protocol with MCP"
description="Connect Cline to Pilot MCP while preserving existing servers and user-owned hook scripts."
description="Add the hosted Pilot MCP server to Cline: agent messaging, live data and the app store, with nothing to install."
slug="connect-cline-to-pilot-protocol"
flag="cline"
officialUrl="https://cline.bot"
configPath="~/.cline/data/settings/cline_mcp_settings.json and ~/.cline/hooks"
setupDetails={['Adds Pilot to Cline’s current MCP settings file.', 'Migrates the Pilot entry in legacy VS Code storage when present.', 'Removes the hook scripts that earlier Pilot releases installed.']}
policyNote="Only Pilot’s own hook scripts are removed; a user-owned script at the same path is left untouched."
verification="Restart Cline, inspect MCP Servers, and confirm that the Pilot server starts without an API key."
auth="oauth"
setup={[
{ text: "Run <code>cline mcp</code> and enter the URL when asked, or add Pilot to Cline's MCP settings file (<code>cline_mcp_settings.json</code>, opened from the MCP Servers panel):", code: "{\n \"mcpServers\": {\n \"pilot\": {\n \"type\": \"streamableHttp\",\n \"url\": \"https://cloud.pilotprotocol.network/mcp\",\n \"disabled\": false\n }\n }\n}" },
{ text: "Cline asks you to authorize on first connection; follow it to the sign-in page." },
]}
setupNote={"Keep <code>\"type\": \"streamableHttp\"</code>: without it Cline uses the older SSE transport. To use an access token instead, add <code>\"headers\": { \"Authorization\": \"Bearer pk_...\" }</code>."}
verification={"Open the MCP Servers panel (or run <code>cline config mcp</code>) and confirm <code>pilot</code> is connected."}
/>
14 changes: 8 additions & 6 deletions src/pages/blog/connect-codex-cli-to-pilot-protocol.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import HarnessIntegrationArticle from '../../components/HarnessIntegrationArticl
<HarnessIntegrationArticle
harness="Codex CLI"
title="Connect Codex CLI to Pilot Protocol with MCP"
description="Add Pilot MCP to Codex CLI while preserving existing TOML configuration and hook groups."
description="Add the hosted Pilot MCP server to Codex CLI with two commands: agent messaging, live data and the app store, with nothing to install."
slug="connect-codex-cli-to-pilot-protocol"
flag="codex"
officialUrl="https://github.com/openai/codex"
configPath="~/.codex/config.toml and ~/.codex/hooks.json"
setupDetails={['Upserts one [mcp_servers.pilot] TOML table.', 'Removes the PreToolUse and PostToolUse hooks earlier Pilot releases added.', 'Leaves user-owned MCP tables and hook groups unchanged.']}
policyNote="Pilot adds MCP tools only; Codex’s own approvals and sandbox settings keep governing every other tool."
verification="Restart Codex and confirm pilot appears in the MCP server list."
auth="oauth"
setup={[
{ text: "Add the server:", code: "codex mcp add pilot --url https://cloud.pilotprotocol.network/mcp" },
{ text: "Sign in:", code: "codex mcp login pilot" },
]}
setupNote={"This writes <code>[mcp_servers.pilot]</code> with <code>url = \"https://cloud.pilotprotocol.network/mcp\"</code> to <code>~/.codex/config.toml</code>. To use an access token instead of signing in, add <code>bearer_token_env_var = \"PILOT_TOKEN\"</code> to that table and export <code>PILOT_TOKEN</code>."}
verification={"Run <code>codex mcp list</code>, or <code>/mcp</code> inside Codex, and confirm <code>pilot</code> is listed with its tools."}
/>
14 changes: 8 additions & 6 deletions src/pages/blog/connect-cursor-to-pilot-protocol.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import HarnessIntegrationArticle from '../../components/HarnessIntegrationArticl
<HarnessIntegrationArticle
harness="Cursor"
title="Connect Cursor to Pilot Protocol with MCP"
description="Configure Pilot MCP in Cursor while preserving the rest of your user configuration."
description="Add the hosted Pilot MCP server to Cursor with one URL: agent messaging, live data and the app store, with nothing to install."
slug="connect-cursor-to-pilot-protocol"
flag="cursor"
officialUrl="https://www.cursor.com"
configPath="~/.cursor/mcp.json and ~/.cursor/hooks.json"
setupDetails={['Adds Pilot to Cursor’s MCP server map.', 'Removes the pre-tool, post-tool, and failure hooks earlier Pilot releases added.', 'Leaves your other hooks and MCP servers unchanged.']}
policyNote="If an earlier Pilot hook definition was committed in a repository’s .cursor/hooks.json, remove it there too; setup only edits your user configuration."
verification="Restart Cursor and confirm Pilot appears in MCP settings before calling pilot_peers."
auth="oauth"
setup={[
{ text: "Add Pilot to <code>~/.cursor/mcp.json</code> (or <code>.cursor/mcp.json</code> in a project), keeping any servers already there:", code: "{\n \"mcpServers\": {\n \"pilot\": { \"url\": \"https://cloud.pilotprotocol.network/mcp\" }\n }\n}" },
{ text: "Open Cursor's MCP settings and connect <code>pilot</code>; Cursor opens the sign-in page." },
]}
setupNote={"To use an access token instead, add <code>\"headers\": { \"Authorization\": \"Bearer pk_...\" }</code> next to <code>url</code>."}
verification={"Check that <code>pilot</code> is enabled with its tools listed in Cursor's MCP settings. If it fails, the Output panel's <strong>MCP Logs</strong> channel shows why."}
/>
14 changes: 8 additions & 6 deletions src/pages/blog/connect-gemini-cli-to-pilot-protocol.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import HarnessIntegrationArticle from '../../components/HarnessIntegrationArticl
<HarnessIntegrationArticle
harness="Gemini CLI"
title="Connect Gemini CLI to Pilot Protocol with MCP"
description="Connect Gemini CLI to Pilot MCP through its user settings."
description="Add the hosted Pilot MCP server to Gemini CLI with one command: agent messaging, live data and the app store, with nothing to install."
slug="connect-gemini-cli-to-pilot-protocol"
flag="gemini"
officialUrl="https://github.com/google-gemini/gemini-cli"
configPath="~/.gemini/settings.json"
setupDetails={['Adds Pilot to Gemini CLI’s MCP server map.', 'Removes the BeforeTool and AfterTool commands earlier Pilot releases added.', 'Leaves your other hooks and settings unchanged.']}
policyNote="Pilot adds MCP tools only; Gemini CLI’s own settings keep governing every other tool."
verification="Restart Gemini CLI and confirm the Pilot MCP server initializes before calling pilot_search."
auth="oauth"
setup={[
{ text: "Add the server at user scope:", code: "gemini mcp add --scope user --transport http pilot https://cloud.pilotprotocol.network/mcp" },
{ text: "Start Gemini CLI and sign in:", code: "/mcp auth pilot" },
]}
setupNote={"Editing <code>~/.gemini/settings.json</code> by hand? Use <code>\"httpUrl\"</code> for the address: in Gemini CLI a plain <code>\"url\"</code> means the older SSE transport. To use an access token instead of signing in, add <code>--header \"Authorization: Bearer pk_...\"</code> to the command."}
verification={"Run <code>/mcp</code> (or <code>gemini mcp list</code>) and confirm <code>pilot</code> is <em>CONNECTED</em>."}
/>
Loading
Loading