← Blog Mac Productivity

Build a Personal Mac Dashboard With Claude Code

By FavTray ·

Written by the team behind FavTray, a Mac developer dashboard for the menu bar. Every app reviewed here is tested on our own Macs.

Short answer: decide which five or six numbers you actually check, point Claude Code or Codex at where they come from, and ask it to “make this an artifact in FavTray with sourceKey me:weekly”. The FavTray Skill writes one JSON file; click Import and FavTray Artifacts draws it as a native dashboard on your Mac. To refresh it, ask again with the same sourceKey, and FavTray replaces it in place.

TL;DR

  • Pick the numbers first. A personal dashboard is five to eight things you’d otherwise look up.
  • Let the agent do the plumbing. Claude Code or Codex reads your exports and APIs; the FavTray Skill turns the result into stat cards, tables and charts.
  • It lives on your Mac. One JSON file, drawn natively, open any time from the menu bar, even offline.
  • Refresh with one sentence. The same sourceKey replaces the artifact with fresh data. Nothing polls in the background.

What should a personal dashboard show?

The dashboards people actually keep opening have a few things in common:

  • Few numbers. Three to five headline stats, each with a change since last time.
  • One trend. A line or bar over time for the number you care most about.
  • One breakdown. Where the total comes from: a donut, a treemap or a sorted table.
  • One list of next steps. A checklist you tick off as you go.

Good first dashboards:

  • Me, this week: AI spend, hours in meetings, PRs merged, workouts done.
  • Money: holdings from a broker export, gains and losses coloured by sign, a treemap of weights.
  • Side project: downloads, sign-ups, revenue, a visit-to-purchase funnel.
  • Work: sprint status with progress rings and the next milestones.

How do I build it with Claude Code or Codex?

  1. Install FavTray and the skill. In FavTray, open Settings › Skills and click Install. FavTray copies the FavTray Skill into Claude Code’s and Codex’s skills folders. The skill is part of Pro.

  2. Collect the sources. Put the exports in one folder, for example ~/Dashboards/me/, or tell the agent which commands or APIs to use.

  3. Ask for the dashboard. Be specific about what you want to see:

    Read the CSVs in ~/Dashboards/me. Make this an artifact in FavTray called “Me, this week” with sourceKey me:weekly. Stat cards for AI spend, meeting hours, PRs merged and workouts, each with the change from last week. A line of AI spend by day, a donut of spend by provider, and a checklist of three things for next week.

  4. The skill writes and checks the file. It picks the blocks, writes one favtray-artifact/1 JSON file, runs its validator until it passes, and places the file in FavTray’s Import inbox.

  5. Click Import. The Artifacts screen shows a banner. After you click Import, the dashboard opens as a canvas on a 12-column grid.

If you’d rather not use an agent, New artifact gives you a blank canvas, and Add block adds stat cards, tables, charts, progress, timelines and text by hand.

What does the file look like?

A trimmed example, with sample numbers:

{
  "schema": "favtray-artifact/1",
  "id": "art_me7wk2q9x1b0",
  "title": "Me, this week",
  "sourceKey": "me:weekly",
  "layout": { "columns": 12 },
  "blocks": [
    { "id": "kpis", "type": "stats", "items": [
      { "label": "AI spend", "value": 41.2, "format": "currency", "currency": "USD", "deltaPercent": -12 },
      { "label": "Meeting hours", "value": 9.5, "format": "number", "deltaPercent": 8 } ] },
    { "id": "spend", "type": "table", "span": 6, "totals": "auto", "columns": [
      { "key": "provider", "label": "Provider", "format": "text" },
      { "key": "usd", "label": "Spend", "format": "currency", "currency": "USD" } ],
      "rows": [ { "provider": "Claude", "usd": 28.4 }, { "provider": "OpenAI", "usd": 12.8 } ] },
    { "id": "share", "type": "chart", "span": 6, "kind": "donut", "title": "By provider",
      "from": { "block": "spend", "label": "provider", "value": "usd" } }
  ]
}

The donut reads its data from the table, so they always agree. You never need to write this by hand; the skill knows the schema.

How do I keep it up to date?

The sourceKey is what makes it your dashboard rather than a new file every week.

  1. Ask again, with the same key: “Refresh my me:weekly artifact from the latest CSVs.”
  2. Click Import. FavTray finds the artifact with that sourceKey and replaces it in place: same id, same file, same spot in your gallery.

A few things worth knowing:

  • It updates when your agent runs, not on a timer. FavTray doesn’t connect to your broker, calendar or APIs itself. That keeps it simple and keeps your credentials with the tools that already have them.
  • Save the prompt. Put the refresh prompt in a Claude Code custom command or a note, so a refresh is one line each Monday.
  • Edits to the file show up. FavTray watches the Artifacts folder and redraws an artifact if its JSON file changes on disk.
  • Replacing means replacing. A refresh brings in the agent’s new version of the whole artifact. If you rearranged blocks in FavTray, mention the layout you want in the prompt so the next version keeps it.

What can I do with it in FavTray?

  • Edit: drag blocks by their grip, resize from 1 to 12 columns, rename, hide table columns, switch a chart’s kind, add or delete blocks.
  • Filter: a heading chip can filter a table, and its totals and charts follow.
  • Hover: every chart shows exact values on hover, or with the arrow keys.
  • Tick: checklist ticks save to the file.
  • Share a copy: Share › Export HTML… writes one self-contained file that opens in any browser.

It sits in the same menu bar app as AI Usage, GitHub and Ports, so your own numbers are one click from the ones FavTray already tracks.

Where else could a personal dashboard live?

FavTray isn’t the only option, and it’s not always the right one. For data you type and calculate, Numbers or Excel suit better; for notes, Obsidian; for a team, Notion or Google Sheets; for live server metrics, Grafana. The best ways to build a personal dashboard on Mac goes through each. If your dashboard started as a Claude artifact, see how to save a Claude artifact locally on your Mac.

What does it cost?

FavTray Free makes up to 2 artifacts by hand. Pro, a one-time Lifetime license for one Mac, makes unlimited artifacts and includes the FavTray Skill and Import. The skill and Import aren’t part of the 7-day trial; the trial covers everything else.

Frequently Asked Questions

Can Claude Code build a personal dashboard on my Mac?

Yes. With FavTray installed, add the FavTray Skill from Settings › Skills, then ask Claude Code or Codex to "make this an artifact in FavTray" with your data. The skill writes one JSON file and FavTray draws it natively as stat cards, tables and charts that stay on your Mac.

How do I keep the dashboard up to date?

Give it a stable sourceKey the first time, such as me:weekly. When you want fresh numbers, ask Claude Code or Codex for it again with the same key and click Import in FavTray. FavTray replaces the artifact in place, keeping its id, file and layout slot. It doesn't fetch data on a timer.

What data can a personal dashboard use?

Anything Claude Code or Codex can read: CSV and JSON exports, API responses, logs, a git history, notes and plans. Only the finished dashboard is saved in FavTray; the source data stays wherever it was.

Do I need to write code?

No. You describe what you want to see and the FavTray Skill writes and validates the file. After import you can rearrange the dashboard in FavTray's Edit mode by dragging and resizing blocks.

Does it work offline?

Yes. Each artifact is a file in ~/.config/FavTray/Artifacts and FavTray draws it with native views, so it opens with no connection. Only refreshing it needs your agent, and whatever data sources your agent reads.

Something new: My Dock Buddies