Marketplace Landscape
A census of the herdr plugin marketplace as of October 2026: how to measure it, what archetypes exist, who the exemplars are, and what is still unclaimed. Use this page before naming or scoping a new plugin.
The census method
The marketplace is a public GitHub topic plus an auto-generated index. Everything measurable comes from one URL:
curl -s https://assets.herdr.dev/plugins/index.json -o index.json
jq '.repos | length' index.json # repo count
The index lists each repo (with stars) and its manifests (id, name, path). Snapshot from 2026-10-02: 1,437 repos, 1,481 plugins. The index refreshes about every 30 minutes, so any count is a point-in-time census; re-pull before drawing conclusions or naming anything.
Archetype map
| Archetype | Count (approx) | Exemplars | Stack |
|---|---|---|---|
| Notifications | 15+ | agent-telegram-notify (official), multi-channel webhook-notify, 2-way telegram bridges | Node/bun or Rust + ureq |
| Naming/renaming | 6+ | herdr-automatic-rename (qu8n), pane-topic-sync (danbuhler) | bash+jq / bun |
| Pickers/launchers | 4 | collie (AltanS), thin-launcher style | TS/bun |
| Monitoring/remote | 3+ | collie (mobile web UI), usage dashboards | TS/bun, Rust |
| Usage/cost | 2 | herdr-agent-usage (levi-qiao, 146 stars) | Rust + rusqlite |
| Worktrees | 3 | layoutBootstrap-style helpers | mixed |
| Session management | 3 | review/save tools | mixed |
| Review flows | 2 | herdr-reviewr (persiyanov) | Rust |
| Layouts | 4 | dev-layout-bootstrap (official) | shell/JSON |
| File/TUI viewers | 4 | herdr-file-viewer (smarzban), zoetrope (furkankly), terminal-browser (zenbu-labs, top-starred) | Rust + ratatui |
Id conventions
Ids in the index follow two styles:
| Style | Example | Collisions in index |
|---|---|---|
| Username-prefixed | dan.pane-topic-sync, herdr.collie, furkankly.zoetrope, examples.agent-telegram-notify | 0 |
| Flat generic | herdr-agent-usage, herdr-automatic-rename, herdr-file-viewer | All 29 duplicate ids are flat names |
The lesson is unambiguous: prefixes are collision-free by construction, generic names collide. Marketplace tolerance for duplicate ids across repos does not save users: installing a colliding id replaces whatever occupied it (see core-runtime-internals.md). The lab convention is peteretelej.<name> (lab-conventions.md).
Name collisions are a separate, softer rule: ids may repeat safely across machines, but two plugins with the same display name confuse marketplace browsing. Grep the index for your display name too.
Distribution patterns observed
| Pattern | Who | Notes |
|---|---|---|
| Monorepo, per-subdir manifests | official cookbook, zoetrope (herdr-plugin/ subdir) | One repo card, N plugins |
[[build]] cargo build --release | agent-usage, most Rust plugins | Users need a Rust toolchain |
| Prebuilt-binary fetch-or-build | herdr-file-viewer | Downloads a SHA-256-verified release binary; falls back to cargo |
| Versioned separately from the app | zoetrope | Manifest version tracks the launcher scripts, not the binary |
| Thin launcher + frozen commands | collie | Manifest strings never change (ADR 0006) |
Unclaimed niches (as of this census)
- Prompt broadcast to N agents: one prompt fanned out to every agent in a workspace.
- Command watch: run a shell command on an event and surface output.
- Daily digest: batched summary of agent activity (one message per day, not per event).
- Pane logging: capture pane output to files for later analysis.
The notify space is the opposite: crowded, with quality gaps (message quality, per-workspace routing, secret handling) documented in notify-external-services.md.