What the diary keeps

Who made each change, when they worked, which body of work it belonged to, and what waits on you. Each part is shown below with an example day.

A name on every change

Commits, pull requests and reviews come from GitHub with the person who made them. Agents report their own runs with a run key. Cast keeps every name and says how it knows each one.

  • “That is me” claims a stray name, such as a GitHub no-reply email, in one click.
  • Rename an agent, merge two names into one, and say who it works for.
  • A runtime is never mistaken for the agent. A PR Fixer run on Claude Code is PR Fixer’s run.

Cast

EveryonePeopleAgentsBots

Who is this?

[email protected]

9 commits on 3 days, not linked to anyone

That is meNot me

  • Codex EngineerAgent, works for you Run key ending 4f2a
  • PR FixerAgent, works for you Run key ending 91c0, runs on Claude Code
  • WrightAgent, works for you Its GitHub account, reviews only
  • MayaPerson, your teammate GitHub login, two emails
  • DependabotBot, kept to one Upkeep line dependabot[bot]

RenameWorks forMerge into another name

Sessions have participants

A session is one stretch of time and everyone who worked in it. Your sessions are inferred from your activity and never run past 16 hours. An agent’s run is declared: its start and end come from the run itself.

Each quantity is named for its participant: your minutes, each agent’s declared minutes, and the clock span. They are never added together.

13:30 to 15:40 Billing webhooks Clock span 2h 10m

You1h 55m, inferred from your activity

Codex Engineer1h 25m, declared by its run

Wright20m, declared by its run

PR #412 merged, 15:32
  • Merged PR #412 Retry with backoff
  • Open PR #418 Dead letter alerts

01:20 to 03:05 Fleet only Codex Engineer ran the nightly backfill, 1h 45m declared.

PR Fixer: 3 runs named no work between 04:45 and 05:40.

One stream, many PRs

A stream is one body of work across pull requests, repos, people, agents and days. Its works are the PRs, branches and issues inside it.

  • Rules place each new work by its ticket, branch or title.
  • Rename, merge or split a stream. A work you placed stays where you put it.
  • Bot bumps fold into one Upkeep line instead of a hundred rows.

Billing webhooks

Mon 20 to Thu 23 October, 2 repos, 2 people and 3 agents

BILL-88webhooks

RenameMergeSplit

  • Issue #88 Webhooks retry foreverapi, You
  • Branch bill-88-retry-queueworker, Codex Engineer
  • Merged PR #409 Rebase the retry queueworker, PR Fixer
  • Merged PR #412 Retry with backoffapi, Codex Engineer
  • Open PR #418 Dead letter alertsapi, Maya

Upkeep Dependabot, 14 bumps in 3 repos this week Show

Today, and every day before

Today fills in while it happens. Any past day opens the same way and reads as it happened: who worked when, in which session, on which stream. Move the time to read the day.

  • Youperson
  • Codex Engineeragent
  • Wrightagent
  • PR Fixeragent
  • Dependabotbot
14:20 You and Codex Engineer, on Billing webhooks and Cast roster. Codex Engineer wrote the roster filter tests.
An example day: you, three agents and a bot.

A briefing every morning

Ready at 8:00 in your own time zone. On weekdays it also comes by email. It opens with what needs you, then yesterday grouped by stream, then one line for each agent or bot that ran while you were away.

DevDiary, 08:00

Your briefing for Thursday 23 October

Two agents ran overnight. One PR waits on your review.

Needs you

  • PR #418 Dead letter alerts. Wright approved it; your review is the last one.Review
  • PR #415 Roster filter. Checks passed at 07:40.Merge

Yesterday, by stream

Billing webhooks
2 merged, 1 open
Cast roster
1 merged, 1 in review
Upkeep
3 bumps from Dependabot

6h 30m your time 4h 50m agent time, declared 3 merged +1,240 −380 lines

While you were away

  • Codex Engineer Ran the nightly backfill, 1h 45m declared.
  • PR Fixer Rebased PR #409 after a conflict.
  • Dependabot Bumped rack to 3.1.12.

Waiting on you

Every list opens with the tasks that wait on you, before any history. Capture a task in one line, snooze it to another day, or mark it done. When a task closes itself, it says so in plain words, and the evidence sits behind “Why?”.

Capture a task, or paste a PR linkCapture

Open 3Snoozed 1Done 12

  • Review PR #418 Dead letter alertsWright approved it two hours ago. Yours is the last review. ReviewSnoozeDone
  • Merge PR #415 Roster filterChecks passed at 07:40 and nobody asked for changes. MergeSnoozeDone
  • Answer Maya on the retry limitCaptured by you on Tuesday. ReplySnoozeDone
Closed itself: PR #409 merged, so “Rebase PR #409” is done.Why?

PR Fixer pushed a rebase at 04:38 and the PR merged at 04:52, which settles the task you captured on Monday.

See who did the work

Insights counts your workspace by person and agent: time, merges and lines changed, how pull requests flow, and when you focus.

Who did the work Last 14 days, hours a day TimeMergesLines
Your time
54h 30m
Agent time, declared
80h 30m
Merged
31
Lines changed
+12,480 −4,310

YouAgents

Pull request flow Last 30 days

38 opened31 merged3 closed4 still open

4h 10m median from open to merge, 1d 6h at the 90th percentile

Your focus by hour summed over the last 30 days
Mon Tue Wed Thu Fri Sat Sun 0246810121416182022
Agents Last 30 days
AgentRunsDid workTime
Codex Engineer21417162h 10m
PR Fixer964118h 40m
WrightNone58 reviewsGitHub only

A run did work when it named a work. The rest show as one quiet line.

What did Codex Engineer ship last week?

Codex Engineer merged three PRs last week, in two streams.

PR #412 Retry with backoffPR #233 The new tokenizerPR #405 Signed webhook payloadsStream: Billing webhooksStream: Search index

Where did my Tuesday go?

You worked 6h 30m in three sessions: 2h 30m on Billing webhooks in the morning, 2h 10m with Codex Engineer and Wright on PR #412, and 1h 50m on Cast roster.

Session 09:10 to 11:40Session 13:30 to 15:40Session 16:20 to 18:10

What is still open on Billing webhooks?

One work: PR #418 Dead letter alerts. It opened on Thursday and waits on your review.

PR #418 Dead letter alertsStream: Billing webhooks

Ask your diaryEnter

Ask your diary

Ask in plain words. Answers come from your sessions, works and streams, and each one links to the pages it was read from. Pick a question to see an answer from the example day.

Chat over your diary is part of Pro.

Questions

Agents Which agents work with DevDiary?

Any agent that can send a run report. Claude Code, Codex, Paperclip agents, a shell script or a CI job each get a run key. Agents that only act through GitHub, like review bots, are recognised by their account.

Time How do you count my time and an agent’s time?

Your minutes come from sessions DevDiary infers from your activity, and a session never runs past 16 hours. An agent’s minutes come only from the start and end its run declares. The two are never added together.

Names What if DevDiary puts the wrong name on a change?

Open Cast. It lists the names it saw but cannot place, and one click says “That is me”. You can rename an agent, say who it works for, or merge two names into one.

Your data What does DevDiary read?

Activity, not your editor. Commits, pull requests, reviews and their line counts come from the GitHub App on the repos you choose. Agents send the start, the end and the works they touched.

Connect GitHub and today’s page starts to fill in.

Start