Start the day knowing what comes first.

Every morning, an agent reads your calendar, mail, pull requests and tickets, then writes a short brief that ranks the day against the one thing you’re trying to finish. Daily Focus runs on your own computer, in a tab you keep pinned.

npx daily-focus
Download for Mac

Free and open source. Setup asks a few questions, with the likely answers already ticked.

Morning agent · scheduled · finished

Run today at 07:00

Wrote 16 items for today, 3 with a priority. Alice’s review on webapp#3421 is the one that moves the objective, and 12:00–15:00 is the only block long enough for it.

Dropped as handled: 3, including the Lisbon hotel thread you marked done yesterday.

Could not reach: the Platform team meeting notes, which returned 403 to the connector. If Tuesday’s meeting left you action items, they are not here.

How it got there, in 29 steps, with 5 subagents
  • Calendar 6 events today, 2 that clash
  • Gmail 14 new threads, 3 waiting on you
  • GitHub 12 open pull requests, 3 waiting on you
  • Jira 6 tickets in flight, 1 out of step
  • Slack 1 direct question, unanswered

Current objective

Launch gift cards in the storefront before the holiday sale starts

Blocked on: the balance rounding fix in webapp#3421 is still waiting on review

Since objective progress
2 days
Focus time left
2 h 20 min
Needs action
12
Overdue
0
Cleared today
2

Two things are genuinely time-boxed today: the compliance training, due tonight, and the Lisbon fare that expires at 17:00. Alice’s review request on webapp#3421 is the one thing here that moves the objective, and 12:00–15:00 is your only real focus block for it.

Sample data throughout this page: the objective, the people and the pull requests are invented.

Pick the first thing.

Your top priorities sit beside the day’s agenda. Meetings that clash are flagged, free time for focused work is counted, and the brief says why each item made the list and how long it has been waiting.

Top priorities 3

  1. 1

    Complete annual security & compliance training

    Workdaydue today6 days on the listdeadline

    Workday has sent three reminders. Due end of day; after that it escalates to your manager.

  2. 2

    acme/webapp Review requested: Fix rounding in gift card balances

    GitHub@aliceobjective2 days on the listreview-requested

    Alice asked you directly 2 days ago; nobody else has looked. Merging this is what lets gift cards go live in staging.

  3. 3

    Re: Q4 headcount plan — Bob is waiting on your input

    Emailbob@acme.example3 days on the list

    They asked for the team split on Monday and followed up yesterday. Nothing sent back yet.

Agenda

  1. Webapp standupuntil 09:45
  2. Free, 1 h 15 minuntil 11:00
  3. 1:1 with Aliceclashes with another event
  4. Design review: order history v2clashes with another event
  5. Free, 3 huntil 15:00
  6. Lunch & learn: accessibility testingoptional, marked free
  7. Platform ↔ Infra syncuntil 16:00
  8. Free, 1 huntil 17:00

A review comes in, and the card already says what it means.

The pull request board sorts what you have open into seven buckets, from Waiting on you to Drafts, and keeps them current through the day. Turn on Answer ahead and the assistant reads each new review or failed check first, then puts its verdict on the card: is the reviewer right, is the failure yours.

Waiting on you 2

  • acme/webapp#3398 Retry failed payment webhooks with backoff

    opened 4 days agolast touched by @dana, 4 h ago

    @dana commented 4 h ago

    Dana is right: the backoff never resets after a delivery succeeds.

  • acme/webapp#3402 Show the currency on order confirmation emails

    opened 25 h agolast touched by you, 4 h agoCI failing

    CI failing: unit-tests (node-20)

    Yours, not flaky: refunds skip the new currency field.

  • Ready to merge 1
  • Waiting on reviewers 2
  • Waiting on merge gate 1
  • Merge blocked by GitHub 1
  • Waiting on checks 1
  • Drafts 2

Ask, instead of opening six tabs.

Open any item and ask about it. The assistant runs your AI coding tool against that one item, shows each thread it reads and each command it runs, then folds that trail away under its answer.

It reads, and it drafts. A reply to an email waits as a Gmail draft on the thread, for you to send. It never sends, posts, or edits anything itself.

Email

Re: Q4 headcount plan — Bob is waiting on your input

Assistant

Draft a reply · 38 min ago

Worked for 64 s · 4 steps
  • Gmail: get thread
  • Gmail: search threads Q4 planning doc headcount
  • Bob wants numbers per team with a reason each. The planning doc has both.
  • Gmail: create draft

He wants the Q4 team split: how many of the six open roles go to Platform and how many to Webapp, with a line of justification each, by the end of the week.

I have created a Gmail draft on the thread proposing four Platform and two Webapp, with the reasons from the planning doc. It is not sent; it is waiting on the thread when you open it.

Copy replyOpen draft

Ask a follow-up…

Press a quick action to replay what the assistant did for Mara. On your computer, it works on your own threads.

Catch tickets that fell out of step with the code.

The Jira board sets each ticket’s status beside its pull requests and flags the ones that disagree: merged work on a ticket still open, started work on a ticket that says it hasn’t begun. It checks GitHub too, because Jira can take days to hear about a merge.

Click a status to move the ticket. Nothing moves in Jira without that click.

No open pull requests left 2

  • PROJ-8842 Show the gift card balance at checkout

    In ReviewTask2 pull requests, both merged

  • PLAT-311 Remove the legacy cart API

    In ProgressTask

    GitHub, ahead of Jira: acme/infra#514 PLAT-311: drop the /v1/cart routes, merged 5 h ago

Tell tomorrow’s brief what happened.

Mark an item done, snooze it to a date, dismiss it, or leave a note like “already replied on Slack”. The next brief reads all of it, so tomorrow starts where today stopped.

Write up the repro steps for the gift card rounding bug

Tasksobjective4 days on the list

What it does with your day.

It runs on your computer
Daily Focus is an app on your own computer. Your day leaves it only through the AI coding tool you chose, Claude Code or Codex.
It uses the AI subscription you already pay for
Daily Focus runs Claude Code on any paid Claude plan, or Codex on ChatGPT Plus or higher, signed in as you. It has no account or subscription of its own.
It reads, and it drafts
The morning agent and the assistant read what they need and hand you the result: a ranked brief, an answer, or a Gmail draft waiting for you to send.
You can read every instruction
It’s MIT licensed, and if you’re curious what the agents are told to do, their prompts are in the repository.

Install it on your computer.

  • From a terminal

    npx daily-focus

    Opens the dashboard in your browser, on a setup screen that asks a few questions, one at a time, with the likely answer already ticked. Your AI coding tool looks into the rest, like which calendars are work ones. Needs Node.js 22.18 or newer.

  • On a Mac

    Download for Mac

    A menu bar app that starts the dashboard at login, shows how old the brief is, and tells you when a new one arrives. Node.js comes with it. Needs Apple silicon and macOS 13.5 or newer.

Either way, you need Claude Code on a paid Claude plan, or Codex on ChatGPT Plus or higher. GitHub, Jira and the macOS calendar are optional. The setup guide covers each step. To look around on invented data first, run npx daily-focus --demo.

Daily Focus About a minute left
  1. Codex writes your brief.Change
  2. It briefs your work.Change
  3. It runs at 07:30 on weekdays.Change
  4. You’re Mara Lindqvist, mara@acme.example, mara-l on GitHub.Change
  5. It shows your pull requests and your Jira tickets.Change
  6. Which calendars belong in your work brief?

    Your standups and 1:1s are on Work and Platform team. Lunch roulette looks social.

    • Work mara@acme.example
    • Platform team
    • Lunch roulette
    • Holidays in Denmark holidays
    Continue
  7. Then your objective, and your first brief.
The setup screen, with Mara’s answers. Each one comes already ticked; you confirm it or change it.
Thomas Watson

Made by one person.

I’m Thomas Watson. I build Daily Focus on my own, in the open, and I use it every day. There’s no company behind it, no investors, and nothing to sign up for.

If it earns a place in your mornings, you can sponsor the work on GitHub.

Sponsor on GitHub