Mobile experience
The killer feature: an agent pauses on your laptop, you approve from your phone, the agent continues.
The point of Viewport is the moment your phone buzzes, you look down, you read what the agent wants to do, and you say yes or no. All while the laptop is sitting somewhere else.
This page is what that flow actually looks like.
What ships today
| Surface | Status |
|---|---|
| Mobile-responsive web app | Stable |
| Web push notifications (Chrome, Safari, Firefox on iOS 16.4+) | Stable |
| Slack DM / channel push as fallback | Stable |
| Native iOS app | Roadmap |
| Native Android app | Roadmap |
Set up web push (3 minutes)
- Open
app.getviewport.comin Safari on iOS 16.4+ or Chrome on Android. - Add Viewport to your home screen (Safari: Share → Add to Home Screen).
- Open the home-screen icon (not the Safari tab. Push only works for installed PWAs on iOS).
- The first time an inbox item lands, you'll be prompted to enable notifications. Accept.
- On iOS, also enable notifications in Settings → Notifications → Viewport. Allow on Lock Screen, banner style "Persistent."
To test:
vpd test pushThis kicks off a no-op session with a synthetic plan review. Your phone should buzz within a few seconds. The notification has the agent name and a one-line preview of the decision.
What a push looks like
When an inbox item lands, the platform sends:
Claude Code paused
~/code/api · plan review
Migrate auth middleware to bearer tokens
Tap to reviewTap and you go directly to the inbox item detail page. No list step. The detail surface has:
- The full question or plan.
- Big primary buttons: Approve, Deny, Reply (leave a comment first).
- A collapsible "related context" section with the session and any prior decisions in this run.
The daily flow
A real day:
08:00 cd ~/code/api && claude
08:00 → laptop sits, you walk to kitchen
08:04 *phone buzz* "Claude Code paused in ~/code/api"
08:04 open notification, see plan, tap Approve
08:04 laptop: agent continues
08:11 *phone buzz* "Permission needed: rm -rf node_modules"
08:11 read it, tap Allow once
08:11 laptop: agent continues
08:18 *phone buzz* "Session complete · PR opened"
08:18 walk back to laptop, gh pr viewIf you're in a meeting, the phone batches multiple inbox items into one expandable notification.
What if you can't decide right now
Each inbox item has a TTL (default 1 hour). If you don't decide:
- Default: auto-deny. Safe choice. The agent stops or branches to a deny path.
- Configurable per workflow. See Approval policies.
You can also defer manually: tap Snooze 15m and the platform re-notifies you later. The agent stays paused.
Multi-org users
If you belong to multiple orgs, your phone shows pushes from all of them. The notification body includes the org name so you know which hat to wear. Inside the app, you can switch active org via the switcher in the top-left.
What's not on your phone
- The agent's transcript itself. Frames are on the daemon. The phone gets the decision question, not the underlying file diffs (unless the plan includes them).
- The actual code under review. Plans contain change summaries and references, not raw bytes.
This is deliberate. The privacy claim ("we don't store transcripts") would be broken if the phone fetched the full session from somewhere.
Setup tips
- Allow lock-screen. Otherwise you have to unlock to see the question, which kills the speed of the loop.
- Allow critical alerts (iOS) if you want pushes to break through Do Not Disturb. Reserved for opt-in workflows; configure per workflow.
- Pin Viewport to your home screen on Android too. Web push works in regular Chrome tabs on Android, but the PWA experience is better.
Troubleshooting
- Notification didn't show: check iOS Settings → Notifications → Viewport. PWA installation is required on iOS.
- Got the push, but the link goes to a "Forbidden" page: probably a stale org switch. Tap the org switcher to confirm you're in the right org. See Troubleshooting: tenant context errors.
- Phone is slow to wake: web push latency is ~2-5 seconds typically. If you're regularly seeing 30s+, tell us and we'll dig in.
Where to go next
- Decide from anywhere. The inbox flow on every surface.
- Slack integration. Slack-driven decisions as an alternative to mobile push.
- Daily driver loop. The macro routine.