Nudges
Today's timeline
Said today
Habits
AI plan · today's slice
One-offs
This week
Dailies reset every morning. Weekly counts reset on Monday.
The AI plan slice follows your plan's own rhythm — learn Monday to Wednesday,
build Thursday to Saturday, ship on Sunday.
Body
weight kg
calories
protein g
Portfolio
value ₹
Money
Trends
Every day logged
This week
—
AI engineer plan
Backup
Everything you have logged
—
All of this lives only in this browser. Export regularly —
clearing browser data erases it, and iOS wipes storage after about a week
of not opening the page.
Camera is off.
Turn it on in Setup.
Turn it on in Setup.
At the desk
—
Posture
—
Eyes
—
From the screen
—
Doing
—
Room light
—
Gestures it understands
🙂 Nod or shake
Answers a change it has asked about - nod for yes, shake for no
👍 Thumbs up
Marks the nudge it just asked for as done
✋ Open palm
Snooze whatever it just said by 10 minutes
✊ Fist
Shut up for 30 minutes — hard focus mode
✌️ Peace
Reads out what's next
What it noticed
Version
—
Senses
Camera
Presence, posture, your eyes (blinking, drowsiness, distance), what's on the
desk, whether you've picked up the phone, whether you've moved at all. Runs entirely
inside this browser.
Know it's you
Learns the geometry of your face when you calibrate posture - a dozen
ratios between facial points, stored as numbers on this device. Not a photo, and it
can't be turned back into one. With it on, it stays quiet for anyone who isn't you.
Recalibrate posture after turning this on.
Let it look when asked
Say "look at this" or "what's on my desk" and one frame goes to the AI
provider for an answer — only on that request, never on its own. Off by default,
because it's the one time a picture leaves this device.
Microphone
Tap the mic button to give it an instruction. Off between taps.
Always listening — “hey DeskMate”
No tap needed: say “hey DeskMate, what’s next”. The mic then stays
open the whole time, and the browser streams that audio to its speech service
to recognise it — nothing is processed on this device. It ignores anything not
addressed to it, but the stream is continuous. Off by default for that reason.
Voice
Speaks reminders out loud through this phone.
Cheeky mode
Comments on what it sees, not just the schedule. Turn off for
schedule-only announcements.
Keep screen awake
Stops the phone dimming. Leave it on a charger.
Speak up unprompted
Beyond the fixed nudges — a meeting in 5 while you're still
slouched, behind on a weekly target with little week left, mail owed and
ageing. Rule-based, not the AI guessing; still holds off in meetings.
Google accounts
Status
Not set up.
OAuth client ID
From Google Cloud Console. Ends in
.apps.googleusercontent.com. Not a secret.Let it write to the calendar
"Put the dentist in at four" makes a real event. Always staged — it asks
before anything is written. Google will ask for one more permission per account.
Draft replies for mail waiting on you
A "Draft reply" button on each waiting item. It reads that one thread, writes a
reply in your voice into Gmail Drafts, and never sends. One more permission.
Calendar is today's events only. Mail is read as headers and
Gmail's own one-line preview — message bodies are never fetched, except the one
thread you tap "Draft reply" on. Writing (calendar events, drafts) is off unless
you turn it on above, and always staged. Everything is fetched by your phone straight from Google.
Sign-in lasts for the browser session; reopening the page may ask again.
Tasks from elsewhere
Google Tasks
Due today or overdue, in the same list. Ticking it here completes it there.
Todoist
Today and overdue, two-way. Token from Todoist → Settings → Integrations →
Developer.
Apple Reminders
One-way, through the phone bridge: a Shortcut sends today's reminders
as {kind: tasks, body: the list of titles}.
Nothing connected.
Money
UPI and bank payments
Reads the subject and one-line preview of alert emails (never the body) in the
connected Gmail, plus any bank SMS the phone forwards. Amounts and names are parsed by
rules on this device; the AI only ever hears totals, never individual payments.
Off.
Weekly budget (₹)
Optional — a meter on Track, and a word in the brief when it's blown.
Sync across your devices
Through your own worker
Your phone and this computer agree with each other through the Cloudflare
worker you run — no Google needed. Everything is signed with the secret below, so only
your devices can read or write it. Paste the same two values on every device.
Not set up.
Sync & backup
Sync across devices
Connect an account first.
This device is called
So you can tell which phone last wrote.
Stored in your own Google Drive, in a private folder only this
app can see — it does not appear in your Drive and no one else can read it. Devices
merge rather than overwrite, so nothing logged on one is lost by the other. Your
routine, nudges, targets, habits and rituals follow you too — the device that changed
them last wins. Camera, mic, voice, the wake word and the phone bridge stay per device.
iPhone
Bridge to the phone
The things worth interrupting you for — the brief, the wind-down,
something it noticed, a change waiting for your yes — reach your phone as
notifications when you're not at the desk (camera off counts as away). The
phone can send things back: a dictated instruction, last night's sleep, a
number to log. Turn this on on the desk computer only — the phone is the phone.
Off.
Phone subscribes to
Phone sends to
Signing secret
Messages travel through ntfy.sh. The topics are unguessable and
every inbound message is signed with the secret, so a leaked topic can't be
used to give it instructions. What goes out is only what it would have said
aloud, and never the secret.
1 · Notifications — the ntfy app
Install ntfy from the App Store, tap +, and subscribe to the
"phone subscribes to" topic above (server ntfy.sh). Then press the test button.
2 · Talk to it from the phone — Siri or a Shortcut
Install Scriptable (free), make a script called DeskMate and
paste this in — your secret is already in it:
Then a Shortcut: Dictate Text → Run Script (Scriptable ·
DeskMate, Parameter = Dictated Text) → Get Contents of URL: POST to
https://ntfy.sh/, Request Body: File →
Script Result. Call it "Tell DeskMate" and Siri runs it by name. The answer
comes back as a notification.3 · Sleep, steps and weight from Apple Health
A Shortcut automation at 07:00 with "Ask Before Running" off: three
Find Health Samples actions (Sleep Analysis for last night → total
minutes; Steps for yesterday → sum; Body Mass → latest) → a Dictionary
{kind: health, body: {sleepMin, steps, w}} → Run Script (DeskMate, Parameter =
the dictionary) → Get Contents of URL as above. The brief will know how you
slept.
4 · Portfolio value, and bank SMS
Portfolio: a Shortcut with Ask for Input (number) → Dictionary
{kind: portfolio, body: the number} → Run Script → Get Contents of URL.
Bank SMS: an automation "When I get a message" from your bank's sender containing "debited" or "credited", Ask Before Running off → If it does not contain "OTP" → Dictionary {kind: sms, body: Shortcut Input} → Run Script → Get Contents of URL. iOS may only fire this for iMessage, not SMS — try one and see.
Bank SMS: an automation "When I get a message" from your bank's sender containing "debited" or "credited", Ask Before Running off → If it does not contain "OTP" → Dictionary {kind: sms, body: Shortcut Input} → Run Script → Get Contents of URL. iOS may only fire this for iMessage, not SMS — try one and see.
Weather & getting there
Weather
Rain before the walk, heat for the gym slot — in the brief and as a pill.
Your location, rounded to about a kilometre, goes only to Open-Meteo.
Off.
Minutes to get anywhere
For the first meeting with an address it works out when to leave.
0 turns it off.
Daily rituals
Morning brief
Once a day, from your calendar, plan and mail.
Not before
It waits until this hour to greet you.
Evening review
Wind-down that logs the day into your week.
Not before
Hour the wind-down appears.
Read my mail
Pulls out what you owe and who is waiting.
Her voice
Voice
Looking for installed voices…
Speed
Pitch
Android and iPhone ship different voices, and the best ones
(marked “Natural”, “Neural” or “Network”) often download only after you use them
once. If the list looks short, Settings → System → Languages → Text-to-speech on
Android will let you install more.
Talking to it
Brain
Without a key it only understands fixed commands.
With one it actually converses.
Provider
API key
Test the connection
Not tested yet.
The key is stored only in this phone's browser storage. It is not in
the published page, so nobody else who opens the link can use it. When you ask a question,
that question plus your schedule and current status are sent to the provider — camera
images are never sent.
What it remembers
A handful of facts it's picked up across days — from conversation,
never from the camera. Delete anything that's wrong or none of its business.
Recall
Find the relevant bits
For each question it searches your notes, weeks, reviews and
past chats for what actually relates, instead of pasting the last few notes.
The search runs on this device; a small model (about 23 MB) downloads once.
—
Daily targets
Calories
Protein (g)
Goal weight (kg)
The hour rule
Pullup demand
After 60 unbroken minutes at the desk it demands 10 pullups —
and the camera has to see you actually leave before it counts.
Minutes before it asks
How many pullups
Day
Awake between
It stays silent outside these hours
Camera frames are analysed by code running inside this browser tab and are never uploaded,
saved, or sent anywhere — with one exception: a single frame, when you ask it to look,
if you have allowed that above. Nothing else about you leaves this phone. Closing the tab ends it;
clearing the browser's site data erases everything it has stored.