
Pupitre Hub
Work hub
Your work tools, watched.
Pupitre Hub brings together what happens in your work tools: its watchers keep an eye on your back-ends and tell you what matters, it reads the Slack channels you choose and posts there under strict rules, reads your Google Calendar and sums up the day. Nothing is called before you turn it on, and nothing leaves without a rule you set.
Watching
Watchers on your back-ends.
Watchers
Monitoring, Dev brief, Security, QA or blank, grouped by project. Everything starts off.
Probes and rules
A health endpoint or any address, with its API key in the keychain; rules on a status, a field of the answer, a change, a restart, slowness, no answer, or the model reading the answer. Tried on the last answer before they are turned on.
Being told
The watcher’s feed, a notification, or a message in a Slack channel, as the app or as you, within hourly and daily caps.
Even with the app closed
The watchers carry on from login; a global pause stops every call and every message; the journal says everything that is called, decided and sent.
The day
Slack, the calendar, the brief.
Slack read
Your Slack account, its token in the keychain: the channels each project chooses and their threads; private channels and direct messages only if you allow it. Read again every ten minutes.
Your Google Calendar
Connected in one click, read only: the day’s meetings in the brief.
The brief of the day
What is still open, production, what shipped, the meetings, today’s focus, each item with its source; written by the model you chose, or by Pupitre alone. On a click, or every day at the time you choose, and in a Slack channel if you turn it on.
Ask
A conversation about everything or one project, with tools that only read: the watchers, their feeds, the journal, Slack.
The assistant
A model that reads, rules that decide.
The assistant is off by default. It reads a probe’s answer when a rule asks it to, writes the brief, answers in Ask; its tools only read, and what it reads (an answer, a Slack message) is data, never an instruction. What goes to Slack goes through your rules, within their caps.
On the Mac, with Apple’s model
The brief and the rules read with nothing leaving the Mac (with Apple Intelligence).
Without a model too
With no model ready, Pupitre writes the brief itself, and nothing leaves.
Models you can use
- Apple’s on-device model
- Ollama and LM Studio, on your computer
- Claude through Claude Code, with your Claude plan (no API key)
- Claude, with your API key
Not yet: GitHub and GitLab, the brief read aloud, the link with the family’s other apps.
Privacy
What it sends, and to whom
Everything that leaves the app, and nothing else.
- Your back-ends
- Each probe’s call, with its API key in the header you chose
- At the probe’s frequency once turned on, or on your click on “Call now”
- Slack
- Reading the chosen channels, with your token; your rules' messages and the brief, to the chosen channel and no other (through a webhook, or as you)
- At sign-in, then every ten minutes; a message when a rule you turned on decides it, within its caps, or on your click
- Signing in to your account, then reading your calendars, read only; the tokens stay in the keychain
- On your click on “Sign in with Google”; the calendar when the brief is made
- Anthropic (Claude API)
- A probe’s answer (8,000 characters at most) and your instructions, your questions, what Ask’s tools read, the Slack messages read for the brief
- Only with Claude and your key (no provider by default)
- Claude Code
- The claude installed on your machine, with its own sign-in and your Claude plan
- If you choose it as the engine
- Your computer only
- Ollama, LM Studio and Apple’s model answer without anything leaving
- With a local model
- No one else
- No telemetry, no account, no background updates
- Never
Where it stands
First version
First version: watchers, Slack, Google Calendar and the brief. Downloads will come with signed and notarized builds.
Systems
macOS · Windows · Linux
macOS first; Windows and Linux from the same code.




