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
3 changes: 2 additions & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ The managed control plane is in preview. Supported adapters can surface agent ac

## Docs

- [App Store](https://pilotprotocol.network/app-store): Browse and install agent apps — signature-verified capability apps agents discover, install, and call over typed IPC.
- [Trust Center](https://pilotprotocol.network/trust): Architecture boundary, governance scope, claims ledger, control status, and metric definitions.
- [Security](https://pilotprotocol.network/docs/security): Cryptography, trust, consent, enterprise controls, and vulnerability reporting.
- [Getting Started](https://pilotprotocol.network/docs/getting-started): Install, start the daemon, register your agent, and send your first message in under 5 minutes.
Expand Down Expand Up @@ -68,7 +69,7 @@ The managed control plane is in preview. Supported adapters can surface agent ac
- [Nebula vs Tailscale vs ZeroTier: Overlay Network for AI Agents](https://pilotprotocol.network/blog/pilot-vs-tailscale-nebula-zerotier-ai-agents): Head-to-head comparison of the three most popular overlay networks and where Pilot fits for agent workloads.
- [Benchmarking: HTTP vs UDP Overlay](https://pilotprotocol.network/blog/benchmarking-http-vs-udp-overlay): Latency, throughput, and NAT traversal benchmarks comparing HTTP/2 and Pilot's UDP overlay for agent communication.
- [Persistent Connections for AI Agents](https://pilotprotocol.network/blog/move-beyond-rest-persistent-connections-for-agents): Compare REST, WebSocket, gRPC, and persistent UDP tunnels for agent messaging with code examples.
- [Why AI Agents Need Their Own Network Stack](https://pilotprotocol.network/blog/why-ai-agents-need-network-stack): The case for a dedicated network layerpermanent addresses, NAT traversal, encrypted tunnels, and cryptographic trust for multi-agent systems.
- [Agent Connectivity Best Practices: Why AI Agents Need a Network Stack](https://pilotprotocol.network/blog/why-ai-agents-need-network-stack): Agent connectivity best practices for multi-agent systemsdurable addresses, NAT traversal, encrypted tunnels, and per-peer trust.
- [Overlay Networking Explained](https://pilotprotocol.network/blog/overlay-networking-secure-ai-agent-communication-explained): A practical guide to overlay networking for secure AI agent communication — encapsulation, control planes, protocol trade-offs, and deployment patterns.
- [NATS vs gRPC vs TCP vs Pilot Protocol](https://pilotprotocol.network/blog/pilot-vs-tcp-grpc-nats-comparison): Feature-by-feature comparison of four agent communication protocols with latency and throughput benchmarks.
- [Multi-Agent System Security: Network Defense Strategies](https://pilotprotocol.network/blog/network-security-for-multi-agent-systems-key-strategies): Layered defense, secure protocols (MCP, A2A), and how to protect AI agent networks from compromise.
Expand Down
9 changes: 5 additions & 4 deletions src/components/BaseHead.astro
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
import '../styles/global.css';
import { formatPageTitle } from '../lib/seo.mjs';
import { formatMetaDescription, formatPageTitle } from '../lib/seo.mjs';

interface Props {
title: string;
Expand All @@ -23,6 +23,7 @@ const {
} = Astro.props;

const pageTitle = formatPageTitle(title, Astro.url.pathname);
const pageDescription = formatMetaDescription(description, Astro.url.pathname);
const canonical = canonicalUrl
? new URL(canonicalUrl, Astro.site ?? 'https://pilotprotocol.network')
: !robots.toLowerCase().includes('noindex')
Expand All @@ -46,13 +47,13 @@ const TWITTER_PIXEL_ID =
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>{pageTitle}</title>
<meta name="description" content={description}>
<meta name="description" content={pageDescription}>
<meta name="robots" content={robots}>
<meta name="author" content="Pilot Protocol">
{resolvedCanonical && <link rel="canonical" href={resolvedCanonical}>}
<meta property="og:type" content={ogType}>
<meta property="og:title" content={pageTitle}>
<meta property="og:description" content={description}>
<meta property="og:description" content={pageDescription}>
{resolvedCanonical && <meta property="og:url" content={resolvedCanonical}>}
<meta property="og:image" content={ogImage}>
<meta property="og:image:alt" content={ogImageAlt}>
Expand All @@ -61,7 +62,7 @@ const TWITTER_PIXEL_ID =
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@pilotprotocol_">
<meta name="twitter:title" content={pageTitle}>
<meta name="twitter:description" content={description}>
<meta name="twitter:description" content={pageDescription}>
<meta name="twitter:image" content={ogImage}>
<meta name="twitter:image:alt" content={ogImageAlt}>
<meta name="theme-color" content="#0b0b0a" media="(prefers-color-scheme: dark)">
Expand Down
42 changes: 22 additions & 20 deletions src/data/blogPosts.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
{
"slug": "build-agent-app-turn-api-into-tool",
"title": "How to Build an Agent App: Turn Your API Into an Agent-Native Tool",
"description": "Turn an existing API into an installable agent app on Pilot Protocol the discover, install, call loop, what to prepare, and how to publish.",
"description": "Turn an existing API into an installable agent app on Pilot Protocol \u2014 the discover, install, call loop, what to prepare, and how to publish.",
"date": "Jul 5",
"category": "Blog",
"tags": [
Expand Down Expand Up @@ -62,7 +62,7 @@
{
"slug": "overlay-network-ai-agents",
"title": "Overlay Network for AI Agents: Architecture and Trust Model",
"description": "What an overlay network for AI agents needs persistent addressing, NAT traversal, encrypted transport, and per-peer trust and how Pilot Protocol implements it.",
"description": "What an overlay network for AI agents needs \u2014 persistent addressing, NAT traversal, encrypted transport, and per-peer trust \u2014 and how Pilot Protocol implements it.",
"date": "Jul 1",
"category": "Blog",
"tags": [
Expand Down Expand Up @@ -107,7 +107,7 @@
{
"slug": "direct-communication-protocols-ai-agents-guide",
"title": "AI agent communication protocols: Pilot vs MCP vs A2A vs ACP vs ANP",
"description": "Compare AI agent communication protocols — MCP, A2A, ACP, ANP, and Pilot — on transport, discovery, NAT traversal, and trust. Find the right stack for your agents.",
"description": "Compare five agent protocols across transport, discovery, trust, reachability, and application semantics to choose a complementary stack.",
"date": "Jun 29",
"category": "Blog",
"tags": [
Expand Down Expand Up @@ -282,8 +282,8 @@
},
{
"slug": "overlay-networking-secure-ai-agent-communication-explained",
"title": "Overlay networking: Secure AI agent communication explained",
"description": "Discover what is overlay networking and how it enables secure communication for AI agents. Optimize your distributed systems today!",
"title": "Overlay Networking Explained for Distributed AI Systems",
"description": "A vendor-neutral primer on overlay and underlay networks, encapsulation, topology, MTU, control and data planes, identity, routing, and operational tradeoffs.",
"date": "Apr 27",
"category": "Blog",
"tags": [
Expand Down Expand Up @@ -514,7 +514,7 @@
{
"slug": "protocol-wrapping-secure-peer-to-peer-ai-systems",
"title": "Protocol wrapping for secure peer-to-peer AI systems",
"description": "Learn how protocol wrapping powers secure P2P AI networks. Covers VXLAN, Geneve, UDP overlays, anonymity wrappers, and real-world benchmarks for distributed systems engineers.",
"description": "How encapsulation, metadata, encryption, direct paths, and relay fallback shape protocol-wrapping choices for distributed AI systems.",
"date": "Aug 11",
"category": "Blog",
"tags": [
Expand Down Expand Up @@ -576,8 +576,8 @@
},
{
"slug": "ai-networking-terminology-a2a-mcp-anp-protocols",
"title": "AI networking terminology explained: A2A, MCP, ANP protocols",
"description": "Understand A2A, MCP, and ANP protocols for AI agent networking. Learn how each works, their security models, benchmark realities, and which to use in 2026.",
"title": "AI Networking Glossary: A2A, MCP, and ANP Terms",
"description": "A definition-first glossary for A2A, MCP, ANP, Agent Cards, tools, resources, discovery, transport, identity, and trust in an agent system.",
"date": "Apr 1",
"category": "Blog",
"tags": [
Expand Down Expand Up @@ -777,7 +777,7 @@
{
"slug": "openclaw-agents-behind-nat-zero-config",
"title": "OpenClaw Agents Behind NAT: Zero-Config Peer Connectivity",
"description": "52% of OpenClaw agents were behind NAT. None configured port forwarding. How Pilot Protocol's three-tier traversal delivers zero-config connectivity for autonomous agents.",
"description": "How OpenClaw agents can attempt direct traversal and use encrypted relay fallback across home, enterprise, cloud, and mobile environments.",
"date": "Mar 17",
"category": "Guide",
"tags": [
Expand Down Expand Up @@ -1024,7 +1024,7 @@
{
"slug": "secure-ai-agent-communication-zero-trust",
"title": "How to Secure AI Agent Communication With Zero Trust",
"description": "Zero trust for AI agents: Ed25519 identity, private-by-default discovery, mutual handshakes with justification, and instant revocation. CrewAI exfiltrated data 65% of the time -- here is how to stop trusting by default.",
"description": "A practical zero-trust model for AI agent communication: authenticated peers, encrypted tunnels, revocable trust, clear boundaries, and application controls.",
"date": "Jun 5",
"category": "Security",
"tags": [
Expand Down Expand Up @@ -1128,7 +1128,7 @@
{
"slug": "how-pilot-protocol-works",
"title": "How Pilot Protocol Works",
"description": "A deep dive into 48-bit virtual addresses, UDP tunnels, three-tier NAT traversal, X25519-based tunnel encryption, and policy-gated endpoint access.",
"description": "How Pilot separates agent identity and coordination from encrypted payload paths, including discovery, traversal, direct connections, and relay fallback.",
"date": "May 21",
"category": "Architecture",
"tags": [
Expand All @@ -1153,13 +1153,15 @@
},
{
"slug": "why-ai-agents-need-network-stack",
"title": "Why AI Agents Need Their Own Network Stack",
"description": "A2A assumes HTTP endpoints. MCP assumes reachable servers. 88% of networks involve NAT. The agent ecosystem is missing its TCP/IP layer.",
"title": "Agent Connectivity Best Practices: Why AI Agents Need a Network Stack",
"description": "Agent connectivity best practices for reliable multi-agent systems: durable addresses, NAT traversal, encrypted tunnels, and per-peer trust.",
"date": "Feb 2",
"category": "Architecture",
"tags": [
"opinion",
"ai-agents"
"ai-agents",
"networking",
"best-practices"
],
"banner": "banners/why-ai-agents-need-network-stack.webp",
"iso_date": "2026-02-02"
Expand All @@ -1179,8 +1181,8 @@
},
{
"slug": "benchmarking-http-vs-udp-overlay",
"title": "Benchmarking Agent Communication: HTTP vs. UDP Overlay",
"description": "Hard numbers comparing connection setup, message latency, throughput, and memory usage between HTTP/2, gRPC, WebSocket, and Pilot Protocol.",
"title": "HTTP vs UDP Overlay: An Agent Benchmarking Method",
"description": "A reproducible method for comparing cold and warm connections, direct and relayed paths, latency, throughput, resource use, and recovery.",
"date": "Feb 26",
"category": "Architecture",
"tags": [
Expand Down Expand Up @@ -1269,8 +1271,8 @@
},
{
"slug": "zero-dependency-encryption-x25519-aes-gcm",
"title": "Zero-Dependency Agent Encryption: X25519 + AES-256-GCM in Pure Go",
"description": "How Pilot implements authenticated key exchange, tunnel encryption, nonce management, and replay protection using only Go's standard library.",
"title": "AES-256-GCM Encryption: Zero-Dependency Go Implementation Guide",
"description": "AES-256-GCM encryption explained with code: X25519 key exchange, GCM authenticated encryption, nonce handling, and wire format in zero-dependency Go.",
"date": "Feb 8",
"category": "Security",
"tags": [
Expand All @@ -1295,8 +1297,8 @@
},
{
"slug": "pilot-vs-tcp-grpc-nats-comparison",
"title": "Pilot vs. TCP vs. gRPC vs. NATS: Agent Communication",
"description": "An honest comparison with real benchmarks. Where each wins, where each loses, and which to use for your agent architecture.",
"title": "Where Pilot Fits with TCP, gRPC, and NATS",
"description": "A responsibility-first comparison of transport, typed RPC, brokered messaging, agent identity, and cross-network reachability.",
"date": "Feb 4",
"category": "Architecture",
"tags": [
Expand Down
4 changes: 2 additions & 2 deletions src/data/solutions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ export const solutions: SolutionProfile[] = [
group: 'Connect',
hue: 125,
eyebrow: 'Agent connectivity',
metaTitle: 'Private Agent Networks Across Boundaries | Pilot Protocol',
description: 'Give AI agents permanent addresses, private discovery, explicit trust, and encrypted direct or relayed paths across machines and networks.',
metaTitle: 'AI Agent Network for Private Connectivity | Pilot Protocol',
description: 'Build a private AI agent network with permanent addresses, private discovery, explicit trust, and encrypted paths across machines and clouds.',
heroLead: 'Connect agents across',
heroEmphasis: 'every boundary.',
lede: 'Give every agent a stable network identity and a private path to its peers—across laptops, clouds, offices, and organizations—without treating a central message broker as the data plane.',
Expand Down
131 changes: 131 additions & 0 deletions src/layouts/BlogLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,86 @@ const related = collectionPosts
.sort((a, b) => b.shared - a.shared)
.slice(0, 3);

const funnelCtaGroups = [
{
slugs: new Set([
'why-ai-agents-need-network-stack',
'pilot-vs-tcp-grpc-nats-comparison',
'direct-communication-protocols-ai-agents-guide',
'ai-agent-discovery-process-p2p-networks',
'how-pilot-protocol-works',
'pilot-vs-tailscale-nebula-zerotier-ai-agents',
'connect-ai-agents-behind-nat-without-vpn',
'build-agent-swarm-self-organizes',
'peer-to-peer-agent-communication-no-server',
'overlay-networking-secure-ai-agent-communication-explained',
]),
eyebrow: 'For agent platform teams',
title: 'Map the network your agents actually need',
body: 'Review addressing, private discovery, peer trust, direct paths, and encrypted relay fallback as one deployment model.',
href: '/solutions/private-agent-network',
label: 'Explore private agent networks',
},
{
slugs: new Set([
'zero-dependency-encryption-x25519-aes-gcm',
'secure-ai-agent-communication-zero-trust',
'agent-communication-security-best-practices',
'trust-model-agents-invisible-by-default',
]),
eyebrow: 'For security reviewers',
title: 'Separate implemented controls from deployment policy',
body: 'Inspect the cryptographic boundary, trust lifecycle, metadata exposure, operational controls, and stated limitations.',
href: '/trust',
label: 'Open the Trust Center',
},
{
slugs: new Set([
'ai-agent-app-store',
'build-agent-app-turn-api-into-tool',
'mcp-plus-pilot-tools-and-network',
]),
eyebrow: 'For API and tool publishers',
title: 'Turn one useful service into an agent capability',
body: 'Package typed methods, declare required authority, and make the capability discoverable without replacing the upstream product.',
href: '/solutions/agent-ready-apis',
label: 'See the publisher path',
},
{
slugs: new Set([
'distributed-rag-without-central-knowledge-base',
'scriptorium-replace-agentic-active-research-ready-intelligence',
]),
eyebrow: 'For knowledge and research teams',
title: 'Evaluate grounded search on your own sources',
body: 'Compare lexical, dense, and hybrid retrieval while preserving citations and control over the index and model endpoints.',
href: '/solutions/grounded-agent-search',
label: 'Explore grounded agent search',
},
{
slugs: new Set(['claude-agent-teams-over-pilot']),
eyebrow: 'For engineering leaders',
title: 'Manage coding-agent settings and usage as a fleet',
body: 'Review the early-access control surface for inventory, signed settings, usage attribution, and audited remote operations.',
href: '/enterprise/claude-code-management',
label: 'Review enterprise management',
},
{
slugs: new Set([
'enterprise-identity-integration-pilot-protocol',
'enterprise-private-networks-roadmap',
'enterprise-phase-3-rbac-policies-audit-fleet',
'enterprise-production-complete-identity-directory-audit-export',
]),
eyebrow: 'For enterprise AI teams',
title: 'Put autonomous agents inside an operating control loop',
body: 'Connect fleet state, signed policy, approvals, bounded remote operations, usage telemetry, and action evidence.',
href: '/enterprise/autonomous-ai-agents',
label: 'Explore the agent control plane',
},
];
const funnelCta = funnelCtaGroups.find((group) => group.slugs.has(currentSlug));

// Imported article bodies historically included their own schema and page
// title. The layout owns both, so remove only those first legacy elements.
const renderedBody = await Astro.slots.render('default');
Expand Down Expand Up @@ -209,6 +289,16 @@ const faqSectionId = headingIds.has('frequently-asked-questions')
{tags.map((tag) => <span class="tag">{tag}</span>)}
</div>
<Fragment set:html={articleBody} />
{funnelCta && (
<aside class="article-next-step" aria-label="Recommended next step" data-track-cta={`${currentSlug}:${funnelCta.href}`}>
<span>{funnelCta.eyebrow}</span>
<div>
<h2>{funnelCta.title}</h2>
<p>{funnelCta.body}</p>
</div>
<a href={funnelCta.href}>{funnelCta.label} <i aria-hidden="true">→</i></a>
</aside>
)}
<footer class="article-provenance">
<strong>About this article</strong>
<p>Published by the Pilot Protocol team. Product claims are scoped to the availability labels and technical references linked in the article; deployment behavior can vary by version and environment.</p>
Expand Down Expand Up @@ -421,6 +511,47 @@ const faqSectionId = headingIds.has('frequently-asked-questions')
</script>

<style>
.article-next-step {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 1rem 2rem;
align-items: end;
margin: 3rem 0 2rem;
padding: clamp(1.25rem, 3vw, 2rem);
border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--line));
background: color-mix(in srgb, var(--accent) 6%, var(--bg));
}
.article-next-step > span {
grid-column: 1 / -1;
color: var(--accent-text);
font: 600 0.68rem/1.2 var(--mono);
letter-spacing: 0.14em;
text-transform: uppercase;
}
.article-next-step h2 {
margin: 0 0 0.55rem;
font-size: clamp(1.35rem, 3vw, 1.9rem);
line-height: 1.08;
}
.article-next-step p { margin: 0; color: var(--ink-dim); }
.article-next-step > a {
display: inline-flex;
gap: 0.6rem;
align-items: center;
justify-content: center;
min-height: 44px;
padding: 0.75rem 1rem;
border: 1px solid var(--ink);
color: var(--ink);
font: 600 0.72rem/1.2 var(--mono);
text-decoration: none;
white-space: nowrap;
}
.article-next-step > a:hover { background: var(--ink); color: var(--bg); }
@media (max-width: 640px) {
.article-next-step { grid-template-columns: 1fr; align-items: start; }
.article-next-step > a { width: 100%; white-space: normal; }
}
.article-faq {
max-width: 760px;
margin: 0 auto;
Expand Down
Loading
Loading