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
1 change: 1 addition & 0 deletions src/components/Nav.astro
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const { active } = Astro.props;
const forLinks = [
{ href: '/for/p2p', label: 'Direct P2P', desc: 'Peer-to-peer for AI agents' },
{ href: '/for/mcp', label: 'MCP + Pilot', desc: 'Give your MCP servers a network' },
{ href: '/app-store', label: 'App Store', desc: 'Agent apps, one command to install' },
];

const techLinks = [
Expand Down
201 changes: 201 additions & 0 deletions src/pages/app-store.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
---
import BaseHead from '../components/BaseHead.astro';
import Nav from '../components/Nav.astro';
import Footer from '../components/Footer.astro';
import '../styles/system.css';

const title = "App Store - Agent Apps on Pilot Protocol";
const description = "Browse and install agent apps from the Pilot Protocol App Store. Experiences tailor-made for AI agents - one command to install, one namespace to manage.";
const canonicalUrl = "https://pilotprotocol.network/app-store";
---

<!DOCTYPE html>
<html lang="en">
<head>
<BaseHead title={title} description={description} canonicalUrl={canonicalUrl} />
<script type="application/ld+json" set:html={JSON.stringify({
"@context": "https://schema.org",
"@type": "WebPage",
"name": title,
"description": description,
"url": canonicalUrl,
"publisher": {"@type": "Organization", "name": "Vulture Labs", "url": "https://vulturelabs.com"}
})}></script>
</head>
<body>

<Nav active="for" />

<section class="page-head">
<div class="wrap">
<div class="eyebrow">App Store</div>
<h1>Agent Apps.<br/><em>One command away.</em></h1>
<p class="lede">
<!-- TODO(PILOT-9): Replace with narrative-approved copy -->
The App Store is where agents find experiences built just for them.
Every app is an agent-first interface — no human UI bolted on, no
browser chrome in the way. Install with one command, manage from
one namespace.
</p>
<div class="head-cta">
<a class="btn primary" href="/docs/getting-started"
data-track="cta_click" data-track-target="install" data-track-location="appstore_head">Install Pilot <span class="arr">→</span></a>
<a class="btn" href="/docs/app-store"
data-track="cta_click" data-track-target="appstore_docs" data-track-location="appstore_head">Read the docs</a>
</div>
</div>
</section>

<section class="section">
<div class="wrap">
<div class="section-head">
<div class="eyebrow">How it works</div>
<h2>Agents install apps.<br/><em>No browser required.</em></h2>
</div>
<div class="feat-grid cols-3">
<div class="feat">
<div class="feat-ix">01</div>
<div class="feat-t">Discover</div>
<div class="feat-d">
Agents browse the App Store through their native protocol.
Search, filter, and find apps by capability, not by human
categories.
</div>
</div>
<div class="feat">
<div class="feat-ix">02</div>
<div class="feat-t">Install</div>
<div class="feat-d">
One command: <code>pilot app install &lt;name&gt;</code>.
Dependencies resolved, permissions requested, app live
in seconds.
</div>
</div>
<div class="feat">
<div class="feat-ix">03</div>
<div class="feat-t">Run</div>
<div class="feat-d">
Apps run in the agent's own context. No browser, no
headless Chrome — native protocol access from first byte.
</div>
</div>
</div>
</div>
</section>

<section class="section">
<div class="wrap">
<div class="section-head">
<div class="eyebrow"><span class="soon-badge">Coming soon</span> Featured apps</div>
<h2>Apps <em>built for agents,</em> by agents.</h2>
</div>
<p class="lede" style="max-width: 60ch; margin-top: -40px; margin-bottom: 32px;">
<!-- TODO(PILOT-9): Replace with narrative-approved app names and descriptions -->
The initial App Store launches with a curated set of agent experiences.
More apps ship every week as builders join the protocol.
</p>
<div class="zoo">
<div class="zoo-card">
<div class="zoo-top">
<div class="zoo-id">Coming soon</div>
<div class="zoo-badge">Featured</div>
</div>
<div class="zoo-name">Agent Apps</div>
<div class="zoo-desc">
<!-- TODO(PILOT-9): List actual launch apps here -->
The first wave of agent apps — from data tools to personal assistants —
will be listed here at launch. Each app is an agent-first experience
with no human UI overhead.
</div>
<div class="zoo-stats">
<div class="zoo-stat"><div class="v">Soon</div><div class="l">Launch</div></div>
</div>
<div class="zoo-arr">Learn more →</div>
</div>
</div>
</div>
</section>

<section class="section">
<div class="wrap">
<div class="section-head">
<div class="eyebrow">For builders</div>
<h2>Ship an agent app.<br/><em>It's just a manifest.</em></h2>
</div>
<div class="feat-grid cols-2">
<div class="feat">
<div class="feat-ix">Manifest</div>
<div class="feat-t">Declare your app</div>
<div class="feat-d">
An agent app is defined by a <code>pilot.app.json</code> manifest:
name, version, capabilities, and entry point. No Docker, no
Kubernetes — the protocol handles distribution.
</div>
</div>
<div class="feat">
<div class="feat-ix">Submit</div>
<div class="feat-t">One PR to publish</div>
<div class="feat-d">
<!-- TODO(PILOT-9): Replace with actual submission flow when narrative is approved -->
Submission guidelines and the publishing pipeline are being finalized.
For early access, reach out to the team.
</div>
</div>
<div class="feat">
<div class="feat-ix">Permissions</div>
<div class="feat-t">Agent-granular scope</div>
<div class="feat-d">
Apps declare what they need — network access, file I/O, specific
protocols. The agent grants or denies at install time. No ambient
authority.
</div>
</div>
<div class="feat">
<div class="feat-ix">Distribution</div>
<div class="feat-t">Protocol-native</div>
<div class="feat-d">
Apps are distributed through the Pilot Protocol itself. No app store
servers, no CDN — the network is the distribution layer.
</div>
</div>
</div>
</div>
</section>

<section class="section">
<div class="wrap">
<div class="cta-block">
<h2>Ready to <em>build or browse</em> agent apps?</h2>
<div class="cta-actions">
<a class="btn primary" href="/docs/getting-started">Install Pilot <span class="arr">→</span></a>
<a class="btn" href="mailto:founders@pilotprotocol.network?subject=Pilot%20App%20Store%20(Early%20Access)">Early access</a>
</div>
</div>
</div>
</section>

<Footer />

<style>
.soon-badge {
display: inline-block;
font-family: var(--mono);
font-size: 10px;
letter-spacing: 0.14em;
text-transform: uppercase;
background: var(--accent);
color: var(--accent-ink);
padding: 2px 8px;
margin-right: 10px;
}
code {
font-family: var(--mono);
font-size: 0.9em;
background: var(--bg-subtle, rgba(128,128,128,0.12));
padding: 1px 5px;
border-radius: 3px;
}
</style>

</body>
</html>
Loading