Your scripts, on your Lock Screen
Start a Live Activity from CI, a cron job or any script with one HTTP call, and your whole team sees it on their iPhone.
How it works
-
1. Create a key
Sign in with Apple and create an API key for your workspace.
-
2. Make one HTTP call
No SDK. Anything that can run
curlcan start, update and end a Live Activity. -
3. It's on every teammate's phone
Same id, new state: the activity updates in place on each iPhone.
Four templates
Pick one, send its fields. Each card opens it in the simulator below.
Built for teams
Invite teammates to a workspace with a link; every call reaches all their iPhones.
Each person mutes the channels they don't need, without touching anyone else's.
PUT /activities/build-128
From your code or your pipeline
curl -X PUT https://api.pushr.live/v1/channels/ci/activities/build-128 \
-H "Authorization: Bearer $PUSHR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"template": "steps", "state": {"title": "CI pipeline", "steps": [
{"name": "test", "status": "success"},
{"name": "deploy", "status": "running"}]}}'
await fetch('https://api.pushr.live/v1/channels/ci/activities/build-128', {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.PUSHR_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
template: 'steps',
state: {
title: 'CI pipeline',
steps: [
{ name: 'test', status: 'success' },
{ name: 'deploy', status: 'running' },
],
},
}),
})
import os
import requests
requests.put(
"https://api.pushr.live/v1/channels/ci/activities/build-128",
headers={"Authorization": f"Bearer {os.environ['PUSHR_API_KEY']}"},
json={
"template": "steps",
"state": {
"title": "CI pipeline",
"steps": [
{"name": "test", "status": "success"},
{"name": "deploy", "status": "running"},
],
},
},
).raise_for_status()
env:
PUSHR: https://api.pushr.live/v1/channels/ci/activities/run-${{ github.run_id }}
steps:
- name: Start the Live Activity
run: |
curl -fsS -X PUT "$PUSHR" \
-H "Authorization: Bearer ${{ secrets.PUSHR_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{"template": "steps", "state": {"title": "CI pipeline", "subtitle": "${{ github.ref_name }}",
"steps": [{"name": "test", "status": "running"}, {"name": "deploy", "status": "pending"}]}}'
# … your test and deploy steps, each updating the activity the same way …
- name: End the Live Activity
if: always()
run: |
curl -fsS -X POST "$PUSHR/end" \
-H "Authorization: Bearer ${{ secrets.PUSHR_API_KEY }}"
Try it
Pick a template, edit it, and watch the phone. Nothing is sent.