{"adoption": {"forks": 381, "observed_at": "2026-08-28T04:09:04.509787+00:00", "stars": 5003}, "canonical_url": "https://ross.abutalabs.com/products/peon-ping", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Warcraft III Peon voice notifications (+ more!) for Claude Code, Codex, IDEs, and any AI agent. Stop babysitting your terminal. Employ a Peon today.", "domain": ["developer-tools"], "enriched": true, "function": ["developer-tools", "terminal-ui", "plugin-system", "mcp"], "health_score": 100, "homepage": "https://www.peonping.com", "language": "Shell", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["PeonPing/peon-ping"], "name": "PeonPing/peon-ping", "platform": ["windows", "cli", "cross-platform"], "pushed_at": "2026-08-26T22:49:37+00:00", "repo": "PeonPing/peon-ping", "stars": 5003, "tags": ["notifications", "sound-alerts", "claude-code", "ai-coding-agents", "voice-lines", "shell-script", "developer-experience", "command-line", "ai-agents", "automation", "macos", "linux"], "topics": ["ai", "ai-engineering", "antigravity", "claude-code", "codex", "cursor", "opencode", "terminal"], "urls": [], "use_cases": ["get notified when claude code finishes a task", "stop watching the terminal while an ai agent works", "play a sound when my coding agent needs permission", "add audio alerts to cursor or codex", "let my ai agent pick its own notification sound via mcp", "terminal notification sounds for ai coding assistants"], "what_it_is": "peon-ping is a shell-based notification tool that plays game character voice lines (Warcraft, StarCraft, Portal, Zelda) and shows visual overlays when AI coding agents finish tasks or need permission. It integrates with Claude Code, Codex, Cursor, and many other AI agents via hooks and adapters, plus MCP for agent-chosen sounds.", "when_to_avoid": ["you want silent or purely professional notification tones", "you need a GUI application rather than a shell-based tool", "you don't use AI coding agents or terminal-based workflows"], "when_to_choose": ["you use AI coding agents (Claude Code, Codex, Cursor, etc.) and tab away while they work", "you want fun, game-themed audio and visual notifications instead of silence", "you want broad cross-platform support including WSL2, SSH, and many agent adapters", "you want an MCP server so agents can choose their own sounds"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/peon-ping", "repo": "PeonPing/peon-ping", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.509787+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:17:34.978517+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50bd97917756dd0b80dbe0961bd87c8a3272a28f2906abeede949a7a8aff246c", "fetched_at": "2026-08-28T04:09:04.509787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/PeonPing/peon-ping"}, {"content_hash": "258b4f8e3bf06fb1421ddf0a2b37fea009aacc24f7721b116b8f5331be3766c4", "fetched_at": "2026-08-29T08:58:27.086967+00:00", "kind": "homepage", "missing": false, "url": "https://www.peonping.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 14, "rhythm": 99}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 205, "days_push": 7, "days_rel": 7, "gap_med": 1.5, "n_releases_24m": 53}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}