Dayflow: Screen Activity Tracking Without Surveillance
Table of content
Most time trackers tell you Safari was open for four hours. Dayflow tells you what you actually did in Safari. There’s a difference.
It’s a macOS app that takes screenshots every second, stores them locally, feeds them to AI (your choice of provider), and builds a timeline of your day with actual context. Not “used Chrome,” but “researched deployment strategies for LLMs” or “fell into a Wikipedia rabbit hole about Byzantine emperors.”
Privacy paranoia built in: everything lives on your machine. You pick the AI provider. You control the data. Open-source, so you can audit the code or build it yourself.
Why Not Just Use RescueTime
Because RescueTime tracks window titles and URLs. ActivityWatch does the same. Timing gives you pretty charts of app usage. All useful, all missing the point.
Dayflow understands context. It knows the difference between:
- Reading HN comments about Rust vs. actually writing Rust
- YouTube research vs. YouTube procrastination
- Ten Chrome tabs for one deep work session vs. tab-hopping chaos
It’s like git log for your attention. You get a timeline of what you shipped, where you got stuck, and which distractions pulled you off-task.
The tradeoff: you’re giving an AI vision model access to your screen. Most time trackers don’t need to see what you’re doing, just which app is frontmost. Dayflow needs pixels. That’s the price of context.
If that makes you uncomfortable, stick with ActivityWatch. If you want to actually know where your time went, keep reading.
The Privacy Model
Everything Dayflow captures stays local until you explicitly send it somewhere. Here’s what moves where:
Stored on your Mac:
- Video chunks (1 frame/second screen capture)
- SQLite database of timeline cards
- All living in
~/Library/Application Support/Dayflow/
Sent to AI for analysis:
- Batches of screenshots every 15 minutes
- Whatever model you choose: Gemini (cloud, your API key), ChatGPT/Claude (via CLI, your subscription), or local models (Ollama/LM Studio, never leaves your machine)
Never sent anywhere:
- Raw keystroke logging (Dayflow doesn’t do this)
- Clipboard contents
- Passwords or sensitive form fields (though they might appear in screenshots—be aware)
The Gemini option is interesting: if you enable Cloud Billing on any Gemini API project, Google treats all your usage under “Paid Services” rules—meaning they don’t train on your data. Free tier otherwise might. Read their ToS if you care.
Local models (Ollama/LM Studio) keep everything on-device. Quality is worse, processing is slower, battery drain is real. But zero cloud dependency.
ChatGPT/Claude via CLI gives you frontier model quality—best summaries, best context understanding—but requires an active paid subscription ($20/month) and sends data to OpenAI or Anthropic.
You choose your poison.
Setup
Requirements:
- macOS 13+
- Screen recording permission (System Settings → Privacy & Security)
- An AI provider: Gemini API key, local model server, or ChatGPT/Claude subscription
Installation:
Easiest path:
brew install --cask dayflow
Or download Dayflow.dmg from GitHub releases
.
On first launch, macOS will ask for Screen & System Audio Recording permission. Grant it. Dayflow can’t work without seeing your screen—that’s the whole point.
Configure AI provider:
Open Dayflow settings and pick one:
Gemini (recommended for most): Get an API key from ai.google.dev . Paste it in. Fastest processing (2 LLM calls per batch), decent cost, good quality.
Local models (for privacy extremists): Install Ollama or LM Studio , run a model locally. Dayflow will hit your local endpoint. Expect 33+ LLM calls per batch, slower processing, GPU drain. But nothing leaves your Mac.
ChatGPT/Claude (for best quality): Install Codex CLI or Claude Code , sign in with your paid account. 4-6 calls per batch, frontier reasoning models, best narrative summaries.
Hit “Start Recording” in the UI. Dayflow now watches your screen at 1fps, analyzes in 15-minute chunks, and builds your timeline.
Storage limits:
Dayflow auto-manages disk usage. Default is probably 5-10GB. You can set it to 1GB (aggressive cleanup) or unlimited (hoarder mode). Older recordings get purged when you hit the limit.
To nuke everything: quit Dayflow, delete ~/Library/Application Support/Dayflow/, relaunch.
How AI Recognition Works
Every 15 minutes, Dayflow packages recent screenshots and sends them to your chosen AI model. What happens next depends on the provider:
Gemini: Uploads the video chunk, transcribes it in one LLM call, generates timeline cards in another. 2 calls total. Fast, efficient, leverages native video understanding.
Local models: Extracts 30 frames, describes each one (30 LLM calls), merges descriptions (1 call), generates title (1 call), checks if it should merge with previous card (1 call), generates final cards (1 call). 33+ calls. Slow, but private.
ChatGPT/Claude: Extracts frames every 60s, batch-describes 10 frames per call, merges segments, generates cards. 4-6 calls. Balanced quality and speed.
The model returns:
- Activity title (“debugging prod incident”)
- Summary paragraph
- Timestamp range
- Distraction flag if it detects you went off-task
Timeline cards appear in the UI. You can scrub through them, watch a timelapse of your day, or export to markdown.
Export to Markdown
Dayflow’s killer feature for the self.md stack: timeline export.
Select a date range, hit export, get a markdown file with every activity card. Looks like this:
## 09:00 - 09:15 — Writing API docs
Documented the new webhook endpoints for the v2 API.
Added code samples in Python and Node.
## 09:15 - 10:00 — Debugging prod incident
Database connection pool exhausted. Investigated logs,
found slow query, added index.
## 10:00 - 10:30 — [Distraction] Twitter
Fell into thread about LLM context length optimization.
Feed this into your daily log, let Clawdbot summarize it, pipe it into self.md. You now have a machine-readable record of what you actually did, not what you think you did.
Combine with journaling: Dayflow shows objective reality, you add subjective interpretation. The delta between “what I planned” and “what Dayflow recorded” is where the insights live.
Integration with self.md Stack
Here’s how it fits:
- Dayflow captures → screen activity becomes timestamped markdown
- You review → add context, tag important work, note distractions
- Clawdbot ingests → reads your Dayflow export as memory context
- self.md stores → becomes part of your searchable personal corpus
The loop: Dayflow tells you what happened. You tell Clawdbot why it mattered. Clawdbot builds a durable memory of both.
Example workflow:
# Export today's timeline
open dayflow://
# Select today, export to ~/dayflow-2026-02-06.md
# Feed into daily log
cat ~/dayflow-2026-02-06.md >> ~/clawd/memory/2026-02-06.md
# Add your reflection
echo "\n## reflection\nShipped the webhook docs but got
derailed by prod fire. Should've handed off to ops sooner." \
>> ~/clawd/memory/2026-02-06.md
Now when you ask Clawdbot “what did I ship last week?” it has ground truth, not your fallible memory.
See memory-system for how to structure daily logs that Clawdbot can actually use.
Automation Hooks
Dayflow registers dayflow:// URLs for external triggers:
# Start recording
open dayflow://start-recording
# Stop recording
open dayflow://stop-recording
Use in Shortcuts, cron jobs, or hotkey launchers. Example: auto-start Dayflow when you open your work browser profile, auto-stop at 6pm.
Deeplink-triggered actions get logged as reason: "deeplink" so you can distinguish automation from manual toggles.
Why It’s Different
vs. RescueTime: RescueTime tracks apps and URLs. Dayflow understands what you were doing in those apps. RescueTime says “4 hours in VSCode.” Dayflow says “2 hours refactoring auth, 1 hour debugging tests, 1 hour reading docs.”
vs. ActivityWatch: Open-source app tracking, similar to RescueTime. More privacy, same limitation: no semantic understanding. Doesn’t know if your browser session was work or procrastination.
vs. Timing: Beautiful Mac app, tracks app usage and documents. Still surface-level. Knows you edited auth.py but not that you were implementing OAuth.
vs. Rewind: Closest competitor. Also does screen capture + AI analysis. Key differences:
- Rewind is closed-source, Dayflow is open
- Rewind uses their own models, Dayflow lets you choose (including local)
- Rewind is expensive ($20+/month), Dayflow is free (you pay AI provider directly)
Dayflow is for people who want the Rewind experience without vendor lock-in.
Tradeoffs You Should Know
Battery: Screen recording at 1fps is lightweight (~100MB RAM, <1% CPU), but AI processing (especially local models) will drain battery. Use on AC power for best results.
Storage: 1fps video adds up. A 10-hour workday is ~600MB before compression. Set storage limits to auto-prune.
Privacy surface area: Every screenshot could contain a password reset email, a Slack DM, a confidential doc. If you’re sending to Gemini/ChatGPT/Claude, that data leaves your machine. Local models avoid this but are slower and lower quality.
Context switching cost: Knowing Dayflow is watching can make you more self-conscious about distractions. This might be a feature (accountability) or a bug (surveillance anxiety). Your mileage will vary.
AI summarization errors: The model might misinterpret what you were doing. “Researching competitors” might get logged as “browsing social media.” Review exports before trusting them completely.
What You Can Steal
Local-first by default. Cloud is optional, not required. This is how activity tracking should work.
User-controlled AI. Pick your model, bring your own key, or run it offline. No black-box SaaS.
Markdown export. Machine-readable timelines you can version control, search, and feed into other tools.
Open-source accountability. Audit the code if you’re paranoid. Build it yourself if you don’t trust binaries.
Context over quantity. Better to know what you did in 30 minutes than track 8 hours of window titles.
Automation hooks.
dayflow://URLs let you integrate with the rest of your system.
The real value isn’t the timeline itself—it’s the delta between what you planned and what actually happened. Dayflow gives you ground truth. What you do with it is up to you.
related
- be not do — identity over activity, but first you need to see your activity clearly
- memory system — pipe Dayflow exports into your daily logs for durable context
- portable identity — Dayflow data is yours, in markdown, forever