ActivityWatch is designed from the ground up with privacy in mind. All data is stored locally in a SQLite database on your machine and never transmitted to any server. There are no accounts, no telemetry, and no cloud dependency of any kind. You choose which watchers to run, you control how much data is collected, and you can inspect, export, or delete every record at any time through the web dashboard or the REST API.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ActivityWatch/activitywatch/llms.txt
Use this file to discover all available pages before exploring further.
What data is collected
ActivityWatch collects only the data produced by the watchers you choose to run. The two watchers included in the default installation record:- Active application name and window title —
aw-watcher-windowperiodically records which application is in the foreground and the title of its active window. You can disable title recording withexclude_title = truein the watcher config. - AFK / active status —
aw-watcher-afkderives your active or away-from-keyboard status from the presence of keyboard and mouse input. It does not record which keys were pressed or the position of the mouse — only whether input occurred within a configurable time window. - Browser tab URL and title — if you install the optional
aw-watcher-webbrowser extension, it records the URL and title of the active browser tab. This watcher is not installed by default; you must add it explicitly. - Any other data tracked by additional watchers — ActivityWatch is extensible. Third-party watchers can track editor activity, meeting presence, terminal sessions, and more. Each watcher you install expands the scope of what is recorded, so review any watcher before installing it.
What data is NOT collected
Regardless of which watchers are running, ActivityWatch does not collect the following:- Keystrokes or typed content —
aw-watcher-afkdetects input activity but does not log what you type. No keystroke logger is included in any default watcher. - Screenshots — no built-in watcher captures screen content or images.
- Mouse positions or click coordinates — cursor position and click locations are never recorded.
- Data transmitted to ActivityWatch developers or third parties — nothing leaves your machine. There is no analytics endpoint, no crash reporter that sends data externally, and no usage tracking of any kind.
Where data is stored
All activity data is stored in a local database managed byaw-server. The default storage location mirrors the configuration directory structure:
- Windows
- macOS
- Linux
aw-server.toml:
peewee(default) — data is stored in a SQLite database file via the peewee ORM. SQLite is a single-file, self-contained database that you can open with any standard SQLite tool.memory— data is kept in RAM only and lost when the server stops. This backend is intended for testing and development.
Network access
aw-server binds exclusively to localhost (127.0.0.1) by default. This means:
- The REST API and web dashboard are only accessible from your own machine.
- No firewall rule changes are needed during normal use.
- Other devices on your network cannot reach the ActivityWatch API unless you explicitly change the
hostsetting.
Data deletion
You have several options for removing activity data:- Delete individual events — use the Raw Data view in the dashboard to browse and delete specific events within any bucket.
- Delete entire buckets — remove a complete bucket (and all its events) from the Raw Data view or by sending a
DELETErequest to the/api/0/buckets/{bucket_id}endpoint. - Delete all data — stop ActivityWatch, then delete the database directory for your platform (see Where data is stored above). The directory and a fresh database will be recreated on next start.
Responsible disclosure
If you discover a security vulnerability in ActivityWatch, please report it by sending a PGP-encrypted email with details to erik@bjareho.lt. The project’s full security policy, including the PGP key reference, is described in SECURITY.md in the repository.Configuration
Adjust watcher settings, server port, and storage location.
Sync
Learn how experimental device sync works and what data it moves.
REST API
Use the REST API to export or delete data programmatically.
