journal
Collect everything overseer knows about one day, so an assistant can turn it into a daily note. This command only gathers — it writes nothing and produces no prose. The note itself is written by the assistant, which can take corrections and fold in meeting notes that no API knows about.
overseer journal context
overseer journal context --date 2026-08-18
overseer journal context --date 2026-08-18 --format jsonWhat it gathers
| Section | Source | Window |
|---|---|---|
calendar | Google Calendar, all configured accounts | the whole day |
commits | git, across managed repos | authored that day by a configured git identity |
mrs | GitLab / GitHub | merged that day, plus MRs opened that day and still open |
jira | Jira | issues assigned to you and updated that day |
slack | Slack | messages that day mentioning you or a watched usergroup |
worklog | overseer claude worklog | Claude Code sessions captured that day |
learning | learning database | entries added that day |
Slack is the only source that carries what was agreed with other people — a decision made in a thread leaves no commit and no Jira transition behind.
It also resolves note_path — where the day's note lives in the vault — and note_exists, so the caller knows whether to create or merge.
Degrading rather than failing
Every remote source runs concurrently under its own deadline, and a source that fails contributes a line to warnings instead of failing the command. A stale calendar token still leaves you with commits, MRs and sessions.
Slack mentions
Mentions come from the Search API when the workspace has a user_token configured, scoped with on:<date>; otherwise they come from scanning the channels the bot has joined, bounded to the day. Each mention carries its channel, author, text, permalink and time.
Direct messages are flagged with direct: true. Slack returns the counterpart's user ID rather than a name for those, so overseer resolves it through users.info — which needs the users:read scope on the token. Without that scope the resolution fails quietly and the ID is reported as-is.
Only messages that mention you are gathered. Your own replies are not, so a mention is evidence a conversation happened, not a transcript of it.
Why merge requests are queried per project
The instance-wide merged-MR search (scope=created_by_me) is expensive enough that gitlab.com answers it with 408 Request Timeout for accounts with many projects. journal context instead resolves the GitLab project of each repo that actually saw activity that day — from commits and from session working directories — and queries those projects directly. That keeps the fan-out to a handful of fast requests. When no local repo maps to an instance, it falls back to the instance-wide search.
Feeding the daily note
Pair with overseer claude worklog for session capture. The intended flow is:
- The
SessionEndhook captures each Claude Code session as it ends. - At the end of the day,
journal contextassembles the full picture. - An assistant merges that into the Obsidian daily note.