A local-first personal work review tool that records context, helps you review your day, and generates daily reports.
Automatically organizes the apps you used, websites you visited, window titles, usage time, and optional screenshots into a timeline you can review, analyze, and ask questions about.
All data is stored locally by default and never uploaded to any server. AI features are entirely optional; the app works fine with them turned off.
🔒 For personal use only — all data stays on your device.
---
## What It Solves
Work Review is designed for personal work review and helps answer questions like these:
- What did I actually do today?
- What have I been focusing on over the past few days?
- Roughly how much time did a particular task take?
- Which pages, windows, and context did I look at back then?
- How can I quickly put together today's daily report?
The focus is not "monitoring". It is helping you **recall, organize, and review** your own work process.
---
## Core Capabilities
- **Automatic work context recording** — Records foreground apps, browser pages, window titles, usage time, optional screenshots, and OCR text, reducing manual note-taking
- **Unified timeline and statistics** — Overview, timeline, work assistant, and daily report share the same local records, so you can inspect trends and drill into context
- **Questions over local records** — Use the basic template or your configured model to answer "What did I do today?", "How long did this task take?", and "What have I been focused on?"
- **Daily report generation and export** — Generate structured daily reports with Markdown export, auto-export, paragraph editing, pin/hide controls, and cached AI section ordering
- **Privacy-first and locally controllable** — Data is stored in local SQLite by default; AI is optional, and model calls use your own API key without third-party relay
- **Desktop Avatar Beta** — Shows work status through a desktop avatar and is gradually expanding toward proactive reminders and context assistance
- **Multilingual UI** — Available in Simplified Chinese, English, Traditional Chinese, and Arabic (with RTL layout)
---
## Interface Preview
The screenshots below are captured from the running desktop app with localized UI and representative local data, covering the main workflow and configuration surfaces.
### Core Workflow
Overview
Timeline
Timeline Detail
Daily Report
Work Assistant
Integrations
More screenshots: summaries, settings, and about page
Hourly Summary
General Settings
Appearance
AI Models
Desktop Avatar
Privacy
Storage
About
---
## Privacy and Boundaries
Work Review is designed for personal use from the ground up. It is not intended for: employee monitoring · team attendance · performance evaluation · covert tracking
You can control the recording scope as needed:
- Per-app settings: Normal / Anonymize / Ignore — anonymize mode automatically skips screenshots and OCR
- Automatic sensitive keyword filtering · domain blacklist
- Auto-pause on screen lock · manual pause/resume
- AI only activates after you configure a model; disabled by default
---
## Feature Overview
### Automatic Recording
- Foreground apps, window titles, browser URLs, usage duration, and category records
- Optional screenshots and OCR with multi-display strategies
- Keyboard/mouse activity + screen-change idle detection to reduce false records
- Timeline review for pages, windows, and context from any time period
### Smart Organization
- Work assistant based on local records, with basic template, AI-enhanced modes, and dynamic opening prompts after a model is configured
- Overview with answer-first insights: one-sentence summary, KPI cards with week-over-week deltas, and a "today rhythm" visual card (category composition bar + per-day investment chart)
- Top websites aggregated by domain with browser sources, page counts, duration, inline expansion, and editable semantic categorization
- Duration statistics, category filtering, trend comparison, natural-language time ranges, and hourly activity across Today, Week, Date, and Range views
- Fragments grouped into continuous work sessions
- Built-in categorization knowledge base (~140 domains + 70 apps) with AI auto-learning that backfills history
### Daily Reports and Review
- Structured daily reports with TL;DR insight line, reference KPIs, and proof data panel
- Export dropdown (Markdown / range merge / copy full text) and generation settings drawer (presets / system prompt override / paragraph management)
- Skeleton screen during generation and prominent yesterday-report banner
- Historical review, auto-export, paragraph-level pin/hide/restore controls, with cached AI section ordering
- AI-enhanced prompt attachments and custom model settings
- Website semantic categorization: changing a domain category automatically backfills history
- Multi-segment work time: e.g. morning + afternoon, break time excluded
---
## AI Modes
The core of Work Review is always **local recording**. AI's role is to make records easier to read and review, not a prerequisite for usage.
| Mode | Description |
|------|------|
| **Basic Template** | Zero configuration, outputs stable structured results |
| **AI Enhanced** | Calls your self-configured model service for more natural Q&A and summaries |
Supported providers: Ollama (local) / LM Studio (local) / OpenAI compatible / DeepSeek / Qwen / Zhipu / Kimi / Doubao / MiniMax / SiliconFlow / Gemini / Claude / OpenRouter / Groq / xAI Grok / Mistral / Custom endpoint
---
## Quick Start
1. Download the installer for your platform from [Releases](https://github.com/wm94i/Work-Review/releases/latest)
2. On macOS, grant Screen Recording and Accessibility permissions
3. Let it run in the background for a while
4. Check the Overview / Timeline / Daily Report to see your recorded activity
| Platform | Installer |
|------|--------|
| macOS (Apple Silicon / Intel) | `.dmg` |
| Windows | `.exe` / portable `.zip` |
| Linux x86_64 (X11 / Wayland) | `.deb` / `.rpm` / `.AppImage` |
| Linux ARM64 (aarch64) | `.deb` |
**macOS:** Screenshots require the "Screen Recording" permission, and avatar linkage requires "Accessibility + Input Monitoring". If you see a "damaged" warning on first launch: `sudo xattr -rd com.apple.quarantine "/Applications/Work Review.app"`
**Windows:** Depends on Microsoft Edge WebView2 Runtime.
**Linux:** Screenshots and window tracking depend on the current session type and toolchain. Dependency details
```bash
# Base
sudo apt install xprintidle tesseract-ocr
# X11
sudo apt install xdotool x11-utils scrot
# Wayland: gdbus (GNOME) / kdotool (KDE) / swaymsg (Sway) / hyprctl (Hyprland)
# Screenshots: grim / gnome-screenshot / spectacle
# RPM-based distributions
sudo dnf install xprintidle tesseract xdotool xorg-x11-utils gnome-screenshot procps-ng
sudo zypper install xprintidle tesseract-ocr xdotool xorg-x11-tools gnome-screenshot procps
```
Ubuntu 24.04 / 24.10 Wayland (GNOME 46–47) users experiencing screenshot flash or shutter sound can use the one-click install script to fix it automatically:
```bash
bash scripts/deb/reinstall.sh # deb method (recommended)
bash scripts/deb/reinstall.sh --dry-run # preview operations
```
See [scripts/ubuntu-wayland-README.md](scripts/ubuntu-wayland-README.md) for details.
**KDE Plasma / Wayland startup crash (Fedora, Arch, openSUSE, …):** If the app quits immediately with `Gdk-Message: Error 71 (Protocol error) dispatching to Wayland display.`, it is an upstream webkit2gtk/GTK bug on Wayland (see [tauri#10702](https://github.com/tauri-apps/tauri/issues/10702)), most common on KDE Plasma + NVIDIA. Recent builds already inject `WEBKIT_DISABLE_DMABUF_RENDERER=1` at startup. If you still hit it on an older build, launch it with the same workaround manually:
```bash
WEBKIT_DISABLE_DMABUF_RENDERER=1 ./Work_Review
```
If that still fails, force the X11 backend as a last-resort fallback. This may render worse on some Wayland desktops:
```bash
GDK_BACKEND=x11 ./Work_Review
```
---
## Extended Capabilities (Beta)
Desktop Avatar
Uses a standalone desktop pet window to reflect idle / working / reading / meeting / music / video states.
Still being actively refined — interaction linkage, state expression, and preset details will continue to improve.
Bot Integration (Telegram / Feishu / DingTalk / WeCom)
Query records and generate daily reports remotely from Telegram / Feishu / DingTalk / WeCom via local API + multi-device registration. Supported commands: `/devices`, `/report`, `/generate`, etc. Restricted to personal and own multi-device use only.
Localhost API
After Localhost API is enabled, the app exposes a local HTTP API (default `127.0.0.1:47831`), authenticated with a Bearer Token (auto-generated on first launch, saved in `localhost_api_token.txt` in the data directory).
### Authentication
All requests (except `/health` and Feishu callbacks) must carry the token:
```
Authorization: Bearer
```
Or via query parameter: `?token=`
### Endpoints
| Method | Path | Description |
|------|------|------|
| GET | `/health` | Health check (no auth) |
| GET | `/v1/device` | Device info |
| GET | `/v1/timeline/{date}` | Timeline (`date` format `YYYY-MM-DD`, supports `?limit=&offset=`) |
| GET | `/v1/activities/{date}` | Activity list (supports `?limit=&offset=&category=`) |
| GET | `/v1/stats/today` | Today's stats |
| GET | `/v1/stats/overview` | Overview stats (`?mode=today|date|week|range`) |
| GET | `/v1/stats/daily/{date}` | Stats for a given date |
| GET | `/v1/reports` | Report list (`?limit=`) |
| GET | `/v1/reports/{date}` | Report for a given date (`?locale=`) |
| GET | `/v1/reports/generate` | Generate report (`?date=&locale=&force=true`) |
| POST | `/v1/reports/export-markdown` | Export report as Markdown (body: `{ date, locale }`) |
| GET | `/v1/apps/recent` | Recently used apps |
| GET | `/v1/apps/category-overview` | App category overview |
| GET | `/v1/categories` | App category list |
| GET | `/v1/categories/semantic` | Semantic category list |
| GET | `/v1/hourly-summaries/{date}` | Hourly summary |
| GET | `/v1/hourly-app-breakdown/{date}` | Hourly app breakdown |
| GET | `/v1/weekly-review` | Weekly review (`?date_from=&date_to=&limit=`) |
| GET | `/v1/storage/stats` | Storage stats |
### Examples
```bash
# Get today's timeline
curl -H "Authorization: Bearer $(cat ~/work-review/localhost_api_token.txt)" \
http://127.0.0.1:47831/v1/timeline/2026-05-20
# Generate a report
curl -H "Authorization: Bearer $(cat ~/work-review/localhost_api_token.txt)" \
"http://127.0.0.1:47831/v1/reports/generate?date=2026-05-20"
```
MCP Server
Connects work records to AI coding tools (Claude Code / Cursor / VS Code Copilot, etc.) via the stdio protocol.
```bash
cargo build --release -p work-review-mcp-server
```
```json
{
"mcpServers": {
"work-review": {
"command": "/path/to/work-review-mcp-server",
"env": {
"WORK_REVIEW_DB_PATH": "/path/to/work_review.db",
"WORK_REVIEW_CONFIG_PATH": "/path/to/config.json"
}
}
}
}
```
---
## Development
```bash
npm install
npm run tauri:dev # Development
npm run tauri:build # Build
```
Requires: Node.js 18+ / Rust stable / Tauri 2 CLI · Tech stack: Tauri 2 + Rust + Svelte 4 + SQLite
---
## Community
WeChat Group
If the QR code has expired, follow the official account below for the latest group invitation, or join the TG group