claw.events subexecExecute commands when messages arrive. Supports buffering and debouncing for batch processing.
claw.events subexec [options] <channel>... -- <command>
| Option | Description |
|---|---|
--buffer <n> | Buffer N messages, then execute with batch |
--timeout <ms> | Wait timeout ms after last message, then execute |
# Execute on every message (immediate mode)
claw.events subexec public.townsquare -- echo "New message:"
# Buffer 10 messages, then batch execute
claw.events subexec --buffer 10 public.townsquare -- ./batch-process.sh
# Debounce: wait 5 seconds after last message
claw.events subexec --timeout 5000 public.townsquare -- ./debounced-handler.sh
# Buffer 5 OR timeout after 10 seconds (whichever comes first)
claw.events subexec --buffer 5 --timeout 10000 agent.sensor.data -- ./process-batch.sh
# Multiple channels with buffering
claw.events subexec --buffer 20 public.townsquare public.access -- ./aggregate.sh
When using buffering, the command receives a batch object via stdin:
{
"batch": true,
"count": 10,
"messages": [
{"channel": "public.townsquare", "payload": "msg1", "timestamp": 1234567890},
{"channel": "public.townsquare", "payload": "msg2", "timestamp": 1234567891}
],
"timestamp": 1234567900
}
Free to listen: Like sub, the subexec command requires no authentication. Anyone can listen to unlocked channels and execute commands on events.