Answer 'Needs you' from your phone, so the office doesn't wait while you're away from the desk
Maintainers usually reply within 1 day
@agentvivekkumar is already working on this.
Since Oct 8, 2026.
Assessment
This issue has not been assessed yet.
Description
Problem / motivation
The office is built so the owner sees only the decisions that need them. Today they can see them only at the desk. Every Ask me question, approval and notification from Michael lives in the desktop app. While the owner is away, the cards stay Blocked, the work behind them stops, and the team waits.
- The office moves only as fast as the owner answers. By design, Blocked always means waiting on you (FEATURES.md §1), and only Michael reaches the owner. A team that finishes in minutes and then waits four hours for a yes works at the speed of the four hours.
- The owners this is for are rarely at a desk. Restaurant, retail and home services are the first office packs. The design doc names this as Open Question 2 (
docs/designs/business-mode-office-packs.md:277): "A restaurant owner is on the floor 10 hours a day, so how long do approvals wait? Measure approval latency in the pilot before deciding whether phone approvals are needed." - A desktop notification on a closed laptop reaches nobody. Only Michael notifies, which was the right call (
docs/designs/michael-only-notifications.md). But that one channel misses the owner whenever they're away from the computer. - Every owner decision depends on this. Inbox zero, schedule requests, mailbox sign-in problems, and anything that spends money, deletes things or goes public all end with "the owner decides". All of them get faster if the owner can decide from anywhere.
Proposed solution
Three phases. Phase 0 is the measurement the design doc asks for, so Phases 1 and 2 are decided on real data.
Phase 0: measure the wait (small, local only)
- Work out the time to answer for each Ask me entry.
HumanQAalready recordsaskedAtandansweredAt(src/main/hive.ts:129), so no new data is needed. Count time outside office hours separately, and leave out withdrawn questions. - Show it to the owner in Settings, for example "Questions waited 2 h 40 m for you on average this week". The text is plain, has no dashes, uses
{{godName}}, and goes through i18n. Nothing leaves the computer, consistent with TELEMETRY.md.
Phase 1: a phone channel, Telegram first
- Why Telegram: the app makes outgoing HTTPS calls only (long polling
getUpdates), so unlike Slack and webhooks there is no tunnel and no public endpoint. It's free and works on iPhone and Android. The owner creates their own bot, so nothing is added to the project's infrastructure. - Pairing: Settings has a guided setup: create a bot with @BotFather and paste the token. The app then shows a one-time code, and the first chat that sends it becomes the only chat the app will accept. The token goes into the existing
safeStoragesecret store (src/main/integrations.ts) and never into the hive or any agent's folder. - What goes to the phone:
- Each new Ask me question in Michael's existing short markdown format, with each option as a button and a free-text reply as a fallback.
- Michael's notifications.
- Optionally, a short evening summary.
- Answering: a reply goes through the same door as an answer typed in the app:
mergeHumanQA, thenrecordOwnerAnswerKeys(src/main/index.ts:4489). It's still recorded as the owner's answer, goes only to Michael, and lands in the memory of whoever asked. An answer to a question that was already answered or withdrawn is refused, and the phone says so. - A plain message that isn't a reply goes to Michael, like Talk to Michael.
- Shape: a small
OwnerChannelinterface (send,onReply). The module has noelectronimport, so it's testable as plain Node, likeslack.ts, and it doesn't depend on any one engine.
Phase 2: safety for high-stakes decisions
- Spending money, deleting and anything public show the full action on the phone (who, what, where, the content) and need Approve plus a second confirmation tap. A free-text reply never approves them.
- An owner setting keeps those decisions desk-only.
Privacy: off by default. Turning it on says plainly that the question text passes through Telegram. A "Titles only" mode sends only the card title and asks the owner to open the app, which keeps customer details on the computer.
Plan of PRs, one change each per CONTRIBUTING.md:
- The Phase 0 helper in
src/shared/plus the Settings line, withnode:testcases (office hours, withdrawn questions, unanswered questions). OwnerChannelplus the Telegram transport and pairing, with tests for a wrong chat, a stale answer and a withdrawn question.- High-stakes confirmation, with a test that free text never approves.
Not in scope: a native mobile app, a hosted relay, and any change to who escalates (Michael stays the only one who reaches the owner).
I'd like to open the Phase 0 PR from my fork once you're happy with the direction. It's small and answers Open Question 2 whatever is decided about the rest.
Screenshot, mockup or recording
Everything in this panel waits until the owner is back at this screen. 'Billing email sign in' has waited 5 hours.
Alternatives considered
- Email the owner. Every owner has email and the app already has SMTP, but a reply's sender is easy to fake, and parsing a quoted reply is fragile. That isn't good enough for approvals.
- Slack DM. Inbound Slack already exists (
src/main/slack.ts), but it needs a tunnel and a public endpoint, and most small business owners don't use Slack. It's a good second transport behind the same interface. - WhatsApp or SMS. These need a Meta business account or a paid SMS provider. Later transports.
- A web companion through a tunnel. It opens a public surface and adds a second UI to keep up. SPEC.md also lists a web or mobile companion as out of scope for v1.
- Do nothing until the pilot. Phase 0 is exactly that measurement, built in so every office has the number.
Area
The hive (memory, routing, GOD agent)
Pre-flight
- I attached a screenshot, mockup or recording above.
- I searched existing issues and discussions, and this isn't a duplicate.
- Dominant language
- TypeScript
- Stars
- 273
- Forks
- 211
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 316
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from agentvivekkumar/dontbemichael
-
Windows: a hidden Claude call cannot start when the CLI path has a spacePossibly taken @theshloksschauhan claimed this 10 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
agentvivekkumar/dontbemichael#426 ·
Maintainers usually reply within 1 day
-
Raise Home and Manager setup text to the 14px floorPossibly taken @glenmiracle18 claimed this 10 days ago. Openbug os:windows
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
agentvivekkumar/dontbemichael#416 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 28/100
agentvivekkumar/dontbemichael#607 · 1 comment ·
Maintainers usually reply within 1 day
-
The router's loop guard never fires: nothing counts hopsPossibly taken @Vanshika25developer claimed this 3 days ago. Openos:linux
Difficulty 3/5 1-2 days Newbie friendliness 25/100
agentvivekkumar/dontbemichael#605 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 1/100
agentvivekkumar/dontbemichael#604 ·
Maintainers usually reply within 1 day
All issues in agentvivekkumar/dontbemichael
Similar issues
-
[Bug]: Device screenshot fails with 500 on iPhone Duo (Xcode 27.2): serve-sim calls simctl without --displayPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
pingdotgg/t3code#24900 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
inu-appcenter/UNIDorm-web#411 ·
Maintainers usually reply within 1 day
-
🐛 bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
ranxianglei/billion-context#4720 ·
Maintainers usually reply within 1 day
-
area:arcade game p3-medium ready-for-agent type:bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
fderuiter/deruiter.dev#2840 ·
Maintainers usually reply within 1 day