From fd89da606eed8c539181e0ba7a144271adebaba5 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 7 Apr 2026 13:16:59 +0300 Subject: feat: add website update manifest --- website/_headers | 19 + website/_redirects | 1 + website/assets/demo.mp4 | Bin 0 -> 3679439 bytes website/assets/hero-screenshot.png | Bin 0 -> 241383 bytes website/assets/logo.png | Bin 0 -> 120644 bytes website/assets/og-card.png | Bin 0 -> 139994 bytes website/assets/sidebar-agents.png | Bin 0 -> 5900 bytes website/assets/sidebar-workspaces.png | Bin 0 -> 5344 bytes website/index.html | 978 ++++++++++++++++++++++++++++++++++ website/install.sh | 88 +++ website/latest.json | 10 + website/robots.txt | 4 + website/sitemap.xml | 8 + 13 files changed, 1108 insertions(+) create mode 100644 website/_headers create mode 100644 website/_redirects create mode 100644 website/assets/demo.mp4 create mode 100644 website/assets/hero-screenshot.png create mode 100644 website/assets/logo.png create mode 100644 website/assets/og-card.png create mode 100644 website/assets/sidebar-agents.png create mode 100644 website/assets/sidebar-workspaces.png create mode 100644 website/index.html create mode 100755 website/install.sh create mode 100644 website/latest.json create mode 100644 website/robots.txt create mode 100644 website/sitemap.xml (limited to 'website') diff --git a/website/_headers b/website/_headers new file mode 100644 index 00000000..e43c165c --- /dev/null +++ b/website/_headers @@ -0,0 +1,19 @@ +/* + X-Frame-Options: SAMEORIGIN + X-Content-Type-Options: nosniff + Referrer-Policy: strict-origin-when-cross-origin + +/assets/* + Cache-Control: public, max-age=604800, immutable + +/install.sh + Content-Type: text/plain + Content-Disposition: inline + +/install + Content-Type: text/plain + Content-Disposition: inline + +/latest.json + Content-Type: application/json + Cache-Control: public, max-age=300 diff --git a/website/_redirects b/website/_redirects new file mode 100644 index 00000000..2f13d2c1 --- /dev/null +++ b/website/_redirects @@ -0,0 +1 @@ +/install /install.sh 200 diff --git a/website/assets/demo.mp4 b/website/assets/demo.mp4 new file mode 100644 index 00000000..665fcb2f Binary files /dev/null and b/website/assets/demo.mp4 differ diff --git a/website/assets/hero-screenshot.png b/website/assets/hero-screenshot.png new file mode 100644 index 00000000..f1c09c1a Binary files /dev/null and b/website/assets/hero-screenshot.png differ diff --git a/website/assets/logo.png b/website/assets/logo.png new file mode 100644 index 00000000..9c2e60c1 Binary files /dev/null and b/website/assets/logo.png differ diff --git a/website/assets/og-card.png b/website/assets/og-card.png new file mode 100644 index 00000000..85d4e602 Binary files /dev/null and b/website/assets/og-card.png differ diff --git a/website/assets/sidebar-agents.png b/website/assets/sidebar-agents.png new file mode 100644 index 00000000..1d5c5041 Binary files /dev/null and b/website/assets/sidebar-agents.png differ diff --git a/website/assets/sidebar-workspaces.png b/website/assets/sidebar-workspaces.png new file mode 100644 index 00000000..a8160f1e Binary files /dev/null and b/website/assets/sidebar-workspaces.png differ diff --git a/website/index.html b/website/index.html new file mode 100644 index 00000000..e064f447 --- /dev/null +++ b/website/index.html @@ -0,0 +1,978 @@ + + + + + + herdr — herd your agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

herdr

+

herd your agents.

+
+

a terminal-native agent multiplexer. workspaces, tiled panes, automatic agent detection, and a socket API. all inside your existing terminal. no electron, no web dashboard, no gui window.

+

a shared control surface for you and your agents.

+
+
+ $ + curl -fsSL https://herdr.dev/install.sh | sh + +
+ +
+ + +
+
+ +
+
+ +
+ + +
+
+

for you

+

supervise, triage, act

+
    +
  • one place to see all running agents across workspaces
  • +
  • sidebar rolls up each workspace to its most urgent state
  • +
  • switch contexts instantly — click or keyboard
  • +
  • sound alerts and toast notifications for background events
  • +
  • mouse-native: click panes, drag borders, select text to copy
  • +
  • session persistence — close and reopen, everything restores
  • +
  • 9 built-in themes, full color token overrides
  • +
+
+
+

for your agents

+

orchestrate, spawn, wait

+
    +
  • create workspaces and split panes programmatically
  • +
  • spawn other agents in sibling panes
  • +
  • read output from any pane in the session
  • +
  • send text and keys into other panes
  • +
  • wait for output patterns or agent state changes
  • +
  • subscribe to real-time events over the socket
  • +
  • ship an agent skill or use the socket API directly
  • +
+
+
+ +
+ + +
+
+

ambient awareness

+

the sidebar is split into two layers. scan the workspace list for the most urgent signal, then drill into the agents causing it.

+
+
+
+
+ herdr sidebar workspace list +
+
+

workspaces

+

each workspace shows one aggregate dot — the most urgent state across all its agents. yellow means something is working. you scan the full list in a glance.

+
+
+
+
+ herdr sidebar agent list +
+
+

agents

+

the bottom section shows which specific agents are running in the selected workspace, with their individual state. pi is working, droid is idle.

+
+
+
+
+
blocked
+
done
+
working
+
idle
+
+
+ +
+ + +
+

how it works

+
+
+
01
+

install and launch

+

one binary, no dependencies. run herdr in your terminal. onboarding takes 10 seconds.

+
+
+
02
+

create workspaces

+

press n to create a workspace. it opens as a terminal context, labels itself from git repo or folder name.

+
+
+
03
+

launch agents

+

start your agents in panes like you normally would. herdr detects them automatically — no hooks, no config.

+
+
+
+ +
+ + +
+

supported agents

+

herdr detects agents by reading foreground process and terminal output patterns. zero config required.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
agentidle / doneworkingblocked
pi✓✓partial
claude code✓✓✓
codex✓✓✓
droid✓✓✓
amp✓✓partial
opencode✓✓✓
gemini clidetected, not fully tested
cursor agentdetected, not fully tested
clinedetected, not fully tested
+
+
+ +
+ + +
+
+
+

socket api

+

agents can use herdr too

+

herdr exposes a local unix socket that agents can talk to directly. create workspaces, split panes, spawn agents, read output, wait for state changes.

+

the same surface is available as CLI commands (herdr workspace, herdr pane, herdr wait) and as a reusable agent skill.

+ +
+
+
# create a workspace
+herdr workspace create --root ~/project
+
+# split a pane and run a command
+herdr pane split --workspace 1
+herdr pane send --pane 1-2 --text "npm test"
+
+# wait for an agent to finish
+herdr wait --pane 1-1 --state idle
+
+# read pane output
+herdr pane read --pane 1-2 --lines 50
+
+
+
+ +
+ + + + + + + diff --git a/website/install.sh b/website/install.sh new file mode 100755 index 00000000..e705be08 --- /dev/null +++ b/website/install.sh @@ -0,0 +1,88 @@ +#!/bin/sh +set -eu + +REPO="ogulcancelik/herdr" +BIN="herdr" +INSTALL_DIR="${HERDR_INSTALL_DIR:-$HOME/.local/bin}" + +main() { + echo "" + echo " ,ww" + echo " wWWWWWWW_) herdr installer" + echo " \`WWWWWW' herdr.dev" + echo " II II" + echo "" + + # detect platform + OS="$(uname -s)" + case "$OS" in + Linux) os="linux" ;; + Darwin) os="macos" ;; + *) err "unsupported OS: $OS" ;; + esac + + ARCH="$(uname -m)" + case "$ARCH" in + x86_64|amd64) arch="x86_64" ;; + aarch64|arm64) arch="aarch64" ;; + *) err "unsupported architecture: $ARCH" ;; + esac + + log "detected ${os}/${arch}" + + # check dependencies + need curl + + # download the latest binary directly via GitHub's stable redirect. + # this avoids the releases API, which can return transient 403s. + ASSET="${BIN}-${os}-${arch}" + URL="https://github.com/${REPO}/releases/latest/download/${ASSET}" + + log "downloading latest release..." + TMP="$(mktemp -d)" + trap 'rm -rf "$TMP"' EXIT + + if ! curl -fsSL --retry 3 --connect-timeout 10 --max-time 120 "$URL" -o "${TMP}/${BIN}"; then + err "download failed. check https://github.com/${REPO}/releases" + fi + + # install + mkdir -p "$INSTALL_DIR" + mv "${TMP}/${BIN}" "${INSTALL_DIR}/${BIN}" + chmod +x "${INSTALL_DIR}/${BIN}" + + log "installed ${BIN} to ${INSTALL_DIR}/${BIN}" + + # check PATH + case ":${PATH}:" in + *":${INSTALL_DIR}:"*) ;; + *) + echo "" + warn "${INSTALL_DIR} is not in your PATH" + echo " add it to your shell config:" + echo "" + echo " export PATH=\"${INSTALL_DIR}:\$PATH\"" + echo "" + ;; + esac + + # verify + if command -v "$BIN" >/dev/null 2>&1; then + echo "" + log "ready. run 'herdr' to get started." + fi + + echo "" +} + +log() { echo " \033[32m>\033[0m $1"; } +warn() { echo " \033[33m!\033[0m $1"; } +err() { echo " \033[31m✗\033[0m $1" >&2; exit 1; } + +need() { + if ! command -v "$1" >/dev/null 2>&1; then + err "requires '$1' — please install it first" + fi +} + +main "$@" diff --git a/website/latest.json b/website/latest.json new file mode 100644 index 00000000..8113b662 --- /dev/null +++ b/website/latest.json @@ -0,0 +1,10 @@ +{ + "version": "0.4.2", + "notes_url": "https://github.com/ogulcancelik/herdr/releases/tag/v0.4.2", + "assets": { + "linux-x86_64": "https://github.com/ogulcancelik/herdr/releases/download/v0.4.2/herdr-linux-x86_64", + "linux-aarch64": "https://github.com/ogulcancelik/herdr/releases/download/v0.4.2/herdr-linux-aarch64", + "macos-x86_64": "https://github.com/ogulcancelik/herdr/releases/download/v0.4.2/herdr-macos-x86_64", + "macos-aarch64": "https://github.com/ogulcancelik/herdr/releases/download/v0.4.2/herdr-macos-aarch64" + } +} diff --git a/website/robots.txt b/website/robots.txt new file mode 100644 index 00000000..37e7285b --- /dev/null +++ b/website/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://herdr.dev/sitemap.xml diff --git a/website/sitemap.xml b/website/sitemap.xml new file mode 100644 index 00000000..99a706d5 --- /dev/null +++ b/website/sitemap.xml @@ -0,0 +1,8 @@ + + + + https://herdr.dev/ + 2026-03-27 + 1.0 + + -- cgit v1.2.3