See where your day
actually went.
Weft lives in your menu bar and weaves the apps, windows and sites you use into the few threads of work you kept coming back to. Your coding agents' hours go on the same timeline. Everything is sorted on your Mac by Apple Intelligence, and none of it is ever sent anywhere.
Free and open sourcemacOS 26 or laterSigned and notarized by Apple
You don't do one thing at a time. Your time tracker shouldn't pretend you do.
You write code, check the docs, answer a message and go back to the code. Most trackers file that as a long list of app switches. Weft finds the thread running through it: the same kind of work within 30 minutes becomes one stream, short detours fold in, and streams that overlap sit side by side like events in a calendar.
A sentence for every stream
Each stream gets a one-line summary of what you actually did, written on your Mac by the on-device model.
Overlaps, side by side
A meeting in the middle of a coding session? Both show, in columns, the way your calendar does it.
Noise folded away
Streams under 10 minutes move to the Log, and idle stretches fold to a thin line, so the day stays readable.
Know how long your agents really worked.
Weft reads the logs Claude Code and Codex already keep on your Mac and measures each session's real working time. You see how long agents worked for you today, how many hours that adds up to across sessions, and how many ran at once. Every session sits on your timeline next to your own work.
Agent time today
When at least one agent was working for you.
Across all sessions
Two agents working in parallel for an hour add up to two hours.
Running in parallel
The most sessions working at the same time, out of 3 today.
Waiting on agents
Time away while they worked, added to your day.
Click any session
See how long it worked, over how many prompts, how long it waited for you, and what you did in the meantime.
- 1
Working time, not open sessions
A turn runs from your prompt to the agent's reply. The hours a session sits waiting for you never count, and neither do its pauses for your permission or answers. The bar is solid where the agent worked and faint where it waited.
- 2
Waiting on agents counts
Step away while an agent works and that time still counts towards your daily target, up to a limit you set. Your Focus Score stays about you alone.
- 3
Every machine you use
With HAPI, agents on your other machines show up too, and sessions Weft can already read here are never counted twice.
Weft keeps each session's title, project folder and working times. It never stores your prompts or the agent's replies.
Your day stays on your Mac. All of it.
There's no account to create, no server to sync with and no analytics to opt out of. Weft categorizes, summarizes and reviews your day with Apple's on-device model, and keeps your history in a folder you can open in Finder.
~/Library that you can open, export or deleteWhat Weft records
- The app in front
- Its window title
- The current tab's address, in supported browsers
- When your coding agents worked
What it never records
- Screenshots
- Keystrokes
- What's on your screen
- Your prompts, or what agents reply
What you control
- Stop recording window titles
- Keep only the domain of each URL
- Leave out apps and sites entirely
- Pause any time, export everything to CSV
Prefer a different model? Connect any OpenAI-compatible API in Settings → Model: OpenAI, OpenRouter, DeepSeek and others. A remote model receives the apps, sites and window titles Weft asks it to sort, and your daily totals for reviews. Point Weft at Ollama or LM Studio and even that stays on your Mac.
Feels like macOS. Barely touches your battery.
Weft is written in Swift and SwiftUI, so it looks, scrolls and behaves like the rest of your Mac. It doesn't poll your windows several times a second. It waits for macOS to say something changed, takes one look and goes back to sleep.
The whole app
No Electron and no bundled browser. The download is about 4 MB.
Event-driven
No polling loop. Weft wakes when the app, window or title changes, plus a quiet heartbeat once a minute.
Knows when you're away
It stops counting after 5 idle minutes, when the lid closes and when the screen locks. Meetings are the exception.
A small app that does a lot.
Focus Score
A daily 0–100 for deep work and distraction. Click it to see exactly how it's calculated.
Categories that sort themselves
About 360 apps and sites are built in. The rest go to Apple Intelligence, and you can correct any of them.
Focus sessions and a blocker
Start focus, meeting and break sessions from the menu bar. Drift somewhere distracting and Weft nudges you back.
Healthy hours
Break reminders, and a daily target that tells you when you've done enough.
Daily and weekly reviews
A short review of your day with a suggestion for tomorrow, and how this week compares with last week.
Reports
Days and weeks by category and app, compared with your recent past.
Rules of your own
Match an app, a site or a window title, and Weft files it your way, past entries included.
Bring your own model
No Apple Intelligence where you live? Use any OpenAI-compatible API, or a local Ollama or LM Studio.
Your data, your way
Export everything to CSV whenever you like. To erase your history, delete one folder.
Your browser, understood
Reads the current tab in Safari, Chrome, Arc, Edge, Brave, Vivaldi, Opera, Dia and Comet.
Automate it
Control Weft from Raycast, Alfred, Shortcuts or a script with weft:// links: start a session, pause tracking or open today.
$ open "weft://focus?minutes=25" $ open "weft://meeting" $ open "weft://pause"
How Weft compares
| Typical cloud trackers | ||
|---|---|---|
| Price | Free, MIT license | Monthly subscription |
| Account | None | Required |
| Where your history lives | On your Mac | On their servers |
| Categorization | On-device AI | In the cloud |
| How your day is shown | Threads of work | A log of app switches |
| Coding-agent time | Measured per session | — |
| The app | Native, 7 MB | Often Electron |
| Source code | Open | Closed |
Up and running in a minute.
Install
- 1
Download
Get the latest
Weft-<version>.dmgfrom GitHub Releases. - 2
Drag it into Applications
It's signed and notarized by Apple, so macOS opens it without warnings.
- 3
Allow Accessibility
So the timeline can show which document or project you were in, not just the app.
Weft needs macOS 26 or later. Apple Intelligence is recommended but optional: without it, Weft still knows a few hundred apps and sites, and guesses the rest for you to confirm later. You can also connect an OpenAI-compatible API or a local Ollama.
Or build it yourself
You'll need Xcode and Homebrew.
$ brew install xcodegen $ git clone https://github.com/tiann/weft.git $ cd weft && xcodegen generate $ xcodebuild -project Weft.xcodeproj \ -scheme Weft -derivedDataPath build/DerivedData build
Bug reports and pull requests are welcome. AGENTS.md covers the architecture and the tests.
Questions, answered
Is Weft really free?
How does Weft measure my coding agents' time?
~/.claude/projects and ~/.codex/sessions) and counts each turn, from your prompt to the agent's reply, minus the time it spent waiting for your permission or answers. The hours a session sits idle between prompts don't count. Today shows the time at least one agent was working and the total across sessions, and each session on the timeline shows its own working time. With HAPI 0.33 or later, agents on your other machines are included.Do I need Apple Intelligence?
What exactly can Weft see?
Will it slow down my Mac or drain the battery?
How is Weft different from Rize?
Where is my data, and how do I delete it?
~/Library/Application Support/Weft/. Export it to CSV from Settings → Data. To erase it, quit Weft and delete that folder.Find out where today went.
Free, open source, and private from the first minute.