aboutsummaryrefslogtreecommitdiff
path: root/website
diff options
context:
space:
mode:
Diffstat (limited to 'website')
-rw-r--r--website/assets/favicon.pngbin1357 -> 2196 bytes
-rw-r--r--website/assets/sidebar-agents-v2.png (renamed from website/assets/sidebar-agents.png)bin27714 -> 27714 bytes
-rw-r--r--website/assets/sidebar-workspaces-v2.png (renamed from website/assets/sidebar-workspaces.png)bin18576 -> 18576 bytes
-rw-r--r--website/astro.config.mjs2
-rw-r--r--website/css/style.css224
-rw-r--r--website/favicon.icobin15086 -> 0 bytes
-rw-r--r--website/index.html94
-rw-r--r--website/scripts/prepare-docs.mjs4
-rw-r--r--website/src/pages/compare.astro265
9 files changed, 547 insertions, 42 deletions
diff --git a/website/assets/favicon.png b/website/assets/favicon.png
index a1d7a4eb..79404044 100644
--- a/website/assets/favicon.png
+++ b/website/assets/favicon.png
Binary files differ
diff --git a/website/assets/sidebar-agents.png b/website/assets/sidebar-agents-v2.png
index e858e334..e858e334 100644
--- a/website/assets/sidebar-agents.png
+++ b/website/assets/sidebar-agents-v2.png
Binary files differ
diff --git a/website/assets/sidebar-workspaces.png b/website/assets/sidebar-workspaces-v2.png
index e2ef0c3e..e2ef0c3e 100644
--- a/website/assets/sidebar-workspaces.png
+++ b/website/assets/sidebar-workspaces-v2.png
Binary files differ
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
deleted file mode 100644
index 2ba18484..00000000
--- a/website/favicon.ico
+++ /dev/null
Binary files differ
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>