Skip to main content
Meridian includes a Next.js dashboard that gives you a live, browser-based view of everything the daemon is recording. It reads directly from ~/.meridian/meridian.db and updates in real time as new sessions are written — no refresh needed, no cloud sync required. Open it at any point during your day to see exactly how you’ve been spending your time, broken down by app, category, and minute.

Opening the dashboard

The dashboard starts automatically when you run meridian start and listens on port 3000. To open it, navigate to:
http://localhost:3000
Any browser works. You can keep it open as a background tab while you work.

Dashboard views

The dashboard has three main views accessible from the navigation bar.

Home

The home page (/) is your at-a-glance summary of the current workday. It contains four sections:

Active Session Card

Shows the app currently in focus, how long it has been active, and the top window titles seen in this session. Updates on each daemon poll cycle (every 60 seconds).

Daily Stats

Summarises today’s total focus time, idle time, and away (sleep) time alongside the total session count. Useful for a quick productivity pulse check.

Category Breakdown

A horizontal bar chart showing how your focus time is distributed across activity categories. Each bar is color-coded to match the timeline below.

Day Timeline

A scrollable, chronological view of every session today, rendered as color-coded segments. Idle gaps and system sleep periods appear as distinct visual breaks.

Sessions list

Navigate to /sessions to see every completed session for the current day, ordered newest-first with pagination. Each card shows the app name, start and end time, duration, top window titles, assigned category, and confidence score.

Apps view

Navigate to /apps to see all-time usage statistics aggregated by application: total time, session count, average session length, and the last time each app was seen. A focus donut chart at the top highlights your top apps by cumulative time.

Worklogs view

Navigate to /worklogs to review the worklogs Meridian has drafted from your classified sessions and decide which ones to post to your issue tracker. Nothing is sent to Jira, Linear, or GitHub until you approve it here — approval is the only gate, and there is no auto-post switch. The pipeline that feeds this view is identical for every supported tracker:
1

Draft (every hour)

The daemon walks the last hour of classified sessions, groups them by matched ticket, and asks the local MLX server to synthesise a short narrative for each task/hour bucket. Each row is written to pm_worklogs with status='draft' and a snapshot of which provider it should post to (Jira, Linear, or GitHub) — taken from the ticket’s pm_tasks.provider at draft time.
2

Review and edit

Open /worklogs. Every draft is shown with its ticket key, time window, rolled-up duration, the synthesised comment, and a provider badge so you can tell at a glance where it will land. Edit the comment text in-place if you want a different phrasing.
3

Approve

Click Approve. The row transitions to status='approved'. You can still un-approve before the next post cycle if you change your mind.
4

Post (within ~60s)

The daemon’s post loop picks up approved rows and dispatches each one based on its provider snapshot:
  • JiraPOST /rest/api/3/issue/{key}/worklog (native worklog, with Time Spent + comment).
  • LinearcommentCreate GraphQL mutation (structured comment on the issue).
  • GitHubPOST /repos/{owner}/{repo}/issues/{number}/comments (structured comment on the issue).
On success the row moves to status='posted' and the backend’s worklog or comment id is stored so the entry can be linked back. Worklogs are idempotent on (task_key, window_start, window_end) — re-running the pipeline never produces duplicates.
To see the day’s drafts without opening the browser:
meridian worklog-status
For the tracker-specific setup that this view depends on, see Jira, GitHub Issues, and Linear.

Activity categories

Meridian classifies each session into one of ten fixed categories. Each category has a distinct color used consistently across the timeline, the category breakdown chart, and every session card:
CategoryDescription
codingActive development in an editor or IDE
code_reviewPull request review, diff reading
meetingVideo calls, conferencing apps
communicationMessaging, email
designDesign tools such as Figma
documentationWriting docs, wikis, notes
planningRoadmapping, ticket grooming, project management tools
deployment_devopsCI/CD, terminal, infrastructure work
researchBrowser research, reading
idle_personalIdle periods or non-work apps

Logs and maintenance

To tail the dashboard’s log output:
meridian logs ui
If you’ve pulled an update to the repository and want to rebuild the dashboard with the latest changes:
cd ui && npm run build
Then restart Meridian to pick up the new build:
meridian restart
The dashboard reads directly from ~/.meridian/meridian.db. It does not make any network requests and does not send your activity data anywhere. All rendering happens locally in your browser.

Troubleshooting

Check that the UI service is running:
meridian status
If the UI service is not listed as running, restart all services:
meridian restart
Then tail the UI log to see any startup errors:
meridian logs ui
The daemon writes new data every 60 seconds (configurable via POLL_INTERVAL_SECS). If the card hasn’t updated in longer than a minute or two, check that the daemon is running with meridian status and review the daemon log with meridian logs.
If you ran ./install.sh --no-ui, the dashboard was not built. Build and register it now:
cd ui && npm run build
meridian restart