notifications-demo.1.mp4
Hark turns webhooks into clean, source-branded iPhone notifications. Connect CI jobs, agents, scripts, monitoring tools, or anything else that can send an HTTP request.
Requires Node.js 22 or newer.
-
Install the Hark skill for your agent:
npx skills add R44VC0RP/hark --skill hark --global
-
Install the CLI:
npm install -g harkctl
-
Authenticate it with your Hark account:
harkctl auth login
-
Ask your agent:
What can Hark do?
Your agent can now notify your iPhone, request approvals or text replies, show task progress with Live Activities, and create webhook services for external systems.
- Sends rich iOS notifications from a simple webhook.
- Gives each service its own name, avatar, destination URL, and secret endpoint.
- Tracks delivery attempts and registered devices in a web dashboard.
- Supports approvals and text replies for agent workflows.
- Shows stateful task progress with Live Activities on the Lock Screen and Dynamic Island.
- Supports multiple devices and targeted delivery with Hark Pro.
- Sign in at hark.ryan.ceo.
- Register your iPhone with the Hark app.
- Create a service and copy its secret webhook URL.
- Send it a JSON request.
curl -X POST 'https://hark.ryan.ceo/hooks/whk_your_token' \
-H 'Content-Type: application/json' \
-d '{
"title": "GitHub",
"body": "Production deployed successfully.",
"url": "https://github.com/acme/app/actions"
}'Only body is required.
| Field | Description |
|---|---|
body |
Notification text. |
title |
Optional sender-name override. |
imageUrl |
Optional public HTTPS avatar URL. |
url |
Optional destination opened when tapped. |
deviceIds |
Optional Pro routing to specific devices. |
Successful requests return an event ID and the number of push requests accepted for delivery:
{
"ok": true,
"eventId": "evt_...",
"delivered": 1
}Use an Idempotency-Key header when retrying requests to prevent duplicate notifications.
Start a stateful Live Activity using the same service webhook token:
curl -X POST 'https://hark.ryan.ceo/hooks/whk_your_token/live-activities' \
-H 'Content-Type: application/json' \
-d '{
"title": "Deploy #184",
"status": "Building",
"progress": 0.25,
"symbol": "build",
"accentColor": "#FF9F0A"
}'The response includes an activityId. Use it to update or end the activity:
PATCH /hooks/:token/live-activities/:activityId
POST /hooks/:token/live-activities/:activityId/end
Updates accept partial state such as status, detail, progress, symbol, and accentColor.
Hark allows one active Hark Live Activity per device; pass replace: true on start to silently end
whatever occupies the device and take the slot. Starting an activity may alert the user, but
progress updates are silent by default. High-priority updates control delivery speed, not sound or
haptics.
To contribute a genuinely new Live Activity layout, including no-simulator testing and every public API, widget, CLI, and docs touchpoint, see Contributing a Live Activity template.
The harkctl CLI can send one-shot notifications, ask for approvals or short
replies, and manage Live Activities from scripts or AI agents.
harkctl auth login
harkctl notify "Deploy finished ✅" --title "Deploy bot"
harkctl notify ask "Deploy production?" --approval --wait
harkctl activity start --title "Release" --status "Building" --progress 0.1The installable hark agent skill follows the open Agent Skills format
used by skills.sh and supports OpenCode, Claude Code, Codex,
Cursor, and other compatible agents.
Hark is source-available under the PolyForm Noncommercial License 1.0.0. Commercial use is not permitted without a separate license from the licensor.