Skip to content

JerryZLiu/Dayflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dayflow
A timeline of your day, automatically.
Turns your screen activity into a clean timeline with AI summaries and distraction highlights.
Platform: macOS 13+ SwiftUI Updates: Sparkle AI: Gemini | Local | ChatGPT/Claude License: MIT
Dayflow Hero Animation

QuickstartWhy I built DayflowFeaturesHow it worksInstallationData & PrivacyAutomationDebug & Developer ToolsAuto‑updatesContributing


What is Dayflow?

Dayflow is a native macOS app (SwiftUI) that records your screen at 1 FPS, analyzes it every 15 minutes with AI, and generates a timeline of your activities with summaries. It's lightweight (25MB app size) and uses ~100MB of RAM and <1% cpu.

Privacy‑minded by design: You choose your AI provider. Use Gemini (bring your own API key), local models (Ollama / LM Studio), or ChatGPT/Claude (requires paid subscription). See Data & Privacy for details.

Why I built Dayflow

I built Dayflow after realizing that my calendar wasn't the source of truth for how I actually spent my time. My screen was. I wanted a calm, trustworthy timeline that let me see my workday without turning into yet another dashboard I had to maintain.

Dayflow stands for ownership and privacy by default. You control the data, you choose the AI provider, and you can keep everything local if that's what makes you comfortable. It's MIT licensed and fully open source because anything that watches your screen all day should be completely transparent about what it does with that information. The app should feel like a quiet assistant: respectful of your attention, honest about what it captures, and easy to shut off.


Features

  • Automatic timeline of your day with concise summaries.
  • 1 FPS recording - minimal CPU/storage impact.
  • 15-minute analysis intervals for timely updates.
  • Watch timelapses of your day.
  • Auto storage cleanup - configurable storage limits.
  • Distraction highlights to see what pulled you off‑task.
  • Timeline export — export your timeline as Markdown for any date range.
  • Native UX built with SwiftUI.
  • Auto‑updates with Sparkle (daily check + background download).

Daily Journal BETA

Set intentions, reflect on your day, and get AI-generated summaries of your activity.

Dayflow journal preview
  • Morning intentions — plan what you want to accomplish.
  • Evening reflections — review how your day actually went.
  • AI summaries — get auto-generated insights from your timeline.
  • Scheduled reminders — configurable notifications for intentions and reflections.
  • Weekly view — see patterns across your week.

Note: Journal is currently in beta with limited access. Enter your access code in the app to unlock it.

Coming soon

  • Infinitely customizable dashboard — ask any question about your workday, pipe the answers into tiles you arrange yourself, and track trends over time.

    Dayflow dashboard preview

How it works

  1. Capture — Records screen at 1 FPS in 15-second chunks.
  2. Analyze — Every 15 minutes, sends recent footage to AI.
  3. Generate — AI creates timeline cards with activity summaries.
  4. Display — Shows your day as a visual timeline.
  5. Cleanup — Auto-manages storage based on your configured limits (1GB–20GB or unlimited).

AI Processing Pipeline

The efficiency of your timeline generation depends on your chosen AI provider:

flowchart LR
    subgraph Gemini["Gemini Flow: 2 LLM Calls"]
        direction LR
        GV[Video] --> GU[Upload + Transcribe<br/>1 LLM call] --> GC[Generate Cards<br/>1 LLM call] --> GD[Done]
    end

    subgraph Local["Local Flow: 33+ LLM Calls"]
        direction LR
        LV[Video] --> LE[Extract 30 frames] --> LD[30 descriptions<br/>30 LLM calls] --> LM[Merge<br/>1 call] --> LT[Title<br/>1 call] --> LC[Merge Check<br/>1 call] --> LMC[Merge Cards<br/>1 call] --> LD2[Done]
    end

    subgraph ChatCLI["ChatGPT/Claude Flow: 4-6 LLM Calls"]
        direction LR
        CV[Video] --> CE[Extract frames<br/>every 60s] --> CB[Batch describe<br/>10 frames/call] --> CM[Merge segments<br/>1 call] --> CC[Generate Cards<br/>1 call] --> CD[Done]
    end

    %% Styling
    classDef geminiFlow fill:#e8f5e8,stroke:#4caf50,stroke-width:2px
    classDef localFlow fill:#fff8e1,stroke:#ff9800,stroke-width:2px
    classDef chatcliFlow fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
    classDef geminiStep fill:#4caf50,color:#fff
    classDef localStep fill:#ff9800,color:#fff
    classDef chatcliStep fill:#1976d2,color:#fff
    classDef processing fill:#f5f5f5,stroke:#666
    classDef result fill:#e3f2fd,stroke:#1976d2

    class Gemini geminiFlow
    class Local localFlow
    class ChatCLI chatcliFlow
    class GU,GC geminiStep
    class LD,LM,LT,LC,LMC localStep
    class CB,CM,CC chatcliStep
    class GV,LV,LE,CV,CE processing
    class GD,LD2,CD result
Loading

Gemini leverages native video understanding for direct analysis. Local models reconstruct understanding from individual frame descriptions. ChatGPT/Claude uses CLI tools to batch-process extracted frames with frontier reasoning models—balancing quality and efficiency.


Quickstart

Download (end users)

  1. Grab the latest Dayflow.dmg from GitHub Releases.
  2. Open the app; grant Screen & System Audio Recording when prompted:
    macOS → System SettingsPrivacy & SecurityScreen & System Audio Recording → enable Dayflow.

Build from source (developers)

  1. Install Xcode 15+ and open Dayflow.xcodeproj.
  2. Run the Dayflow scheme on macOS 13+.
  3. In your Run scheme, add your GEMINI_API_KEY under Arguments > Environment Variables (if using Gemini).

Installation

Requirements

From Releases

  1. Download Dayflow.dmg and drag Dayflow into Applications.
  2. Launch and grant the Screen & System Audio Recording permission.

From source

git clone https://github.com/JerryZLiu/Dayflow.git
cd Dayflow
open Dayflow.xcodeproj
# In Xcode: select the Dayflow target, configure signing if needed, then Run.

Homebrew

If you are using Homebrew, you can install Dayflow with:

$ brew install --cask dayflow

Data & Privacy

This section explains what Dayflow stores locally, what leaves your machine, and how provider choices affect privacy.

Data locations (on your Mac)

All Dayflow data is stored in: ~/Library/Application Support/Dayflow/

  • Recordings (video chunks): Dayflow/recordings/ (or choose "Open Recordings..." from the Dayflow Taskbar Icon Menu)
  • Local database: Dayflow/chunks.sqlite
  • Recording details: 1 FPS capture, analyzed every 15 minutes, configurable storage limits
  • Purge / reset tip: Quit Dayflow. Then delete the entire Dayflow/ folder to remove recordings and analysis artifacts. Relaunch to start fresh.

Processing modes & providers