Skip to content

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.

bash
overseer journal context
overseer journal context --date 2026-08-18
overseer journal context --date 2026-08-18 --format json

What it gathers ​

SectionSourceWindow
calendarGoogle Calendar, all configured accountsthe whole day
commitsgit, across managed reposauthored that day by a configured git identity
mrsGitLab / GitHubmerged that day, plus MRs opened that day and still open
jiraJiraissues assigned to you and updated that day
slackSlackmessages that day mentioning you or a watched usergroup
worklogoverseer claude worklogClaude Code sessions captured that day
learninglearning databaseentries 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:

  1. The SessionEnd hook captures each Claude Code session as it ends.
  2. At the end of the day, journal context assembles the full picture.
  3. An assistant merges that into the Obsidian daily note.