> ## Documentation Index
> Fetch the complete documentation index at: https://meridiona-mintlify-e924e586.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitor Your Activity in the Meridian Local Dashboard

> Explore the local web dashboard that shows your active session, focus time, category breakdown, and full day timeline, updated in real time as you work.

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's organised as three layers of detail — overview, zoom, then details-on-demand — so the default view stays calm and you pull in more depth only when you want it.

#### Layer 1 — Today at a glance

The top of the page leads with a single sentence summarising the day so far — for example, *"3h 12m focused, 28% of it alongside Claude — plus 24m of autonomous agent work while you were away."* Autonomous work and fragmented days are only mentioned when they're notable, so the headline stays meaningful.

Directly beneath, the **DayTimeline** shows the entire day as two aligned tracks:

* **Presence track** — solid where you were active at the keyboard, faint where you were idle or away.
* **Agent band** — a strip beneath the presence track, solid where a coding agent (Claude Code, Codex) was engaged.

Overlap is shown rather than summed. Wherever the agent band sits **under an active stretch**, that time was **supervised** (the agent ran while you were working). Wherever it sits **under an idle stretch**, that time was **autonomous** (the agent ran while you were away). Hover any block to see its exact start time, end time, and duration.

#### Layer 2 — TodayMetrics

Below the timeline, a row of three headline numbers gives you the day in one glance:

| Metric          | Meaning                                                                                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Focus**       | Total time you were active at the keyboard today.                                                                                                                                               |
| **AI-assisted** | The share of your focus time that overlapped with an engaged coding agent — i.e. supervised agent time as a percentage of focus.                                                                |
| **Switches**    | Count of foreground app changes today. Brief sub-15-second window flicker is filtered out, so this reflects real context shifts rather than capture noise. Lower numbers indicate deeper focus. |

#### Layer 3 — Details on demand

Each metric tile is a button. Click one to expand a panel underneath with the full breakdown:

* **Focus** expands into Active, Idle / away, and AI-assisted time.
* **AI-assisted** expands into Supervised (agent ran while you were active), Autonomous (agent ran while you were away), and Agent total.
* **Switches** expands into the raw context-switch count and an explanation of the 15-second flicker filter.

Click the same tile again to collapse the panel. Only one panel is open at a time, so the page never clogs.

#### Active session, totals strip, and tasks

The rest of the page contains:

<CardGroup cols={2}>
  <Card title="Active Session Card" icon="circle-dot">
    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).
  </Card>

  <Card title="Totals strip" icon="chart-bar">
    A four-tile summary below TodayMetrics: Focus, Idle, **Coding agent** (Claude Code / Codex time, shown as a share of focus), and Switches.
  </Card>

  <Card title="Task buckets" icon="layer-group">
    Today's sessions grouped by the task key Meridian classified them under, so you can see how time split across tickets and projects.
  </Card>

  <Card title="Category Breakdown" icon="chart-pie">
    A horizontal bar chart showing how your focus time is distributed across activity categories. Each bar is color-coded to match the timeline above.
  </Card>
</CardGroup>

<Note>
  **Coding-agent time is never summed into Focus.** Supervised agent time is a *subset* of focus — the AI-assisted slice — and autonomous agent time sits entirely outside focus (because you were idle). The TodayMetrics row and the totals strip both surface coding-agent time as a share of focus rather than an additive total, so the numbers never read as more wall-clock than actually elapsed.
</Note>

### 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.

## 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:

| Category            | Description                                            |
| ------------------- | ------------------------------------------------------ |
| `coding`            | Active development in an editor or IDE                 |
| `code_review`       | Pull request review, diff reading                      |
| `meeting`           | Video calls, conferencing apps                         |
| `communication`     | Messaging, email                                       |
| `design`            | Design tools such as Figma                             |
| `documentation`     | Writing docs, wikis, notes                             |
| `planning`          | Roadmapping, ticket grooming, project management tools |
| `deployment_devops` | CI/CD, terminal, infrastructure work                   |
| `research`          | Browser research, reading                              |
| `idle_personal`     | Idle periods or non-work apps                          |

## Logs and maintenance

To tail the dashboard's log output:

```bash theme={null}
meridian logs ui
```

If you've pulled an update to the repository and want to rebuild the dashboard with the latest changes:

```bash theme={null}
cd ui && npm run build
```

Then restart Meridian to pick up the new build:

```bash theme={null}
meridian restart
```

<Note>
  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.
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="http://localhost:3000 returns an error or doesn't load">
    Check that the UI service is running:

    ```bash theme={null}
    meridian status
    ```

    If the UI service is not listed as running, restart all services:

    ```bash theme={null}
    meridian restart
    ```

    Then tail the UI log to see any startup errors:

    ```bash theme={null}
    meridian logs ui
    ```
  </Accordion>

  <Accordion title="The active session card shows stale data">
    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`.
  </Accordion>

  <Accordion title="The dashboard was installed without the UI (--no-ui flag)">
    If you ran `./install.sh --no-ui`, the dashboard was not built. Build and register it now:

    ```bash theme={null}
    cd ui && npm run build
    meridian restart
    ```
  </Accordion>
</AccordionGroup>
