|
6 | 6 |       |
7 | 7 |  |
8 | 8 |
|
9 | | -                |
| 9 | +                     |
10 | 10 |
|
11 | 11 | **Game character voice lines + visual overlay notifications when your AI coding agent needs attention — or let the agent pick its own sound via MCP.** |
12 | 12 |
|
13 | | -AI coding agents don't notify you when they finish or need permission. You tab away, lose focus, and waste 15 minutes getting back into flow. peon-ping fixes this with voice lines and bold on-screen banners from Warcraft, StarCraft, Portal, Zelda, and more — works with **Claude Code**, **Amp**, **GitHub Copilot**, **Codex**, **Cursor**, **OpenCode**, **Kilo CLI**, **Kiro**, **Kimi Code**, **Windsurf**, **Google Antigravity**, **Rovo Dev CLI**, **DeepAgents**, and any MCP client. |
| 13 | +AI coding agents don't notify you when they finish or need permission. You tab away, lose focus, and waste 15 minutes getting back into flow. peon-ping fixes this with voice lines and bold on-screen banners from Warcraft, StarCraft, Portal, Zelda, and more — works with **Claude Code**, **Amp**, **GitHub Copilot**, **Codex**, **Cursor**, **OpenCode**, **Kilo CLI**, **Kiro**, **Kimi Code**, **Windsurf**, **Google Antigravity**, **Rovo Dev CLI**, **DeepAgents**, **Qwen Code**, **iFlow CLI**, **Trae**, **Kiro IDE**, **ECA**, and any MCP client. |
14 | 14 |
|
15 | 15 | **See it in action** → [peonping.com](https://peonping.com/) |
16 | 16 |
|
@@ -733,8 +733,13 @@ peon-ping works with any agentic IDE that supports hooks. Adapters translate IDE |
733 | 733 | | **Rovo Dev CLI** | Adapter | Auto-registered by `install.sh` if `~/.rovodev` exists, or add hooks to `~/.rovodev/config.yml` manually ([setup](#rovo-dev-cli-setup)) | |
734 | 734 | | **DeepAgents** | Adapter | `bash adapters/deepagents.sh` / `powershell adapters/deepagents.ps1` ([setup](#deepagents-setup)) | |
735 | 735 | | **oh-my-pi (omp)** | Adapter | `bash adapters/omp.sh` ([setup](#oh-my-pi-omp-setup)) | |
| 736 | +| **Qwen Code** | Adapter | Add hooks pointing to `adapters/qwen.sh` (or `.ps1` on Windows) ([setup](#qwen-code-setup)) | |
| 737 | +| **iFlow CLI** | Adapter | Add hooks pointing to `adapters/iflow.sh` (or `.ps1`) ([setup](#iflow-cli-setup)) | |
| 738 | +| **Trae** | Adapter | Filesystem watcher: `bash adapters/trae.sh &` / `powershell adapters/trae.ps1 -Install` ([setup](#trae-setup)) | |
| 739 | +| **Kiro IDE** | Adapter | Agent hooks in `.kiro/hooks/*.kiro.hook` calling `adapters/kiro-ide.sh` (or `.ps1`) ([setup](#kiro-ide-setup)) | |
| 740 | +| **ECA** | Adapter | Add a shell hook pointing to `adapters/eca.sh` (or `.ps1`) ([setup](#eca-setup)) | |
736 | 741 |
|
737 | | -> **Windows:** All adapters have native PowerShell (`.ps1`) versions. The Windows installer (`install.ps1`) copies them to `~/.claude/hooks/peon-ping/adapters/`. Filesystem watchers (Amp, Antigravity, Kimi) use .NET `FileSystemWatcher` instead of fswatch/inotifywait — no extra dependencies needed. |
| 742 | +> **Windows:** All adapters have native PowerShell (`.ps1`) versions. The Windows installer (`install.ps1`) copies them to `~/.claude/hooks/peon-ping/adapters/`. Filesystem watchers (Amp, Antigravity, Kimi, Trae) use .NET `FileSystemWatcher` instead of fswatch/inotifywait — no extra dependencies needed. |
738 | 743 |
|
739 | 744 | ### OpenAI Codex setup |
740 | 745 |
|
@@ -1183,6 +1188,110 @@ The installer copies `peon-ping.ts` and `package.json` to `~/.omp/agent/extensio |
1183 | 1188 | curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/adapters/omp.sh | bash -s -- --uninstall |
1184 | 1189 | ``` |
1185 | 1190 |
|
| 1191 | +### Qwen Code setup |
| 1192 | + |
| 1193 | +A thin passthrough adapter for [Qwen Code](https://github.com/QwenLM/qwen-code) (Alibaba). Qwen Code ships a Claude-Code-style hook system — events are piped as JSON on stdin using the same PascalCase CESP names peon-ping expects — so this adapter simply re-tags the session id with a `qwen-` prefix and drops the noisy per-tool-call events. |
| 1194 | + |
| 1195 | +Add to `~/.qwen/settings.json`: |
| 1196 | + |
| 1197 | +```json |
| 1198 | +{ |
| 1199 | + "hooks": { |
| 1200 | + "SessionStart": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/qwen.sh" }] }], |
| 1201 | + "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/qwen.sh" }] }], |
| 1202 | + "Stop": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/qwen.sh" }] }], |
| 1203 | + "Notification": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/qwen.sh" }] }], |
| 1204 | + "PostToolUseFailure": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/qwen.sh" }] }], |
| 1205 | + "SessionEnd": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/qwen.sh" }] }] |
| 1206 | + } |
| 1207 | +} |
| 1208 | +``` |
| 1209 | + |
| 1210 | +On Windows, point the command at `qwen.ps1` via `powershell -NoProfile -File %USERPROFILE%\.claude\hooks\peon-ping\adapters\qwen.ps1`. |
| 1211 | + |
| 1212 | +### iFlow CLI setup |
| 1213 | + |
| 1214 | +A passthrough adapter for [iFlow CLI](https://cli.iflow.cn) (iflow-ai). iFlow ships a Claude-Code-style hook system (PascalCase events on stdin); this adapter forwards the meaningful lifecycle events with an `iflow-` session prefix and maps a failed `PostToolUse` to `PostToolUseFailure`. |
| 1215 | + |
| 1216 | +Add to `~/.iflow/settings.json` (or per-project `./.iflow/settings.json`): |
| 1217 | + |
| 1218 | +```json |
| 1219 | +{ |
| 1220 | + "hooks": { |
| 1221 | + "SessionStart": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/iflow.sh" }] }], |
| 1222 | + "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/iflow.sh" }] }], |
| 1223 | + "Stop": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/iflow.sh" }] }], |
| 1224 | + "Notification": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/iflow.sh" }] }], |
| 1225 | + "PostToolUse": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/iflow.sh" }] }], |
| 1226 | + "SessionEnd": [{ "hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/peon-ping/adapters/iflow.sh" }] }] |
| 1227 | + } |
| 1228 | +} |
| 1229 | +``` |
| 1230 | + |
| 1231 | +### Trae setup |
| 1232 | + |
| 1233 | +A filesystem-watcher adapter for [Trae](https://trae.ai) (ByteDance). Trae is a VS Code-derived AI IDE with no synchronous shell-hook API, so peon-ping uses the same watcher approach as Amp and Antigravity: a new session file means `SessionStart`, and an idle timer (the session file stops updating) means `Stop`. |
| 1234 | + |
| 1235 | +```bash |
| 1236 | +# Foreground |
| 1237 | +bash ~/.claude/hooks/peon-ping/adapters/trae.sh |
| 1238 | +# Background |
| 1239 | +bash ~/.claude/hooks/peon-ping/adapters/trae.sh & |
| 1240 | +``` |
| 1241 | + |
| 1242 | +On Windows: `powershell -File adapters\trae.ps1 -Install` registers a background watcher (`-Status` / `-Uninstall` to manage it). |
| 1243 | + |
| 1244 | +Trae's on-disk session layout varies by platform/version and isn't publicly documented, so the watched paths are environment-overridable: |
| 1245 | + |
| 1246 | +| Variable | Default | |
| 1247 | +|---|---| |
| 1248 | +| `TRAE_DATA_DIR` | `~/.trae` | |
| 1249 | +| `TRAE_SESSIONS_DIR` | `$TRAE_DATA_DIR/sessions` | |
| 1250 | +| `TRAE_SESSION_GLOB` | `*.json` | |
| 1251 | + |
| 1252 | +Requires `fswatch` (macOS: `brew install fswatch`) or `inotifywait` (Linux: `apt install inotify-tools`). Windows uses .NET `FileSystemWatcher` — no extra dependency. |
| 1253 | + |
| 1254 | +### Kiro IDE setup |
| 1255 | + |
| 1256 | +A hook adapter for **Kiro IDE** (Amazon) — distinct from the [Kiro CLI](#kiro-setup) (`adapters/kiro.sh`). The IDE's Agent Hooks are `.kiro/hooks/*.kiro.hook` JSON files; their `then.type: runCommand` action runs a shell command with **no stdin JSON**, passing the triggering event name to the adapter as an argv argument. |
| 1257 | + |
| 1258 | +Create one hook file per event, e.g. `.kiro/hooks/peon-ping-stop.kiro.hook`: |
| 1259 | + |
| 1260 | +```json |
| 1261 | +{ |
| 1262 | + "version": "1.0.0", |
| 1263 | + "enabled": true, |
| 1264 | + "name": "peon-ping-stop", |
| 1265 | + "when": { "type": "agentStop" }, |
| 1266 | + "then": { |
| 1267 | + "type": "runCommand", |
| 1268 | + "command": "bash ~/.claude/hooks/peon-ping/adapters/kiro-ide.sh agentStop" |
| 1269 | + } |
| 1270 | +} |
| 1271 | +``` |
| 1272 | + |
| 1273 | +Repeat with `when.type` = `promptSubmit` (→ `UserPromptSubmit`), `preToolUse` (→ permission prompt), or `sessionStart` (→ `SessionStart`), each passing the matching event name as the command argument. `postToolUse` and file/user-triggered hooks carry no peon-relevant signal and are ignored. On Windows, point the command at `kiro-ide.ps1` via `powershell -NoProfile -File`. |
| 1274 | + |
| 1275 | +### ECA setup |
| 1276 | + |
| 1277 | +A shell-hook adapter for [ECA](https://eca.dev) (Editor Code Assistant), an editor-agnostic LLM-agent integration. ECA pipes JSON on stdin (snake_case top-level keys) and also passes the hook type as an argv argument; this adapter maps ECA's events to CESP with a stable `eca-` session prefix derived from the ECA `db_cache_path`. Originally contributed in PeonPing/peon-ping#261, vendored first-party here. |
| 1278 | + |
| 1279 | +Add a shell hook to your ECA config pointing at the adapter, one per event: |
| 1280 | + |
| 1281 | +```json |
| 1282 | +{ |
| 1283 | + "hooks": { |
| 1284 | + "sessionStart": [{ "actions": [{ "type": "shell", "command": "bash ~/.claude/hooks/peon-ping/adapters/eca.sh sessionStart" }] }], |
| 1285 | + "preRequest": [{ "actions": [{ "type": "shell", "command": "bash ~/.claude/hooks/peon-ping/adapters/eca.sh preRequest" }] }], |
| 1286 | + "postRequest": [{ "actions": [{ "type": "shell", "command": "bash ~/.claude/hooks/peon-ping/adapters/eca.sh postRequest" }] }], |
| 1287 | + "preToolCall": [{ "actions": [{ "type": "shell", "command": "bash ~/.claude/hooks/peon-ping/adapters/eca.sh preToolCall" }] }], |
| 1288 | + "sessionEnd": [{ "actions": [{ "type": "shell", "command": "bash ~/.claude/hooks/peon-ping/adapters/eca.sh sessionEnd" }] }] |
| 1289 | + } |
| 1290 | +} |
| 1291 | +``` |
| 1292 | + |
| 1293 | +**Event mapping:** `sessionStart`/`chatStart` → `SessionStart`, `preRequest` → `UserPromptSubmit`, `postRequest`/`subagentPostRequest`/`postToolCall` → `Stop`, `preToolCall` → permission prompt, `sessionEnd` → `SessionEnd`. |
| 1294 | + |
1186 | 1295 | ## Remote development (SSH / Devcontainers / Codespaces) |
1187 | 1296 |
|
1188 | 1297 | Coding on a remote server or inside a container? peon-ping auto-detects SSH sessions, devcontainers, and Codespaces, then routes audio and notifications through a lightweight relay running on your local machine. |
|
0 commit comments