Skip to content
Back

Morning brief

Personal AI agent · Apr to Aug 2026

Not a summary waiting for me every morning. I wanted to wake up and pick up whatever I left unfinished the day before. The summary was the means.

I wanted to continue, not to read.

The first version lived in my notes vault. A script on my Mac gathered the state overnight and left a markdown file there before I woke up.

The writing was not the point. The links were. Every unfinished project in that file was a link, and clicking one opened a terminal in that project. Reading about the work and starting the work were one click apart. I never had to decide where to begin. Beginning was the same gesture as reading.

2026-04-15 · daily-brief
DAILY
2026-04-13
2026-04-14
2026-04-15
Daily / 2026-04-15
Morning Brief
Unfinished
[[portfolio2026]][[job-search]]
0 backlinks198 words
portfolio2026 · zsh
~/Code/portfolio2026 %
Obsidian, April 2026. Sample content. The real briefs stay private.

It could not answer. It was a document. I read it and it was over. When it got something wrong there was nowhere to put the question. And it only existed when I was at my Mac with the vault open.

Then I saw the other half somewhere else. An agent living in a Slack channel, answering back, picking up where it left off. Someone read the morning message, asked a follow up, kept going in the same thread. It had the thing Obsidian never had.

Channels# daily-brief# general
# daily-brief
agent 7:40 AM
three things today
you 8:02 AM
what did I leave off yesterday?
agent 8:02 AM
portfolio2026, 29 files uncommitted
Not my system. This is what I was looking at when I worked out that I wanted both halves.

I didn’t take it. The person using it wasn’t paying for it. The tokens were sponsored. So the enthusiasm I was watching wasn’t evidence the tool was good. It was evidence the tool was free. At this stage I’m not paying for an agent that already looks like it’s on its way out.

I kept the shape though. Two things I wanted. Two working examples, each with exactly one of them.

Two axes: whether a brief can be acted on, and whether it can be talked toThe Slack agent sits high on talking and low on acting. Obsidian sits high on acting and low on talking. The corner where both are high is empty.can act on itcan keep talkingSlack agentObsidian

So I built my own.

Four jobs run on my Mac before 7:20. One walks my repos and writes down what I left uncommitted. One reads yesterday’s transcripts and works out where the day went. One clears expired items out of my plans file. Mondays get a fourth, a scan for whatever tool is worth a look. Everything they write lands in a private repo.

At 7:40 a scheduled Claude Code run picks up those four files, reads my calendar, reads the last twenty four hours of mail, throws out the marketing, and writes the brief. Then it pushes the whole thing to my phone.

git status across ~/Code
work-state.sh · 7:15
yesterday's transcripts
daily-usage.sh · 7:00
things I said I'd do
PLANS.md, by hand · pruned 7:20
new tools worth a look
Mondays · 7:00
STATE.mdUSAGE.mdPLANS.mdSKILLS.md
Claude Code routine
opus-5 · new session each run
read live, never stale
Google CalendarGmail, last 24hbulk marketing to trash
push to my phone
no path back to the Mac

The two sides of that diagram do not behave the same. Calendar and mail get read live at 7:40, so they are never stale. Everything my Mac makes has to go through GitHub first. My Mac sleeps. So some mornings the brief quotes yesterday’s numbers and says nothing about it, and I do not notice, because a brief full of slightly old facts still looks like a brief.

It reaches me better than the other two. It runs while my Mac is asleep. It arrives before I open a laptop.

Three versions in, this is the one I still run.

And it has neither of the two things I started out wanting. A push notification cannot open a terminal. Every run starts a new session, so there is nothing to reply to.

CLAUDE7:40 AM
8/13 Wed: 3 things today
2 emails waiting on you
nothing opens

It is better than the other two, and further from what I wanted.

Reading and starting used to be one click apart. Now they are a laptop, a lid, and a decision apart. Whatever fixes this has to run on the machine where the work is, because a notification on a phone can never open the thing it is telling me about. I have not built that yet.