176 lines
8.9 KiB
HTML
176 lines
8.9 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>Architecture · PearData Docs</title>
|
|
<meta name="description" content="PearData architecture: HyperDHT, protomux-rpc, agent collectors, HyperDB, desktop QVAC." />
|
|
<meta name="keywords" content="PearData architecture, HyperDHT, protomux-rpc, monitoring" />
|
|
<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/architecture" />
|
|
<link rel="alternate" hreflang="en" href="https://peardata.rest/docs/architecture" />
|
|
<link rel="alternate" hreflang="x-default" href="https://peardata.rest/docs/architecture" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:type" content="article" />
|
|
<meta property="og:site_name" content="PearData" />
|
|
<meta property="og:locale" content="en_US" />
|
|
<meta property="og:url" content="https://peardata.rest/docs/architecture" />
|
|
<meta property="og:title" content="Architecture · PearData Docs" />
|
|
<meta property="og:description" content="PearData architecture: HyperDHT, protomux-rpc, agent collectors, HyperDB, desktop QVAC." />
|
|
<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="Architecture · PearData Docs" />
|
|
<meta name="twitter:description" content="PearData architecture: HyperDHT, protomux-rpc, agent collectors, HyperDB, desktop QVAC." />
|
|
<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" />
|
|
|
|
<!-- Article -->
|
|
<meta property="article:section" content="Documentation" />
|
|
<meta property="article:author" content="HoneyPeer, LLC" />
|
|
<meta property="article:publisher" content="HoneyPeer, LLC" />
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": [
|
|
"WebPage",
|
|
"TechArticle"
|
|
],
|
|
"name": "Architecture \u00b7 PearData Docs",
|
|
"description": "PearData architecture: HyperDHT, protomux-rpc, agent collectors, HyperDB, desktop QVAC.",
|
|
"url": "https://peardata.rest/docs/architecture",
|
|
"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": "Architecture \u00b7 PearData Docs"
|
|
}
|
|
</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>Architecture</h1>
|
|
<p class="docs-lead">How PearData is structured: agent pipeline, HyperDHT control plane, optional REST, HyperDB warm store, and desktop QVAC. Peer-to-peer by design — no open ports required for remote monitoring.</p>
|
|
|
|
<nav class="toc">
|
|
<strong>On this page</strong>
|
|
<ol>
|
|
<li><a href="#planes">Planes</a></li>
|
|
<li><a href="#agent">Agent pipeline</a></li>
|
|
<li><a href="#desktop">Desktop</a></li>
|
|
<li><a href="#qvac">QVAC</a></li>
|
|
<li><a href="#storage">Storage</a></li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<h2 id="planes">Planes</h2>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead><tr><th>Plane</th><th>Role</th></tr></thead>
|
|
<tbody>
|
|
<tr><td>Control / metadata</td><td>Handshake, catalog, alerts config, invites, jobs, ACL, Data Manager</td></tr>
|
|
<tr><td>High-frequency metrics</td><td>1s collect → ring buffers → <code>push:metrics</code> + <code>queryData</code></td></tr>
|
|
<tr><td>Anomaly / health</td><td>Threshold engine → <code>push:anomaly</code> / <code>push:alert</code> + <code>push:health</code></td></tr>
|
|
<tr><td>Local REST (optional)</td><td><code>/api/v1|v2|v3</code> on <code>127.0.0.1:18888</code></td></tr>
|
|
<tr><td>Local AI (desktop)</td><td>QVAC tab + tools; models never load on the agent</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<h2 id="agent">Agent pipeline</h2>
|
|
<pre><code>collector (1s) → store (hot/warm memory) → anomaly engine
|
|
↘ HyperDB warm flush
|
|
↘ protomux-rpc pushes to subscribed clients</code></pre>
|
|
<p>Entry: <code>server/server.js</code> / <code>bin/peardata-server.mjs</code>. Collectors read <code>/proc</code> and optional Docker/cgroup metrics when enabled.</p>
|
|
|
|
<h2 id="desktop">Desktop</h2>
|
|
<p>Pear (<code>index.js</code>) or Electron (<code>electron/main.cjs</code>) loads the HTML shell. Connection stack in <code>client/*</code>. Views: Overview, Charts, Dashboard, Processes, Alerts, QVAC, Logs, Fleet, Connect, Settings.</p>
|
|
|
|
<h2 id="qvac">QVAC</h2>
|
|
<p>On-device inference via <code>@qvac/sdk</code> (Bare worker). Tools call existing agent RPCs. Multi-agent specialists run dynamically for broad investigations; UI embeds swarm cards in the chat transcript. Packaging notes: portable worker entry, cross-host bare-runtime installs for CI clients.</p>
|
|
|
|
<h2 id="storage">Storage</h2>
|
|
<p>Hot path stays in memory. Warm history via HyperDB/Corestore with retention.json, auto-prune, and Data Manager UI (admin). Optional Hyperswarm for linked peer warm pull.</p>
|
|
|
|
<div class="docs-pager">
|
|
<a class="prev" href="/docs/quickstart"><span>Prev</span><strong>← Quick start</strong></a>
|
|
<a class="next" href="/docs/operator"><span>Next</span><strong>Operator guide →</strong></a>
|
|
</div>
|
|
</article>
|
|
</div>
|
|
|
|
<div data-footer data-prefix="../"></div>
|
|
<script type="module" src="/src/js/site.js"></script>
|
|
</body>
|
|
</html>
|