Sisyphus
A Teams assistant that answers messages while I am away.
Sisyphus watches Microsoft Teams chats on a dedicated Mac, drafts replies with an AI model, and can send them once allowed. It drives the Teams desktop app through macOS accessibility rather than any Microsoft API, so there is nothing to register and nothing for a tenant admin to approve. By default it only writes drafts for review.

How it works
- 01
It types into Teams the way accessibility tools do. Testing showed this triggers the app's full input pipeline and works while Teams is in the background, where setting the text field directly changed the screen but left the app unaware.
- 02
Every Teams message id ends in a millisecond timestamp, so “what is new” is a number comparison rather than a diff.
- 03
Replies go out under the user's own account, so its messages come back looking like a person's. Three independent guards stop it answering itself, with their own test suite.
- 04
A small local model first decides whether a message needs a reply at all. Overnight, a sleep mode answers only when it is certain and otherwise sends a fixed standby message.
- 05
Sending has three modes — draft, allowlist and auto — with a per-conversation hourly cap, and every reply is signed as coming from the assistant.
Built with
- TypeScript
- Node.js
- Swift
- macOS Accessibility
- launchd
- DeepSeek
- Ollama
Status
Reading and draft replies work; fully automatic sending is being finished.
Worth knowing
- Walking the whole Teams interface, 40 levels deep, takes 0.19 seconds.
- The domain layer survived a complete change of transport, from Microsoft's Bot Framework to accessibility, without changes.

