Secretary
Say "remind me to take the bins out at 8 tomorrow" and it's set. Reminders reach you through your phone's own alarm, Telegram and Discord — so one of them gets through even when the others don't.
Requires Android 8.0 (API 26) or later · Free · English & 中文
Not on Google Play yet — install the APK directly All releases
The hard part isn't the todo list. It's the reminder arriving.
Every todo app can store a task. What breaks is delivery: Android freezes backgrounded apps, push queues behind a dead socket, and a reminder that arrives an hour late is a reminder that failed. Secretary schedules an exact alarm on the phone itself as the primary path — it fires offline, without Google services, and through a push outage — then sends over Telegram and Discord as independent backups. The paths recognise each other, so you get one notification, not three.
What Secretary does
Just say it
"Every weekday at 9, stand up and stretch." "Remind me about the rent on the 10th." "I finished the report." The assistant reads what you meant and books the task, the recurrence or the journal entry. No date pickers, no forms.
Reminders that survive Android
An exact alarm is scheduled on the device for every reminder — the one path that works offline, on phones with no Google services, and during a push outage. It re-arms itself after a reboot, and the app tells you plainly when the system is holding it back.
Reaches you on every channel
One account, several front doors: the app, Telegram, Discord. Reminders arrive on all of them and you can add tasks from any of them, so leaving your phone in another room doesn't mean missing anything.
Repeats that behave
Ticking off today's water doesn't cancel the habit — the task stays on the list and rolls forward to the next occurrence, and the tick is recorded so you can tell whether you already did it today.
A record of what you did
Completed todos and journal entries share one timeline, because both answer the same question. Log something you already did, backdate it to when it actually happened, and tag it.
Yours, and portable
Your API key is encrypted on the device under the Android Keystore and never backed up to the cloud. Delete your account from inside the app and every table goes with it. Both the app and the server are open source; run your own if you'd rather.
Screenshots
How it works
Sign in
Create an account in the app. That's the whole setup — the server is already running, with nothing to configure.
Say what you need
Type it the way you'd say it to a person. The assistant turns it into a task, a reminder, a repeat, or a journal entry.
Link a chat channel (optional)
Tap to link Telegram or Discord. Reminders then arrive there too, and you can add tasks by messaging the bot.
Get reminded
At the appointed moment your phone's own alarm fires, with Complete and Snooze on the notification. If the phone can't deliver, the other channels still do.
Built to be checked, not trusted
Delivery is recorded per reminder and per channel: which one carried it, and how many seconds after it was due. That log exists because "the reminder didn't arrive" used to be unanswerable — half a dozen different causes looked identical from the outside. The app's own diagnostics follow the same rule: they report only what the code can actually prove.
What people use it for
The things that repeat — medication, rent, standing meetings, the bins. Say it once as a repeat; ticking off today's advances it to the next occurrence instead of ending the series.
The things far enough away that you'll have stopped thinking about them — a renewal eleven months out, a callback next Tuesday. The reminder is scheduled on the device itself, so it survives reinstalling nothing and rebooting everything.
When you're away from your phone — reminders also land in Telegram and Discord, and you can add a task by messaging the bot from a laptop.
Keeping track of what you actually did — tell it what you finished, including things that were never on the list. Entries can be backdated to when they really happened, and asked about later.
Phones that fight background apps — Xiaomi, OPPO, vivo, OnePlus, Honor, Huawei / HarmonyOS. The device alarm is the primary path precisely because push cannot be relied on there, and the app reports when the system is suppressing it rather than failing quietly.
Secretary vs. other ways to be reminded
| Secretary | A typical reminder app | A chat bot | |
|---|---|---|---|
| Create a task by saying it in one sentence | ✓ | form fields | ✓ |
| Fires without network or Google services | ✓ device alarm | varies | ✗ needs network |
| Independent backup delivery channels | ✓ Telegram + Discord | ✗ | single channel |
| Duplicate suppression across channels | ✓ | n/a | ✗ |
| Ticking a repeat advances it, not ends it | ✓ | varies | varies |
| Per-reminder delivery record you can read | ✓ | ✗ | ✗ |
| Open source (app + server) | ✓ | usually closed | usually closed |
| Self-hostable | ✓ | ✗ | varies |
| Delete your account and data from in-app | ✓ | varies | varies |
Frequently asked questions
What is Secretary?
Secretary is a free, open-source Android app for todos, reminders and a journal, where you create things by typing them the way you'd say them: "remind me to take the bins out at 8 tomorrow", "every weekday at 9, stand up". An assistant on the server reads what you meant and books it. Reminders are then delivered by your phone's own exact alarm, with Telegram and Discord as independent backups.
Do reminders work without internet?
Yes. Every reminder is scheduled as an exact alarm on the device itself, and that alarm fires with no network at all — it's the primary delivery path, not a fallback. The network is needed to create or change a task, and to deliver the Telegram / Discord copies. The alarm schedule is also saved on the phone, so it is restored after a reboot without needing to reach the server.
Will I get the same reminder three times?
No. The channels recognise each other. When the phone's own alarm delivers a reminder, it tells the server, and the fallback push is dropped rather than sent. When a push arrives first, the app checks whether that reminder is already in the notification shade and skips posting a second one. Telegram and Discord are separate surfaces by design — you asked to be reachable there.
Does it need Google Play services?
No. Push notifications use Firebase when it's available, but push is only a supplement. On a phone with no Google services the device alarm and the chat channels still work — which is why the alarm was made the primary path in the first place.
Why does it ask for exact alarms and battery-optimization exemption?
They solve two different problems. The exact-alarm permission governs whether a reminder may be scheduled for the precise moment you asked for, instead of being batched minutes later. The battery exemption governs whether the app is allowed to run when that alarm fires — measured on a ColorOS handset, without it the system froze the app and the alarms stopped arriving even though they were correctly scheduled. Neither is used for anything else.
What happens when I complete a repeating reminder?
You complete that one occurrence. The task stays on your list and moves to its next scheduled time — ticking off today's glass of water does not cancel the habit. The occurrence is written to your journal, so you can tell whether you already did it today, which is usually the reason you ticked it.
Is my data private?
Your tasks, reminders, journal and chat are stored on the server so that reminders can be delivered when your phone is off, and so the assistant has context. What you type is passed to a language-model provider to be interpreted — that is how plain language becomes a scheduled reminder. On the device, your API key is encrypted under the Android Keystore, and cloud backup is deliberately switched off so that key is never copied to Google Drive. You can delete your account and every associated row from inside the app.
Can I run my own server?
Yes. Both the Android app and the Go server are open source. The app ships pointing at ShuttleLab's instance so there is nothing to configure, but the server is a single binary with a SQLite database and can be self-hosted.
Is it on Google Play?
Not yet — install the APK from GitHub Releases. Android will warn about installing from outside the store; that warning is about the source, not about this app. The APK is built and signed by the project's public CI workflow from the same source you can read.
What does it cost?
Nothing. It's free and open source (AGPL-3.0), with no ads, no analytics and no tracking SDKs.