mobile · companion · later / roadmap · iOS & Android

Approve from anywhere your thumb is.

The desktop does the work. The phone will do the gates. Native iOS and Android, phone push approvals, biometric review, offline cached approvals — these are on our roadmap, not in beta yet. This page is what we're designing toward. Today, the desktop app holds the inbox. later · roadmap

what's real today Approvals happen in the desktop client. Mobile, two-device flows, watchOS, and the team approval inbox are all roadmap.
App Store · later Google Play · later
9:41 5G·91%
tuesday · may 27 9:41
SYNTAXIS now
Patch ready · gate 08
#142 · birthday on profile form · 3 files · +47 / −12
work/142-birthday-on-profile
tap notification

Approval · #142

issue Add support of birthday field to the profile form opened by @amy · 14h ago
patch 3 files · +47 · −12 profile-form.tsx · user.ts · profile.test.ts
validate pass · 0 errors · 2 new tests pass pnpm lint · pnpm test --filter profile
View diff Approve
Diff 3 files
profile-form.tsx +22 / −8
12 const [name, setName] = useState("");
13 // birthday: TODO
13 const [bday, setBday] = useState<Date>();
14 const onBday = (d: Date) => {
15 if (d > new Date()) return;
16 setBday(d);
17 };
18 return (
19 <form onSubmit={onSubmit}>
20 <DateField
21 label="birthday"
22 onChange={onBday}
23 />
24 <Button>save</Button>
25 </form>
26 );
Back Approve

Hold to approve

Face ID required for side-effects
release to confirm

Approved

syncing to desktop · work/142-birthday-on-profile
syntaxis is opening a draft PR

↺ replay
tap the phone to walk through · auto-advances
01 · Where four real places

It finds you wherever the thumb is.

dog walk · 06:54 · 3°C

Approve the branch before the second lap.

you · leashed, hands cold
phone · 1 tap, glove off, glove back on
syntaxis · gate 04 → cleared, scan starts

SYNTAXISjust now
Branch ready · gate 04
work/142-birthday-on-profile
coffee line · 08:30 · 22m wait

Scroll the diff before they ask your name.

you · third in line, flat white
phone · scrolling 3 files · +47/-12
syntaxis · patch queued, awaiting tap

SYNTAXIS2m ago
Patch ready · 3 files
birthday-on-profile · +47 / −12
gate 14 · 10:30 · boarding in 18m

Push the PR before they call group B.

you · seat 14F, flight FRA→LIS
phone · airplane mode in 18m, approve now
syntaxis · push to remote, draft PR open

SYNTAXISnow
Ready to push
origin/work/142-birthday-on-profile
waiting room · 14:30 · 4 ahead

Re-run validation before they call your name.

you · clipboard in hand, phone silent
phone · tap, hold, vibrate ack
syntaxis · tests re-run, green in 36s

SYNTAXIS1m ago
Validation failed · re-run?
profile.test.ts · 1 flake, retry suggested
02 · Flow five taps, end-to-end

One push. Five glances. Done.

/01
9:41
SYNTAXIS · now
Patch ready · gate 08
3 files · +47/−12

Push arrives

haptic + lockscreen banner
at gate 04 · 08 · 09

/02
issue birthday on profile form
patch 3 files +47 / −12
validate pass · 0 errors

Glance summary

issue · diff size · validation
at a glance

/03
const [name…
// birthday:
const [bday…
const onBday
if (d > new
return (
<DateField
onChange=…
<Button…
);

Scroll the diff

syntax-highlighted · per-file
fits a small screen

/04
hold to approve

Biometric hold

Face ID · fingerprint
no thumb-slips

/05
syncing to desktop

Done in < 30s

desktop picks up · PR
opens as draft

03 · A day tuesday · 24h log

A workday without a workstation.

06:45home
poll #142 claimed · birthday on profile form
phone · no notification · syntaxis read your .syntaxis/rules.yml
07:10dog walk
gate 04 Branch ready · approve to create
phone · 1 tap → Face ID → approved in 6s · gloves back on
07:28park bench
scan 412 files indexed · 9 spans packed
phone · silent · quiet-hours profile "outdoors" suppresses non-gate pings
08:32coffee line
gate 08 Patch ready · 3 files · +47/−12
phone · scrolled diff (22 lines) → Face ID → approved · 41s total
09:02desk
PR open draft · waiting for code-owner
phone · push: "PR is yours when you sit down" · opens desktop deeplink
10:31gate 14 · FRA
gate 09 Promote PR to ready-for-review?
phone · approve from boarding queue · airplane mode in 4m
14:30waiting room
re-run validate · 1 flake retried → green in 36s
phone · silent vibrate · "re-run? Y/N" with two-button banner
19:00home
quiet quiet hours engaged · next ping at 09:00 tomorrow
phone · no notifications · audit log paused for the night
04 · Quiet notifications & quiet hours

It pages you. Politely.

Every gate is an interruption. We treat that seriously. You decide which gates ping you, how loud, in what window. Default: 04 · 08 · 09 page you · everything else accrues to the inbox.

  • ·Pick which gates trigger push (per-repo).
  • ·Set quiet hours by clock or by calendar event (meeting, focus block, school pickup).
  • ·Tier each gate as silent, vibrate, or page.
  • ·Hand off to a teammate during PTO — they see your inbox until you're back.
  • ·Weekends default to silent. Override per-repo.

Notifications

etenos/mdx-portal · personal
Gate 04 · branch creation first side-effect
silentvibratepage
Gate 08 · patch to disk diff visible before tap
silentvibratepage
Gate 09 · push to remote final write
silentvibratepage
Validation failures flakes, type errors, lint
Pause when calendar is busy meeting, focus, "do not page"
Weekend silent override per-repo

Quiet window

19:00 09:00 AMERICA/NEW_YORK · MON–FRI
05 · Surface companion · not replacement

The phone is for gates. The laptop is for work.

on mobile

  • ·Approve patches with your thumb — biometric hold
  • ·Push notifications when patches are ready
  • ·Read the full diff, syntax-highlighted
  • ·Comment / request changes inline
  • ·Pause or kill a run
  • ·Promote a draft PR to ready-for-review
  • ·View activity feed in real time
  • ·Re-run validation (lint, tests, typecheck)
  • ·Sign in with biometrics, hand off to teammate
  • ·Audit log of who approved what, when

// everything an on-call reviewer needs · nothing they don't.

desktop-only · on purpose

  • ·Editing code · phones aren't editors
  • ·Creating tasks · those start as issues, not pings
  • ·Configuring rule packs (.syntaxis/) — that's a code review
  • ·Connecting new repos / GitHub App scopes
  • ·Running interactive shells in the sandbox
  • ·Designing branch-naming patterns
  • ·Managing team membership & SSO

// the laptop earns its place. we don't pretend a phone is a workstation.

06 · Asked eight short answers

The things we'd ask first.

When does the mobile app actually ship?
Honestly: later. Native iOS and Android, phone push approvals, biometric review, and offline cached approvals are roadmap items — not in beta. Joining the waitlist tells us how much to prioritise it. The desktop beta already runs the full 6-gate loop today.
What if I lose my phone mid-run?
When the mobile companion lands, sessions will be bound to your desktop device, not your phone. If your phone goes offline, the agent simply waits at the next gate — same as if you'd closed the laptop. Today, that's how the desktop already works on its own.
Can I approve from both phone and desktop?
That's the goal: whichever device taps “approve” first wins; the other view updates within ~600ms. Two-device approval workflows (“two-eyes” rule) are also on the roadmap. later
Does the phone ever write to my repo directly?
No. The phone only ever sends an approved or denied token back to the desktop. The desktop is the only thing that ever touches your working tree or the remote. That threat model is locked in today; the mobile surface inherits it.
What about during airplane mode?
Gates simply queue. The agent never times out a gate — it waits until you're back online. The mobile app will cache the last 50 gate previews offline so you can read the diff and pre-stage your approval. offline cache · later
Can two teammates share an approval inbox?
A team / shared approval inbox is landing soon on the desktop. The mobile version of the same inbox will follow with the iOS / Android apps.
How private is the diff data on my phone?
The plan is end-to-end encryption between your desktop and your paired phones, with the phone's local cache encrypted at rest in the device keychain, and re-pair revoking all prior sessions. Audit log will continue to live on your desktop only.
Is there an Apple Watch companion?
Not on day one of mobile, and only later if at all. Biometric approval will require the larger screen. Watch complications for “gates pending” are a wishlist item, not a promise.
waitlist · mobile · later / roadmap

Be on the bench when it pings.

A few hundred people on the waitlist already. Mobile is a roadmap surface, not a beta today — joining tells us how much to prioritise it next to team-inbox, audit export, and the Claude Code runtime. No credit card, no commitment.