The notification layer your AI agents are missing.
syncfu is an always-on-top overlay that puts information on your screen the moment it matters — with action buttons so you can respond without context-switching. Built for developers running Claude Code, Cursor, or any AI agent that works in the background.
macOS / Linux
$ curl -fsSL https://raw.githubusercontent.com/Zackriya-Solutions/syncfu/main/install.sh | sh
Built for every background process that needs your attention.
If it runs without you, syncfu can reach you when it's done — or when it needs you.
🤖AI agents & autonomous loops
Running a Claude Code loop or multi-agent workflow? Get notified on phase completion, test failures, or when the agent needs a human decision before a destructive action.
Medication reminders that stay on screen until confirmed. Pomodoro timers with live progress. Reminders that actually reach you — not a badge you'll never look at.
syncfu send -t"Medication" \
-p critical --timeout never \
-a"taken:Taken"--wait \
"Time to take your meds"
Health check dashboards, cron job completions, AWS billing threshold alerts, Home Assistant / Node-RED webhooks — any HTTP call can trigger an overlay.
curl-X POST localhost:9868/notify \
-H'Content-Type: application/json' \
-d'{"sender":"ha","title":"Door open",
"body":"Front door opened","priority":"high"}'
# Your first notificationsyncfu send "Hello from syncfu!"# With title, priority, iconsyncfu send -t"Build Complete"-p high -i circle-check "All 142 tests passing"# With action buttonssyncfu send -t"PR #42" \
--action"approve:Approve:primary" \
--action"skip:Skip:secondary" \
"Review requested"# Block until user responds (--wait)CHOICE=$(syncfu send -t"Approve?" \
-a"yes:Yes"-a"no:No:danger" \
--wait"Merge PR #42?")echo"User chose: $CHOICE"# "yes", "no", "dismissed", "timeout"# Or use curl directlycurl-X POST localhost:9868/notify \
-d'{"sender":"ci","title":"Done","body":"Ship it"}'
API Reference
HTTP REST on :9868
For programmatic access from any language, syncfu exposes a local REST API — no SDK required. The CLI and HTTP API are two interfaces to the same daemon.
Method
Path
Description
POST
/notify
Send a notification. Returns {id}
POST
/notify/{id}/update
Update progress, body, or actions of an in-flight notification
POST
/notify/{id}/action
Trigger an action button (fires webhook, resolves waiters)
POST
/notify/{id}/dismiss
Dismiss a specific notification by ID
GET
/notify/{id}/wait
SSE stream — blocks until action clicked, dismissed, or timeout
POST
/dismiss-all
Dismiss all active notifications at once
GET
/health
Server status + active notification count
GET
/active
List all active notifications as a JSON array
Because your agents shouldn't have to wait for you to check the terminal.
Open source. MIT license. Built with Tauri v2, Rust, and React.