Archived
317 lines
14 KiB
HTML
317 lines
14 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>PI WEB — persistent AI coding agents in your browser</title>
|
|
<meta
|
|
name="description"
|
|
content="PI WEB makes AI coding work persistent by default: agents keep running outside your browser while you supervise from any device."
|
|
/>
|
|
<meta property="og:title" content="PI WEB" />
|
|
<meta
|
|
property="og:description"
|
|
content="Run persistent AI coding agents in real workspaces, keep them alive outside your device, and supervise everything from a browser."
|
|
/>
|
|
<meta property="og:image" content="assets/pi-web-banner.png" />
|
|
<link rel="icon" type="image/svg+xml" href="assets/favicon.svg" />
|
|
<script>
|
|
(() => {
|
|
const theme = window.localStorage.getItem("pi-web-theme");
|
|
if (theme === "light" || theme === "dark") document.documentElement.dataset.theme = theme;
|
|
})();
|
|
</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=IBM+Plex+Mono:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700;800&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<link rel="stylesheet" href="styles.css" />
|
|
</head>
|
|
<body class="home-page">
|
|
<header class="site-header">
|
|
<nav class="container nav" aria-label="Main navigation">
|
|
<a class="brand" href="./" aria-label="PI WEB home">PI WEB</a>
|
|
<div class="nav-links">
|
|
<div class="nav-pages">
|
|
<a href="remote-first.html">Remote-first</a>
|
|
<a href="machines.html">Fleet</a>
|
|
<a href="install.html">Install</a>
|
|
<a href="plugins.html">Plugins</a>
|
|
<a href="faq.html">FAQ</a>
|
|
</div>
|
|
<div class="nav-actions">
|
|
<a class="github-link" href="https://github.com/jmfederico/pi-web" aria-label="PI WEB on GitHub">
|
|
<svg class="github-icon" viewBox="0 0 16 16" aria-hidden="true">
|
|
<path
|
|
fill="currentColor"
|
|
d="M8 0C3.58 0 0 3.67 0 8.2c0 3.63 2.29 6.7 5.47 7.79.4.08.55-.18.55-.4 0-.2-.01-.85-.01-1.55-2.01.38-2.53-.5-2.69-.96-.09-.24-.48-.96-.82-1.16-.28-.16-.68-.56-.01-.57.63-.01 1.08.59 1.23.84.72 1.24 1.87.89 2.33.68.07-.53.28-.89.51-1.09-1.78-.21-3.64-.91-3.64-4.04 0-.89.31-1.62.82-2.2-.08-.2-.36-1.03.08-2.16 0 0 .67-.22 2.2.84A7.4 7.4 0 0 1 8 3.94c.68 0 1.36.09 2 .28 1.53-1.06 2.2-.84 2.2-.84.44 1.13.16 1.96.08 2.16.51.58.82 1.31.82 2.2 0 3.14-1.87 3.83-3.65 4.04.29.26.54.76.54 1.53 0 1.1-.01 1.99-.01 2.27 0 .22.15.49.55.4A8.12 8.12 0 0 0 16 8.2C16 3.67 12.42 0 8 0Z"
|
|
/>
|
|
</svg>
|
|
<span>GitHub</span>
|
|
</a>
|
|
<button class="theme-toggle" type="button" data-theme-toggle aria-label="Toggle light and dark theme">
|
|
<span data-theme-icon aria-hidden="true">◐</span>
|
|
<span data-theme-label>Theme</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
|
|
<main>
|
|
<section class="hero">
|
|
<div class="container hero-grid">
|
|
<div>
|
|
<p class="eyebrow"><span class="pulse"></span> A cockpit for agentic development</p>
|
|
<h1>
|
|
<span class="title-context">Your agents keep working.</span>
|
|
<span class="gradient-text intro-target" aria-label="You just need a browser.">
|
|
<span class="intro-word" style="--i: 0">You</span>
|
|
<span class="intro-word" style="--i: 1">just</span>
|
|
<span class="intro-word" style="--i: 2">need</span>
|
|
<span class="intro-word" style="--i: 3">a</span>
|
|
<span class="intro-word" style="--i: 4">browser.</span>
|
|
</span>
|
|
</h1>
|
|
<p class="hero-lede">
|
|
PI WEB runs Pi Coding Agent sessions in real server-side workspaces, keeps them alive when your browser
|
|
leaves, and gives you a fast web surface to supervise, redirect, and review the work.
|
|
</p>
|
|
<p class="hero-manifesto">
|
|
Local development made sense when humans drove every keystroke. Agentic development works better when the
|
|
environment is persistent, remote, and always available.
|
|
</p>
|
|
<div class="hero-actions">
|
|
<a class="button primary" href="#quick-install">Install in minutes</a>
|
|
<a class="button" href="install.html">Read the docs</a>
|
|
</div>
|
|
<div class="hero-stats" aria-label="Highlights">
|
|
<div class="stat"><strong>Persistent</strong><span>sessions survive browser disconnects</span></div>
|
|
<div class="stat"><strong>Parallel</strong><span>projects, worktrees, and agents</span></div>
|
|
<div class="stat"><strong>Yours</strong><span>runs on your machine or server</span></div>
|
|
</div>
|
|
</div>
|
|
|
|
<aside class="terminal" aria-label="PI WEB install preview">
|
|
<div class="terminal-top">
|
|
<div class="dots"><span></span><span></span><span></span></div>
|
|
<span>agent-hub.local</span>
|
|
</div>
|
|
<pre><code><span class="prompt">$</span> pi-web status
|
|
✓ session daemon running
|
|
✓ web server listening on 127.0.0.1:8504
|
|
|
|
<span class="prompt">$</span> open http://127.0.0.1:8504
|
|
# laptop, phone, tablet — same live sessions
|
|
|
|
<span class="prompt">$</span> pi-web doctor
|
|
✓ login shell can find node >= 22
|
|
✓ native service shell can find pi
|
|
✓ ready for persistent agent work</code></pre>
|
|
</aside>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section compact">
|
|
<div class="container">
|
|
<div class="demo-frame">
|
|
<div class="demo-caption">
|
|
<strong>Workspaces, sessions, transcripts, terminals — one agent control plane.</strong>
|
|
<span>Bring your own repositories.</span>
|
|
</div>
|
|
<img src="assets/pi-web-demo.gif" alt="PI WEB browser UI demo" />
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section manifesto-section" aria-labelledby="manifesto-title">
|
|
<div class="container manifesto-panel">
|
|
<div class="manifesto-copy">
|
|
<p class="eyebrow"><span class="pulse"></span> The mental shift</p>
|
|
<h2 id="manifesto-title">Developer tools were built for a world that no longer exists.</h2>
|
|
<p>
|
|
Editors and terminals assume the work lives with you, on your device, inside your session. AI agents break
|
|
that assumption: their work should persist, continue, and evolve independently of your laptop.
|
|
</p>
|
|
<p>
|
|
PI WEB makes persistence first-class. Sessions live outside the browser, agents keep working, and every
|
|
device becomes a control surface for supervising, redirecting, and reviewing progress.
|
|
</p>
|
|
</div>
|
|
<div class="manifesto-lines" aria-label="PI WEB principles">
|
|
<p>Persistence should not be something you bolt on after the fact.</p>
|
|
<p>The work should not disappear the moment your session ends.</p>
|
|
<p>You do not carry the work. You guide it.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<div class="container">
|
|
<div class="section-head">
|
|
<p class="eyebrow"><span class="pulse"></span> Remote AI-driven development</p>
|
|
<h2>Your laptop is a window, not the workstation.</h2>
|
|
<p>
|
|
Local-only development can become the blocker: one device owns the tools, terminals, build cache, editor,
|
|
and agent runtime. PI WEB moves the working environment to a machine that stays on, so agents can keep
|
|
making progress while every browser becomes a control surface.
|
|
</p>
|
|
</div>
|
|
<div class="cards">
|
|
<article class="card">
|
|
<div class="card-icon">▣</div>
|
|
<h3>The workstation becomes remote</h3>
|
|
<p>
|
|
Keep repositories, dependencies, secrets, build caches, and long-running agent sessions on the machine
|
|
designed to run them.
|
|
</p>
|
|
</article>
|
|
<article class="card">
|
|
<div class="card-icon">⇄</div>
|
|
<h3>The browser becomes the control plane</h3>
|
|
<p>
|
|
Your device is replaceable. The sessions are not. Move between laptop, phone, tablet, and desktop
|
|
without moving the development environment.
|
|
</p>
|
|
</article>
|
|
<article class="card">
|
|
<div class="card-icon">↯</div>
|
|
<h3>Agents become persistent workers</h3>
|
|
<p>
|
|
Start work, leave, return later, review progress, and keep multiple streams running in parallel from one
|
|
stable environment.
|
|
</p>
|
|
</article>
|
|
</div>
|
|
<div class="doc-actions">
|
|
<a class="button" href="remote-first.html">Read the remote-first philosophy</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section">
|
|
<div class="container">
|
|
<div class="section-head">
|
|
<p class="eyebrow"><span class="pulse"></span> Why it feels different</p>
|
|
<h2>Not another tab. A persistent place for agent work.</h2>
|
|
</div>
|
|
<div class="cards">
|
|
<article class="card">
|
|
<div class="card-icon">↻</div>
|
|
<h3>Come back later</h3>
|
|
<p>
|
|
Active sessions live in a long-running daemon, not in your browser tab. Close the lid, reconnect from a
|
|
phone, and continue supervising the same work.
|
|
</p>
|
|
</article>
|
|
<article class="card">
|
|
<div class="card-icon">⌘</div>
|
|
<h3>Use real workspaces</h3>
|
|
<p>
|
|
Add projects once, discover git worktrees automatically, and start agents where the code actually lives.
|
|
</p>
|
|
</article>
|
|
<article class="card">
|
|
<div class="card-icon" aria-hidden="true">
|
|
<svg
|
|
viewBox="0 0 24 24"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="2"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
focusable="false"
|
|
>
|
|
<circle cx="12" cy="12" r="6.5"></circle>
|
|
<path d="M12 2.5v4M12 17.5v4M2.5 12h4M17.5 12h4"></path>
|
|
</svg>
|
|
</div>
|
|
<h3>Keep control</h3>
|
|
<p>
|
|
Watch transcript history, status, shell activity, context usage, and costs while redirecting the agent in
|
|
realtime.
|
|
</p>
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="quick-install" class="section">
|
|
<div class="container install-panel">
|
|
<div class="install-card">
|
|
<p class="eyebrow"><span class="pulse"></span> Quick install</p>
|
|
<h2>Run PI WEB as user services.</h2>
|
|
<ol>
|
|
<li>Install the package globally with npm.</li>
|
|
<li>Run the installer to create native per-user services.</li>
|
|
<li>Open the local URL, or tunnel it from a remote machine.</li>
|
|
</ol>
|
|
<div class="doc-actions">
|
|
<a class="button primary" href="install.html">Complete installation guide</a>
|
|
<a class="button" href="faq.html">Troubleshooting FAQ</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="terminal quick-install">
|
|
<div class="copy-row">
|
|
<strong>User service install</strong>
|
|
<button class="copy-button" data-copy="#home-install">Copy</button>
|
|
</div>
|
|
<pre id="home-install"><code><span class="prompt">$</span> npm install -g @jmfederico/pi-web
|
|
<span class="prompt">$</span> pi-web install
|
|
<span class="prompt">$</span> pi-web doctor
|
|
<span class="prompt">$</span> pi-web version
|
|
<span class="comment"># Open http://127.0.0.1:8504</span></code></pre>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section compact">
|
|
<div class="container doc-grid">
|
|
<article class="doc-card">
|
|
<h3>WSL and containers?</h3>
|
|
<p>
|
|
Use <code>pi-web install</code> where a supported per-user service manager is available. WSL works with the
|
|
installer when systemd is enabled; otherwise use the manual run path.
|
|
</p>
|
|
<a href="faq.html#is-this-linux-only">Read compatibility notes →</a>
|
|
</article>
|
|
<article class="doc-card">
|
|
<h3>Local UI plugins?</h3>
|
|
<p>
|
|
Ask AI agents to add trusted local UI plugins from <code>~/.pi-web/plugins</code> without rebuilding or
|
|
restarting the session daemon.
|
|
</p>
|
|
<a href="plugins.html">Build a plugin →</a>
|
|
</article>
|
|
<article class="doc-card">
|
|
<h3>Node or tools not found?</h3>
|
|
<p>
|
|
Services run login shells. If tools work in your interactive terminal but not in PI WEB, fix PATH in your
|
|
login shell startup files and run the doctor command.
|
|
</p>
|
|
<a href="faq.html#tools-are-not-found">Fix PATH issues →</a>
|
|
</article>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<footer class="site-footer">
|
|
<div class="container footer-inner">
|
|
<span>PI WEB · remote control for persistent Pi Coding Agent sessions.</span>
|
|
<div class="footer-links">
|
|
<a href="remote-first.html">Remote-first</a>
|
|
<a href="machines.html">Fleet</a>
|
|
<a href="install.html">Install</a>
|
|
<a href="plugins.html">Plugins</a>
|
|
<a href="faq.html">FAQ</a>
|
|
<a href="https://www.npmjs.com/package/@jmfederico/pi-web">npm</a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
<script src="site.js"></script>
|
|
</body>
|
|
</html>
|