diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-19 00:18:03 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-19 00:18:50 +0300 |
| commit | 19295b85e5d6c2c7a9bce5d52343d89749d9f628 (patch) | |
| tree | 2b7749c5c4f0528676cc3aa8258e2f6ac9bddd5a /website | |
| parent | 76ac2da20a4e7266fc9d785147521dea5e033c31 (diff) | |
docs: add compare page and refresh site assets
Diffstat (limited to 'website')
| -rw-r--r-- | website/assets/favicon.png | bin | 1357 -> 2196 bytes | |||
| -rw-r--r-- | website/assets/sidebar-agents-v2.png (renamed from website/assets/sidebar-agents.png) | bin | 27714 -> 27714 bytes | |||
| -rw-r--r-- | website/assets/sidebar-workspaces-v2.png (renamed from website/assets/sidebar-workspaces.png) | bin | 18576 -> 18576 bytes | |||
| -rw-r--r-- | website/astro.config.mjs | 2 | ||||
| -rw-r--r-- | website/css/style.css | 224 | ||||
| -rw-r--r-- | website/favicon.ico | bin | 15086 -> 0 bytes | |||
| -rw-r--r-- | website/index.html | 94 | ||||
| -rw-r--r-- | website/scripts/prepare-docs.mjs | 4 | ||||
| -rw-r--r-- | website/src/pages/compare.astro | 265 |
9 files changed, 547 insertions, 42 deletions
diff --git a/website/assets/favicon.png b/website/assets/favicon.png Binary files differindex a1d7a4eb..79404044 100644 --- a/website/assets/favicon.png +++ b/website/assets/favicon.png diff --git a/website/assets/sidebar-agents.png b/website/assets/sidebar-agents-v2.png Binary files differindex e858e334..e858e334 100644 --- a/website/assets/sidebar-agents.png +++ b/website/assets/sidebar-agents-v2.png diff --git a/website/assets/sidebar-workspaces.png b/website/assets/sidebar-workspaces-v2.png Binary files differindex e2ef0c3e..e2ef0c3e 100644 --- a/website/assets/sidebar-workspaces.png +++ b/website/assets/sidebar-workspaces-v2.png diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 4d34b7a4..ae0c38a6 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -53,7 +53,7 @@ export default defineConfig({ starlight({ title: 'herdr', description: 'Terminal-native agent runtime and multiplexer.', - favicon: '/assets/favicon.png', + favicon: '/assets/favicon.png?v=14', logo: { src: './public/assets/logo.svg', alt: 'herdr', diff --git a/website/css/style.css b/website/css/style.css index 73fa272a..165d7393 100644 --- a/website/css/style.css +++ b/website/css/style.css @@ -1256,6 +1256,216 @@ td:last-child { font-size: 0.9rem; } +.compare-hero { + grid-template-columns: minmax(360px, 0.95fr) minmax(360px, 0.75fr); + align-items: center; +} + +.compare-claim-card { + border: 1px solid var(--line-strong); + border-radius: var(--radius-lg); + background: + radial-gradient(circle at 22% 0%, rgb(103 215 202 / 0.2), transparent 18rem), + rgb(255 253 248 / 0.82); + box-shadow: var(--shadow); + padding: clamp(1.35rem, 3vw, 2rem); +} + +.compare-claim-card h2 { + margin: 0; + color: var(--ink); + font-size: clamp(1.85rem, 3vw, 2.85rem); + letter-spacing: -0.055em; + line-height: 1.04; +} + +.compare-checks { + list-style: none; + margin: 1.25rem 0 0; + padding: 0; + display: grid; + gap: 0.65rem; +} + +.compare-checks li { + position: relative; + padding-left: 1.65rem; + color: var(--ink-soft); + line-height: 1.5; +} + +.compare-checks li::before { + content: "✓"; + position: absolute; + left: 0; + top: 0.05rem; + display: inline-grid; + place-items: center; + width: 1.05rem; + height: 1.05rem; + border-radius: 999px; + background: var(--accent-soft); + color: var(--accent-dark); + font-size: 0.72rem; + font-weight: 900; +} + +.compare-section .section-heading-wide a, +.compare-stack-section .section-heading-wide a { + color: var(--accent-dark); + font-weight: 800; + text-decoration: underline; + text-decoration-thickness: 0.08em; + text-underline-offset: 0.18em; +} + +.comparison-matrix table { + min-width: 980px; +} + +.comparison-matrix th:last-child, +.comparison-matrix td:last-child { + color: var(--ink-soft); + font-weight: inherit; + background: transparent; +} + +.comparison-matrix th:nth-child(2), +.comparison-matrix td:nth-child(2) { + color: var(--accent-dark); + font-weight: 850; + background: rgb(217 238 233 / 0.54); +} + +.comparison-matrix td:first-child { + color: var(--ink); + font-weight: 760; +} + +.differ-grid { + display: grid; + grid-template-columns: minmax(320px, 0.88fr) minmax(0, 1.12fr); + gap: 1rem; + align-items: stretch; +} + +.intersection-card, +.differ-list article { + border: 1px solid var(--line); + background: rgb(255 253 248 / 0.74); + box-shadow: 0 16px 50px rgb(35 29 21 / 0.06); +} + +.intersection-card { + border-color: var(--line-strong); + border-radius: var(--radius-lg); + padding: clamp(1.4rem, 3vw, 2rem); + background: + radial-gradient(circle at 18% 0%, rgb(103 215 202 / 0.2), transparent 18rem), + radial-gradient(circle at 100% 100%, rgb(37 99 235 / 0.1), transparent 16rem), + rgb(255 253 248 / 0.84); +} + +.intersection-card h3 { + margin: 1.2rem 0 0; + color: var(--ink); + font-size: clamp(2rem, 4vw, 3.35rem); + letter-spacing: -0.06em; + line-height: 1; +} + +.intersection-card p { + margin: 1.15rem 0 0; + color: var(--ink-soft); + font-size: 1.05rem; + line-height: 1.75; +} + +.intersection-pills { + display: flex; + flex-wrap: wrap; + gap: 0.55rem; + margin-top: 1.45rem; +} + +.intersection-pills span { + border: 1px solid rgb(31 111 104 / 0.18); + border-radius: 999px; + background: var(--accent-soft); + color: var(--accent-dark); + padding: 0.45rem 0.65rem; + font-size: 0.78rem; + font-weight: 800; +} + +.differ-list { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; +} + +.differ-list article { + min-height: 210px; + border-radius: var(--radius-md); + padding: 1.2rem; +} + +.differ-list article span { + display: block; + color: var(--accent-dark); + font-family: var(--mono); + font-size: 0.72rem; + font-weight: 750; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.differ-list article h3 { + margin: 1rem 0 0; + color: var(--ink); + font-size: 1.32rem; + letter-spacing: -0.04em; + line-height: 1.1; +} + +.differ-list article p { + margin: 0.85rem 0 0; + color: var(--muted); + line-height: 1.65; +} + +.one-liner-list { + display: grid; + gap: 0.75rem; +} + +.one-liner-list article { + display: grid; + grid-template-columns: minmax(180px, 0.34fr) minmax(0, 1fr); + gap: 1rem; + align-items: start; + padding: 1rem 1.1rem; + border: 1px solid var(--line); + border-radius: 18px; + background: rgb(255 253 248 / 0.72); + box-shadow: 0 12px 34px rgb(35 29 21 / 0.04); +} + +.one-liner-list strong { + color: var(--accent-dark); + font-family: var(--mono); + font-size: 0.86rem; +} + +.one-liner-list span { + color: var(--ink-soft); + line-height: 1.65; +} + +.compare-final-cta { + margin-top: 0; +} + @media (max-width: 980px) { .hero, .feature-split, @@ -1283,13 +1493,18 @@ td:last-child { grid-template-columns: repeat(2, minmax(0, 1fr)); } - .mobile-proof { + .mobile-proof, + .differ-grid { grid-template-columns: 1fr; } .mobile-shots { justify-content: center; } + + .intersection-card { + min-height: auto; + } } @media (max-width: 720px) { @@ -1358,7 +1573,8 @@ td:last-child { .contrast-grid, .access-grid, .awareness-grid, - .integration-grid { + .integration-grid, + .differ-list { grid-template-columns: 1fr; } @@ -1418,6 +1634,10 @@ td:last-child { color: var(--accent-dark); } + .one-liner-list article { + grid-template-columns: 1fr; + } + .pillar-card { min-height: auto; } diff --git a/website/favicon.ico b/website/favicon.ico Binary files differdeleted file mode 100644 index 2ba18484..00000000 --- a/website/favicon.ico +++ /dev/null diff --git a/website/index.html b/website/index.html index d6462ff2..877afe3d 100644 --- a/website/index.html +++ b/website/index.html @@ -39,8 +39,7 @@ /> <meta name="twitter:image:alt" content="Herdr — One terminal. The whole herd." /> - <link rel="icon" href="/favicon.ico" sizes="any" /> - <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon.png?v=14" /> <link rel="apple-touch-icon" href="/assets/logo.png" /> <link rel="preload" @@ -49,7 +48,7 @@ type="font/woff2" crossorigin /> - <link rel="stylesheet" href="/css/style.css?v=3f0e9b12" /> + <link rel="stylesheet" href="/css/style.css?v=compare1" /> </head> <body> <header class="site-header"> @@ -59,6 +58,7 @@ <span>herdr</span> </a> <div class="nav-links"> + <a href="/compare/">Compare</a> <a href="/docs/">Docs</a> <a href="/docs/quick-start/">Quick start</a> <a href="/docs/socket-api/">API</a> @@ -222,55 +222,68 @@ </section> <section class="section compare-section"> - <div class="section-heading"> - <p class="section-kicker">Positioning</p> - <h2>The terminal-native control layer.</h2> + <div class="section-heading-wide"> + <div> + <p class="section-kicker">Positioning</p> + <h2>tmux persistence, agent awareness, no terminal replacement.</h2> + </div> + <p> + tmux and Zellij own persistent terminal sessions. Desktop agent apps own dashboards, editors, or worktree flows. Herdr keeps the multiplexer inside your terminal and makes it agent-aware. + <a href="/compare/">See the full comparison →</a> + </p> </div> <div class="table-wrap"> <table> <thead> <tr> <th>Capability</th> - <th>tmux</th> - <th>GUI agent managers</th> + <th>tmux / Zellij</th> + <th>agent apps</th> + <th>worktree orchestrators</th> <th>Herdr</th> </tr> </thead> <tbody> <tr> - <td>Persistent sessions</td> + <td>Runs inside your terminal</td> <td>✓</td> <td>—</td> + <td>—</td> <td>✓</td> </tr> <tr> - <td>Remote SSH attach</td> + <td>Persistent PTY sessions</td> <td>✓</td> <td>limited</td> + <td>embedded</td> <td>✓</td> </tr> <tr> - <td>Real terminal panes</td> + <td>Remote SSH attach</td> <td>✓</td> - <td>—</td> + <td>limited</td> + <td>remote projects</td> <td>✓</td> </tr> <tr> - <td>Mouse-native TUI</td> + <td>Semantic agent state</td> <td>—</td> - <td>✓</td> + <td>partial</td> + <td>workspace status</td> <td>✓</td> </tr> <tr> - <td>Agent state awareness</td> + <td>Direct agent attach</td> + <td>—</td> + <td>—</td> <td>—</td> - <td>✓</td> <td>✓</td> </tr> <tr> <td>Agents can orchestrate it</td> - <td>—</td> - <td>limited</td> + <td>scriptable</td> + <td>partial</td> + <td>workflow-owned</td> <td>✓</td> </tr> </tbody> @@ -278,39 +291,45 @@ </div> <div class="compare-cards" aria-label="Mobile comparison"> <article> - <h3>Persistent sessions</h3> - <span>tmux <b>✓</b></span> - <span>apps <b>—</b></span> + <h3>Runs inside your terminal</h3> + <span>tmux/Zellij <b>✓</b></span> + <span>agent apps <b>—</b></span> + <span>worktree apps <b>—</b></span> <span class="herdr">Herdr <b>✓</b></span> </article> <article> - <h3>Remote SSH attach</h3> - <span>tmux <b>✓</b></span> - <span>apps <b>limited</b></span> + <h3>Persistent PTY sessions</h3> + <span>tmux/Zellij <b>✓</b></span> + <span>agent apps <b>limited</b></span> + <span>worktree apps <b>embedded</b></span> <span class="herdr">Herdr <b>✓</b></span> </article> <article> - <h3>Real terminal panes</h3> - <span>tmux <b>✓</b></span> - <span>apps <b>—</b></span> + <h3>Remote SSH attach</h3> + <span>tmux/Zellij <b>✓</b></span> + <span>agent apps <b>limited</b></span> + <span>worktree apps <b>remote projects</b></span> <span class="herdr">Herdr <b>✓</b></span> </article> <article> - <h3>Mouse-native TUI</h3> - <span>tmux <b>—</b></span> - <span>apps <b>✓</b></span> + <h3>Semantic agent state</h3> + <span>tmux/Zellij <b>—</b></span> + <span>agent apps <b>partial</b></span> + <span>worktree apps <b>workspace status</b></span> <span class="herdr">Herdr <b>✓</b></span> </article> <article> - <h3>Agent state awareness</h3> - <span>tmux <b>—</b></span> - <span>apps <b>✓</b></span> + <h3>Direct agent attach</h3> + <span>tmux/Zellij <b>—</b></span> + <span>agent apps <b>—</b></span> + <span>worktree apps <b>—</b></span> <span class="herdr">Herdr <b>✓</b></span> </article> <article> <h3>Agents can orchestrate it</h3> - <span>tmux <b>—</b></span> - <span>apps <b>limited</b></span> + <span>tmux/Zellij <b>scriptable</b></span> + <span>agent apps <b>partial</b></span> + <span>worktree apps <b>workflow-owned</b></span> <span class="herdr">Herdr <b>✓</b></span> </article> </div> @@ -492,7 +511,7 @@ $ herdr</code></pre> <div class="awareness-grid"> <article class="awareness-card"> <img - src="/assets/sidebar-workspaces.png" + src="/assets/sidebar-workspaces-v2.png" alt="Herdr workspace sidebar state" loading="lazy" /> @@ -504,7 +523,7 @@ $ herdr</code></pre> </article> <article class="awareness-card"> <img - src="/assets/sidebar-agents.png" + src="/assets/sidebar-agents-v2.png" alt="Herdr agent sidebar state" loading="lazy" /> @@ -571,6 +590,7 @@ $ herdr</code></pre> <span>herdr</span> </a> <div> + <a href="/compare/">Compare</a> <a href="/docs/">Docs</a> <a href="/docs/configuration/">Configuration</a> <a href="/docs/socket-api/">API</a> diff --git a/website/scripts/prepare-docs.mjs b/website/scripts/prepare-docs.mjs index 1cc2da42..4f31f739 100644 --- a/website/scripts/prepare-docs.mjs +++ b/website/scripts/prepare-docs.mjs @@ -1,4 +1,4 @@ -import { cp, mkdir } from 'node:fs/promises'; +import { cp, mkdir, rm } from 'node:fs/promises'; import { dirname, resolve } from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -9,6 +9,7 @@ const publicDir = resolve(repoRoot, 'website/public'); await preparePublicAssets(); async function preparePublicAssets() { + await rm(publicDir, { recursive: true, force: true }); await mkdir(publicDir, { recursive: true }); for (const file of [ @@ -16,7 +17,6 @@ async function preparePublicAssets() { 'latest.json', 'robots.txt', 'sitemap.xml', - 'favicon.ico', '_headers', '_redirects', ]) { diff --git a/website/src/pages/compare.astro b/website/src/pages/compare.astro new file mode 100644 index 00000000..9e61935f --- /dev/null +++ b/website/src/pages/compare.astro @@ -0,0 +1,265 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <title>Compare Herdr — terminal-native agent multiplexer</title> + <meta + name="description" + content="Compare Herdr with tmux, Zellij, cmux, Warp, Solo, Conductor, Emdash, and Superset. See where terminal multiplexers, agent terminals, process dashboards, and worktree orchestrators differ." + /> + <meta name="theme-color" content="#f7f3ea" /> + <link rel="canonical" href="https://herdr.dev/compare/" /> + + <meta property="og:type" content="website" /> + <meta property="og:site_name" content="Herdr" /> + <meta property="og:title" content="Compare Herdr — terminal-native agent multiplexer" /> + <meta + property="og:description" + content="Herdr combines tmux-style persistence, real terminal panes, agent state, direct attach, SSH workflows, and an API agents can drive." + /> + <meta property="og:url" content="https://herdr.dev/compare/" /> + <meta property="og:image" content="https://herdr.dev/assets/og-card-v3.png" /> + <meta property="og:image:width" content="1200" /> + <meta property="og:image:height" content="630" /> + <meta property="og:image:alt" content="Herdr — One terminal. The whole herd." /> + + <meta name="twitter:card" content="summary_large_image" /> + <meta name="twitter:title" content="Compare Herdr — terminal-native agent multiplexer" /> + <meta + name="twitter:description" + content="Compare Herdr with tmux, Zellij, cmux, Warp, Solo, Conductor, Emdash, and Superset." + /> + <meta name="twitter:image" content="https://herdr.dev/assets/og-card-v3.png" /> + <meta name="twitter:image:alt" content="Herdr — One terminal. The whole herd." /> + + <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon.png?v=14" /> + <link rel="apple-touch-icon" href="/assets/logo.png" /> + <link rel="preload" href="/assets/jbm.woff2" as="font" type="font/woff2" crossorigin /> + <link rel="stylesheet" href="/css/style.css?v=compare1" /> + </head> + <body> + <header class="site-header"> + <nav class="nav" aria-label="Primary navigation"> + <a class="brand" href="/" aria-label="Herdr home"> + <img class="brand-logo" src="/assets/logo.svg" alt="" /> + <span>herdr</span> + </a> + <div class="nav-links"> + <a href="/compare/" aria-current="page">Compare</a> + <a href="/docs/">Docs</a> + <a href="/docs/quick-start/">Quick start</a> + <a href="/docs/socket-api/">API</a> + <a href="https://github.com/ogulcancelik/herdr">GitHub</a> + </div> + <a class="nav-cta" href="/docs/install/">Install</a> + </nav> + </header> + + <main> + <section class="hero compare-hero"> + <div class="hero-copy"> + <p class="eyebrow"><span class="status-dot dot-done"></span>Compare Herdr</p> + <h1>The agent multiplexer that lives in your terminal.</h1> + <p class="hero-lede"> + Herdr gives coding agents the thing tmux gave terminal users: + persistent real panes, detach and reattach, remote access, and a + control surface. Then it adds agent state and an API the agents can use. + </p> + <div class="hero-actions"> + <a class="button button-primary" href="/docs/quick-start/">Quick start</a> + <a class="button button-secondary" href="#matrix">See the matrix</a> + </div> + </div> + <div class="compare-claim-card" aria-label="Herdr positioning summary"> + <p class="section-kicker">Herdr combines</p> + <h2>tmux persistence, agent awareness, no terminal replacement.</h2> + <ul class="compare-checks"> + <li>Runs inside your existing terminal</li> + <li>Owns persistent PTY sessions</li> + <li>Attaches locally, over SSH, or directly to one agent</li> + <li>Tracks blocked, working, done, and idle state</li> + <li>Exposes CLI and socket APIs agents can drive</li> + </ul> + </div> + </section> + + <section class="section compare-stack-section" id="matrix"> + <div class="section-heading-wide"> + <div> + <p class="section-kicker">The stack</p> + <h2>Pick the center of gravity.</h2> + </div> + <p> + The question is not whether a tool can run a terminal. Most can. + The question is whether it combines terminal-native persistence with + agent state and agent-controlled automation. + </p> + </div> + + <div class="table-wrap comparison-matrix"> + <table> + <thead> + <tr> + <th>Capability</th> + <th>Herdr</th> + <th>tmux / Zellij</th> + <th>cmux / Warp</th> + <th>Solo</th> + <th>Conductor / Emdash / Superset</th> + </tr> + </thead> + <tbody> + <tr> + <td>Runs inside your existing terminal</td> + <td>yes</td> + <td>yes</td> + <td>no, terminal app</td> + <td>no, desktop app</td> + <td>no, app workspace</td> + </tr> + <tr> + <td>Persistent PTY session runtime</td> + <td>yes</td> + <td>yes</td> + <td>session/app restore</td> + <td>managed processes</td> + <td>embedded terminals</td> + </tr> + <tr> + <td>Detach, reattach, and SSH in</td> + <td>yes</td> + <td>yes</td> + <td>partial</td> + <td>no</td> + <td>remote projects</td> + </tr> + <tr> + <td>Direct attach to one agent terminal</td> + <td>yes</td> + <td>no</td> + <td>no</td> + <td>no</td> + <td>no</td> + </tr> + <tr> + <td>Semantic agent state</td> + <td>blocked / working / done / idle</td> + <td>no</td> + <td>attention or native-agent status</td> + <td>process status</td> + <td>workspace status</td> + </tr> + <tr> + <td>Agent-shaped API</td> + <td>read, send, wait, split, attach</td> + <td>terminal scripting</td> + <td>app APIs</td> + <td>MCP for processes</td> + <td>workflow APIs</td> + </tr> + <tr> + <td>Git worktree and diff review flow</td> + <td>pairs with it</td> + <td>no</td> + <td>partial</td> + <td>no</td> + <td>yes</td> + </tr> + </tbody> + </table> + </div> + </section> + + <section class="section compare-categories-section"> + <div class="section-heading"> + <p class="section-kicker">How Herdr differs</p> + <h2>The intersection other tools miss.</h2> + </div> + <div class="differ-grid"> + <article class="intersection-card"> + <span class="card-index">Herdr</span> + <h3>Persistent terminal runtime, built for agents.</h3> + <p> + Herdr keeps real terminal panes alive like a multiplexer, but treats agents + as first-class runtime objects. You can scan state, jump to blocked work, + attach directly to one agent, and let agents read, send, split, and wait + through the CLI/socket API. + </p> + <div class="intersection-pills" aria-label="Herdr strengths"> + <span>existing terminal</span> + <span>persistent PTYs</span> + <span>SSH attach</span> + <span>direct agent attach</span> + <span>agent state</span> + <span>agent API</span> + </div> + </article> + <div class="differ-list"> + <article> + <span>tmux / Zellij</span> + <h3>Classic multiplexers stop at terminals.</h3> + <p>They own panes and persistence. They do not know which pane is blocked, working, done, or ready for an agent wait.</p> + </article> + <article> + <span>cmux / Warp</span> + <h3>Terminal apps replace the terminal.</h3> + <p>They can add polished desktop UX, but the workflow moves into their app. Herdr stays inside the terminal you already use.</p> + </article> + <article> + <span>Solo</span> + <h3>Dashboards supervise processes.</h3> + <p>Process health and auto-restart are useful, but Herdr is about persistent interactive agent panes, not dev-stack supervision.</p> + </article> + <article> + <span>Conductor / Emdash / Superset</span> + <h3>Worktree tools own review flow.</h3> + <p>They are for branch isolation, diffs, and PRs. Herdr is the live terminal layer those agents can run inside or alongside.</p> + </article> + </div> + </div> + </section> + + <section class="section compare-one-liners-section"> + <div class="section-heading"> + <p class="section-kicker">One-line comparisons</p> + <h2>Use this when deciding.</h2> + </div> + <div class="one-liner-list"> + <article><strong>Herdr vs tmux</strong><span>tmux persists terminals; Herdr persists agent workspaces and understands agent state.</span></article> + <article><strong>Herdr vs Zellij</strong><span>Zellij is a modern terminal workspace; Herdr is an agent multiplexer with state, waits, and orchestration.</span></article> + <article><strong>Herdr vs cmux</strong><span>cmux is a Mac terminal app for agents; Herdr is a terminal-native multiplexer that runs anywhere your terminal and SSH do.</span></article> + <article><strong>Herdr vs Warp</strong><span>Warp is an agentic development platform; Herdr is the local terminal control layer for your existing agents.</span></article> + <article><strong>Herdr vs Solo</strong><span>Solo manages your dev stack; Herdr manages persistent interactive agent panes.</span></article> + <article><strong>Herdr vs Conductor, Emdash, Superset</strong><span>They orchestrate isolated worktrees and review diffs; Herdr orchestrates live terminals and agent state.</span></article> + </div> + </section> + + <section class="final-cta compare-final-cta"> + <p class="section-kicker">Start with the multiplexer</p> + <h2>If your agents live in terminals, put the terminals in Herdr.</h2> + <p> + Install Herdr, run two agents, split a pane, then detach once. The difference is obvious when the agents keep running. + </p> + <div class="hero-actions center"> + <a class="button button-primary" href="/docs/install/">Install Herdr</a> + <a class="button button-secondary" href="/docs/quick-start/">Quick start</a> + </div> + </section> + </main> + + <footer class="footer"> + <a class="brand" href="/" aria-label="Herdr home"> + <img class="brand-logo" src="/assets/logo.svg" alt="" /> + <span>herdr</span> + </a> + <div> + <a href="/compare/">Compare</a> + <a href="/docs/">Docs</a> + <a href="/docs/configuration/">Configuration</a> + <a href="/docs/socket-api/">API</a> + <a href="https://github.com/ogulcancelik/herdr/releases">Releases</a> + </div> + </footer> + </body> +</html> |
