silyring
// webhook β†’ phone call

Tell claudeopenclaw πŸ¦€your CIn8na cron jobzapierautomationsstripeyour scriptopenclawa webhookgithubyour monitoryour bash
to call you.

Anything that can make an HTTP request can make your phone ring. POST a message, your phone rings, your text is spoken aloud β€” or pushed, or delivered as a markdown doc.

Three lines, one ring.
Β§ Three modes

One key.
Three verbs.

Same webhook, three flavours of delivery. Pick whichever fits the volume of what you have to say.

Call
for the urgent stuff

Rings & speaks.

POST to /call/:key with a body, the phone rings, the body is read aloud by TTS. CallKit takes over the lock screen β€” you can answer, decline, or let it ring through.

$ curl /call/KEY -d 'pipeline failed'
Push
for the routine stuff

Banner notification.

POST to /push/:key. A standard iOS notification appears. Doesn't interrupt, doesn't make noise unless you want it to. Great for status pings.

$ curl /push/KEY -d 'CI passed'
Markdown
for the detailed stuff

A whole document.

POST a markdown file (up to 3 MB) with Content-Type: text/markdown. The push preview shows the first heading; tapping it opens an in-app reader with the formatted document.

$ curl --data-binary @report.md ... /push/KEY
Β§ Use cases

Wire it wherever.

The webhook is just an HTTPS URL β€” nothing to install, nothing to authenticate against. It fits anywhere a curl fits.

Deploys

Ring me when production breaks.

Drop a curl into your CI failure step. Quiet successes, loud failures. Sleep peacefully until you can't.

- name: page on failure
  if: failure()
  run: |
    curl -X POST https://api.silyring.com/call/$KEY \
      -d "main pipeline failed at $GITHUB_JOB"
Cron jobs

Wake me if the nightly backup dies.

Wrap any periodic task. Exit non-zero β†’ call. Anything else β†’ silence.

0 3 * * * /opt/jobs/backup.sh \
  || curl -X POST https://api.silyring.com/call/$KEY \
       -d 'nightly backup failed'
Incidents

Send me the report, not a wall of text.

Push the entire incident write-up as markdown. Tap once on your phone to read the formatted version, headings and all.

curl --data-binary @incident.md \
  -H 'Content-Type: text/markdown' \
  https://api.silyring.com/push/$KEY
Your app

Ring yourself from your own server.

If you can make an HTTP request, you can make your phone ring. No SDK to install, no auth flow.

await fetch(`https://api.silyring.com/call/${KEY}`, {
  method: 'POST',
  body: 'someone just signed up'
});
Β§ Claude Code

Tell Claude to call you.

Install the silyring skill into Claude Code. Then talk to Claude normally β€” ask it to ring you when a build finishes, or send you the test report as a push.

View the skill source β†’
1 β€” Install
2 β€” Save your key
3 β€” Talk to Claude

β€œRun the tests and call me when they’re done.”

β†’ your phone rings with the result spoken aloud.
Β§ FAQ

Quick questions.

Do I need a server?

No. The app gives you a public HTTPS URL the moment you install it. POST to it from anywhere.

What does it cost?

Free during beta. Paid plans soon β€” with reasonable limits.

Is there a rate limit?

Yes β€” 30 calls and 120 pushes per hour by default, doubled per day. See the fair-use page.

What about privacy?

Messages are delivered then deleted. Markdown documents sit on the server for 24 h only so your device can fetch them.

Android?

When it's ready. iOS first because CallKit is what makes calls feel real.

Can I send rich text?

Send markdown. The app renders it on tap β€” headings, code blocks, tables, links, the works. Up to 3 MB.

Make some noise.

iOS β€” Android when it's ready.