Skip to main content
PeonPing supports additional agentic IDEs through specialized adapters. Each has unique setup requirements.

Windsurf

Windsurf (Codeium IDE) supports custom hooks via hooks.json.

Setup

1

Install PeonPing

curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.sh | bash
2

Add hooks

User-level: ~/.codeium/windsurf/hooks.jsonWorkspace-level: .windsurf/hooks.json
{
  "hooks": {
    "post_cascade_response": [
      {
        "command": "bash ~/.claude/hooks/peon-ping/adapters/windsurf.sh post_cascade_response",
        "show_output": false
      }
    ],
    "pre_user_prompt": [
      {
        "command": "bash ~/.claude/hooks/peon-ping/adapters/windsurf.sh pre_user_prompt",
        "show_output": false
      }
    ],
    "post_write_code": [
      {
        "command": "bash ~/.claude/hooks/peon-ping/adapters/windsurf.sh post_write_code",
        "show_output": false
      }
    ],
    "post_run_command": [
      {
        "command": "bash ~/.claude/hooks/peon-ping/adapters/windsurf.sh post_run_command",
        "show_output": false
      }
    ]
  }
}

Event Mapping

Windsurf HookCESP CategoryTrigger
pre_user_prompt (first)session.startFirst prompt in session
pre_user_prompt (subsequent)task.acknowledgeSubsequent prompts
post_cascade_responsetask.completeAgent finishes Cascade turn
post_write_codetask.completeCode write completes
post_run_commandtask.completeCommand execution completes

Kiro CLI

Kiro CLI (Amazon) has a hook system nearly identical to Claude Code.

Setup

1

Install PeonPing

curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.sh | bash
2

Create ~/.kiro/agents/peon-ping.json

{
  "hooks": {
    "agentSpawn": [
      {
        "command": "bash ~/.claude/hooks/peon-ping/adapters/kiro.sh"
      }
    ],
    "userPromptSubmit": [
      {
        "command": "bash ~/.claude/hooks/peon-ping/adapters/kiro.sh"
      }
    ],
    "stop": [
      {
        "command": "bash ~/.claude/hooks/peon-ping/adapters/kiro.sh"
      }
    ]
  }
}

Event Mapping

Kiro EventCESP CategoryTrigger
agentSpawnsession.startAgent session starts
userPromptSubmittask.acknowledgeUser submits prompt
stoptask.completeAgent stops
preToolUse and postToolUse are intentionally excluded — they fire on every tool call and would be extremely noisy.

Kimi Code CLI

Kimi Code (MoonshotAI) writes Wire Mode events to ~/.kimi/sessions/. PeonPing watches these files as a background daemon.

Setup

1

Install PeonPing

curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.sh | bash
2

Install filesystem watcher

macOS:
brew install fswatch
Linux:
sudo apt install inotify-tools
3

Start the daemon

bash ~/.claude/hooks/peon-ping/adapters/kimi.sh --install
The adapter starts in the background and watches ~/.kimi/sessions/.

Event Mapping

Kimi Wire EventCESP CategoryTrigger
New session + TurnBeginsession.startFirst turn in session
TurnBegin (subsequent)task.acknowledgeSubsequent turns
TurnEndtask.completeAgent finishes turn
CompactionBeginresource.limitContext compaction (token limit)
SubagentEvent → TurnBeginSubagent trackingSub-agent spawned

Daemon Commands

bash ~/.claude/hooks/peon-ping/adapters/kimi.sh --status     # Check status
bash ~/.claude/hooks/peon-ping/adapters/kimi.sh --uninstall  # Stop daemon

/clear Detection

Kimi Code emits TurnEnd for the old session and immediately creates a new one when you run /clear. The adapter suppresses the old session’s TurnEnd within a 5-second grace window.

Google Antigravity

Antigravity stores conversations as protobuf files (.pb) in ~/.gemini/antigravity/conversations/. PeonPing watches these files.

Setup

1

Install PeonPing

curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.sh | bash
2

Install filesystem watcher

macOS:
brew install fswatch
Linux:
sudo apt install inotify-tools
3

Start the adapter

Foreground:
bash ~/.claude/hooks/peon-ping/adapters/antigravity.sh
Background:
bash ~/.claude/hooks/peon-ping/adapters/antigravity.sh &

Event Mapping

Antigravity EventCESP CategoryTrigger
New .pb filesession.startNew conversation
File idle 5stask.completeAgent stopped updating

Configuration

Environment variables:
VariableDefaultDescription
ANTIGRAVITY_DIR~/.gemini/antigravityAntigravity data directory
ANTIGRAVITY_CONVERSATIONS_DIR$ANTIGRAVITY_DIR/conversationsConversations directory
ANTIGRAVITY_IDLE_SECONDS5Idle threshold for Stop events
ANTIGRAVITY_STOP_COOLDOWN10Cooldown between Stop events

OpenClaw

OpenClaw is a gateway framework for AI agents. The adapter accepts CESP category names or Claude Code hook events.

Setup

1

Install PeonPing

curl -fsSL https://raw.githubusercontent.com/PeonPing/peon-ping/main/install.sh | bash
2

Call from your OpenClaw skill

bash ~/.claude/hooks/peon-ping/adapters/openclaw.sh <event>

Event Names

Core CESP categories:
bash openclaw.sh session.start
bash openclaw.sh task.complete
bash openclaw.sh task.error
bash openclaw.sh input.required
bash openclaw.sh task.acknowledge
bash openclaw.sh resource.limit
Aliases:
bash openclaw.sh greeting       # → session.start
bash openclaw.sh done           # → task.complete
bash openclaw.sh error          # → task.error
bash openclaw.sh permission     # → input.required
bash openclaw.sh ratelimit      # → resource.limit
Raw Claude Code events:
bash openclaw.sh SessionStart
bash openclaw.sh Stop
bash openclaw.sh Notification
bash openclaw.sh PostToolUseFailure

Example OpenClaw Skill

#!/bin/bash
# play.sh - OpenClaw skill for PeonPing

OPENCLAW_EVENT="${1:-task.complete}"
bash ~/.claude/hooks/peon-ping/adapters/openclaw.sh "$OPENCLAW_EVENT"
Call from your agent logic:
# Agent starts
bash play.sh session.start

# Agent finishes task
bash play.sh task.complete

# Rate limit hit
bash play.sh ratelimit

Windows Support

All adapters have native PowerShell (.ps1) versions:
  • windsurf.ps1
  • kiro.ps1
  • kimi.ps1 (uses .NET FileSystemWatcher)
  • antigravity.ps1 (uses .NET FileSystemWatcher)
  • openclaw.ps1
The Windows installer (install.ps1) copies them to ~/.claude/hooks/peon-ping/adapters/.

Build docs developers (and LLMs) love