Files
peardata-website/docs/index.html
T
2026-07-30 20:39:16 -04:00

221 lines
10 KiB
HTML

<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<!-- Theme: FOUC-safe bootstrap (localStorage peardata.site.theme) -->
<script>
(function () {
try {
var t = localStorage.getItem('peardata.site.theme');
if (t !== 'light' && t !== 'dark') t = 'dark';
document.documentElement.setAttribute('data-theme', t);
var meta = document.querySelector('meta[name="theme-color"]');
if (meta) meta.setAttribute('content', t === 'light' ? '#f3f5f8' : '#0a0c10');
} catch (e) {
document.documentElement.setAttribute('data-theme', 'dark');
}
})();
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>Documentation · PearData</title>
<meta name="description" content="PearData documentation: quick start, architecture, operator guide, security, RPC, tunnels, and releases." />
<meta name="keywords" content="PearData documentation, docs, operator guide, architecture" />
<meta name="author" content="HoneyPeer, LLC" />
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
<meta name="googlebot" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
<meta name="theme-color" content="#2dd4bf" />
<meta name="color-scheme" content="dark light" />
<meta name="application-name" content="PearData" />
<meta name="apple-mobile-web-app-title" content="PearData" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="msapplication-TileColor" content="#2dd4bf" />
<meta name="msapplication-config" content="/assets/favicons/browserconfig.xml" />
<meta name="format-detection" content="telephone=no" />
<link rel="canonical" href="https://peardata.rest/docs/" />
<link rel="alternate" hreflang="en" href="https://peardata.rest/docs/" />
<link rel="alternate" hreflang="x-default" href="https://peardata.rest/docs/" />
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:site_name" content="PearData" />
<meta property="og:locale" content="en_US" />
<meta property="og:url" content="https://peardata.rest/docs/" />
<meta property="og:title" content="Documentation · PearData" />
<meta property="og:description" content="PearData documentation: quick start, architecture, operator guide, security, RPC, tunnels, and releases." />
<meta property="og:image" content="https://peardata.rest/assets/brand/og-image.png" />
<meta property="og:image:secure_url" content="https://peardata.rest/assets/brand/og-image.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="PearData — Fleet monitoring without open ports. P2P observability on HyperDHT." />
<!-- Twitter / X -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Documentation · PearData" />
<meta name="twitter:description" content="PearData documentation: quick start, architecture, operator guide, security, RPC, tunnels, and releases." />
<meta name="twitter:image" content="https://peardata.rest/assets/brand/twitter-card.png" />
<meta name="twitter:image:alt" content="PearData — Fleet monitoring without open ports. P2P observability on HyperDHT." />
<!-- Icons & PWA -->
<link rel="icon" href="/assets/favicons/favicon.ico" sizes="any" />
<link rel="icon" type="image/png" sizes="32x32" href="/assets/favicons/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/assets/favicons/favicon-16x16.png" />
<link rel="icon" type="image/png" sizes="48x48" href="/assets/favicons/favicon-48x48.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/assets/favicons/apple-touch-icon.png" />
<link rel="manifest" href="/assets/favicons/site.webmanifest" />
<link rel="mask-icon" href="/assets/logo/peardata-wordmark.svg" color="#2dd4bf" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": [
"WebPage",
"TechArticle"
],
"name": "Documentation \u00b7 PearData",
"description": "PearData documentation: quick start, architecture, operator guide, security, RPC, tunnels, and releases.",
"url": "https://peardata.rest/docs/",
"isPartOf": {
"@type": "WebSite",
"name": "PearData",
"url": "https://peardata.rest"
},
"publisher": {
"@type": "Organization",
"name": "HoneyPeer, LLC",
"url": "https://peardata.rest"
},
"inLanguage": "en-US",
"primaryImageOfPage": {
"@type": "ImageObject",
"url": "https://peardata.rest/assets/brand/og-image.png",
"width": 1200,
"height": 630
},
"headline": "Documentation \u00b7 PearData"
}
</script>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/src/styles/global.css" />
<link rel="stylesheet" href="/src/styles/docs.css" />
<link rel="stylesheet" href="/src/styles/theme-light.css" />
</head>
<body>
<div class="bg-mesh" aria-hidden="true"></div>
<div data-nav data-prefix="../"></div>
<div class="docs-layout">
<aside class="docs-sidebar" data-docs-nav data-prefix="../"></aside>
<button type="button" class="docs-sidebar-toggle" aria-label="Docs menu"></button>
<article class="docs-main">
<h1>Documentation</h1>
<p class="docs-lead">
Everything you need to run, harden, and extend PearData — from first public key to multi-agent fleets and on-device QVAC.
Peer-to-peer by design: <strong>dial by identity, not by public ports</strong>.
</p>
<div class="docs-cards">
<a class="docs-card" href="/learn/">
<span class="card-tag">Concepts</span>
<h3>How PearData works</h3>
<p>Deep explainer: P2P identity, metrics push, anomalies, security, and fleet model.</p>
</a>
<a class="docs-card" href="/docs/quickstart">
<span class="card-tag">Start here</span>
<h3>Quick start</h3>
<p>One-line install.sh, systemd agent, desktop client, and first connection.</p>
</a>
<a class="docs-card" href="/docs/architecture">
<span class="card-tag">Design</span>
<h3>Architecture</h3>
<p>Agent pipeline, HyperDHT RPC, REST plane, HyperDB warm store, QVAC on desktop.</p>
</a>
<a class="docs-card" href="/docs/operator">
<span class="card-tag">Production</span>
<h3>Operator guide</h3>
<p>systemd, roles, retention / Data Manager, optional Docker metrics, backups.</p>
</a>
<a class="docs-card" href="/docs/holesail">
<span class="card-tag">Access</span>
<h3>REST &amp; tunnels</h3>
<p>Local REST (:18888) and optional tunnel patterns for agent APIs.</p>
</a>
<a class="docs-card" href="/docs/security">
<span class="card-tag">Hardening</span>
<h3>Security model</h3>
<p>Admin seed proof, pd1 invites, roles, revoke, threat model, checklist.</p>
</a>
<a class="docs-card" href="/docs/api">
<span class="card-tag">Reference</span>
<h3>RPC &amp; REST</h3>
<p>Method groups, metric pushes, AI composites, roles, protocol versioning.</p>
</a>
<a class="docs-card" href="/docs/release">
<span class="card-tag">CI</span>
<h3>Releases</h3>
<p>Host matrix, Bare agent, Electron clients, QVAC packaging, rolling tag.</p>
</a>
<a class="docs-card" href="/docs/faq">
<span class="card-tag">Help</span>
<h3>FAQ</h3>
<p>Keys, invites, peers, charts, QVAC, Pear, AGPL.</p>
</a>
</div>
<h2>Install in one command</h2>
<div class="install-snippet">
<pre><code>curl -fsSL https://install.peardata.rest | bash</code></pre>
</div>
<p>
Interactive installer: agent (Linux + systemd; Docker metrics optional) or desktop client.
After the server starts, check <code>/opt/peardata/.env</code> for
<code>SERVER_PUBLIC_KEY</code> and <code>SERVER_SEED</code>, then connect from the desktop client
(public key = viewer, key + seed = admin, or a full <code>pd1.</code> invite for operators).
See <a href="/docs/quickstart">Quick start</a> and <a href="/download">Download</a>.
</p>
<h2>What is PearData?</h2>
<p>
PearData is <strong>decentralized P2P real-time host monitoring</strong> on the Holepunch stack.
There is no central control plane. Each machine runs a lightweight <strong>agent</strong>
that collects metrics and answers RPC. Desktops dial by Ed25519 public key over
Noise-encrypted HyperDHT. Optional agent-style REST on localhost supports scripts and Grafana.
The desktop UI includes Overview, Charts, custom Dashboards, Alerts, Logs, Processes, Fleet,
Data Manager, and on-device <strong>QVAC</strong> AI. Owned by HoneyPeer, LLC. License: AGPL-3.0-only.
</p>
<div class="table-wrap">
<table>
<thead>
<tr><th>Layer</th><th>Technology</th></tr>
</thead>
<tbody>
<tr><td>Transport</td><td>HyperDHT (Noise-encrypted P2P)</td></tr>
<tr><td>RPC</td><td>protomux-rpc + compact-encoding JSON</td></tr>
<tr><td>Client</td><td>Pear desktop / Electron shell</td></tr>
<tr><td>Warm store</td><td>HyperDB + Corestore</td></tr>
<tr><td>Local AI</td><td>QVAC (on-device, optional)</td></tr>
<tr><td>HTTP</td><td>Agent REST <code>/api/v1|v2|v3</code> (localhost default)</td></tr>
<tr><td>License</td><td>AGPL-3.0-only</td></tr>
</tbody>
</table>
</div>
<div class="docs-pager">
<span></span>
<a class="next" href="/docs/quickstart"><span>Next</span><strong>Quick start →</strong></a>
</div>
</article>
</div>
<div data-footer data-prefix="../"></div>
<script type="module" src="/src/js/site.js"></script>
</body>
</html>