Sources
A source contributes to a day. Some give commits, some give tasks, some give the activities that make a day of meetings or firefighting count as work.
What each one gives you
| Source | Gives you | Auth |
|---|---|---|
| GitHub | Commits, PRs opened, reviews left, issues closed | OAuth or personal access token |
| GitLab | Commits, merge requests — cloud or self-managed | Personal access token |
| Bitbucket | Commits, merged pull requests | Username + app password + workspace |
| Azure DevOps | Commits, work items | Organization + project + PAT |
| Jira | Assigned issues as tasks; resolutions as activity | Site URL + email + API token |
| Linear | Assigned issues as tasks; completions as activity | Personal API key |
| GitHub Issues | Assigned issues as tasks | Personal access token |
| Google Calendar | Meetings attended, with duration | Access token (calendar.readonly) |
| Outlook Calendar | The same, via Microsoft Graph | Graph access token |
| Sentry | Incidents you resolved | Auth token + organization slug |
| Any tool | Activities pushed in over HTTP | API key |
Everything is configured under Integrations. Each connector has a Test button that verifies the credential without importing anything and shows the provider's own message when it fails.
GitHub and GitLab
Signing in with GitHub connects it. Public and private repositories are discovered automatically; use Settings → Repository rules to exclude any. Beyond commits, Devlog imports the pull requests you opened, the reviews you left on others' PRs, and the issues you closed, so a day spent reviewing is not an empty day.
GitLab takes a personal access token and an optional host for self-managed instances. Merge requests are imported the same way PRs are.
Issue trackers and the task link
Jira, Linear, GitHub Issues and Azure DevOps import the issues assigned to you as Devlog tasks. Issue keys shaped like DEV-42 are exactly what the commit scanner looks for, so a developer who already writes the key in commit messages gets the link for free. GitHub issue numbers and Azure work-item ids are bare integers, so those connectors synthesise a key of the same shape (API-42, ADO-118).
Imported tasks land in a holding project per connector and can be moved into a real project afterwards. Re-syncing updates rather than duplicates: the identity is the origin system's id, not the key, so renaming an issue in Jira does not create a second copy.
Calendars and monitoring
Google Calendar and Outlook import the meetings you attended, with their duration, as activities. Sentry imports the incidents you resolved. Neither produces a commit, and both used to read as idle time.
Days are wall-clock where you are: every connector receives your timezone and a meeting at 01:00 belongs to that day, not the previous one.
Work with no source at all
From Daily Work, log a meeting, a pairing session, planning or on-call by form — or type a sentence like “spent the morning on the incident and then reviewed two PRs” and let the model turn it into dated draft entries. Dictation uses the browser's own speech recognition, so no audio leaves your machine; Firefox lacks it and hides the control rather than offering something broken.
The parser never does date arithmetic. It is given today's date and asked for absolute dates, every date it returns is checked against a bounded window, and a guessed date is flagged as guessed.
When a source fails
Every connector runs isolated and is capped at 25 seconds. A failure is recorded against that connection, shown on the Integrations page, and reported as a warning on the run rather than thrown. An expired Jira token costs you Jira, not your GitHub summary.