Data stays on your computer
Every record goes into JSON Lines files under ~/.orea/ (or $OREA_HOME), one event per line. The plugins don't connect to the internet and upload nothing.
Sumery Libra
Your work hours, fatigue signals and body data, side by side and computed on your own computer.
Your IDE was open for ten hours. How much of that was spent writing code, and how much was it left untouched while you read docs or sat in meetings? At the end of the day it's hard to say, because all you can see is which window was in front.
Libra's IDE plugins record time only while you are editing code. Stop for more than 3 minutes and the stretch ends at the moment of your last edit; the pause after it isn't counted.
For VS Code and its forks (Cursor, Windsurf and others), and for JetBrains IDEs such as GoLand, WebStorm and IntelliJ IDEA. Tested with VS Code 1.139 and GoLand 2026.3.
When you type, delete or paste in the active editor, the plugin appends one line with the time to a file on your computer. Opening files, scrolling through code, switching windows and git rewriting files on disk write nothing.
Pause for a minute or two to think, then carry on: that is still one stretch. Pause for more than 3 minutes and the stretch ends at your last edit. When you switch to another app, the plugin writes out your last edit straight away.
The IDE plugins, DSH sessions and the macOS foreground app each keep their own record, and Libra takes the union: time seen by the editor and the terminal at once counts once. Idle time, screen lock and sleep come off the total.
Today's working time and how it compares with yesterday, your longest unbroken stretch, how many breaks you took, an hour-by-hour breakdown, and each day's time split by source.
~/.orea/ide-heartbeats.jsonl) looks like this, and that's all of it:{"source":"ide","kind":"heartbeat","at":1789500000000,"sessionId":"jetbrains:GO:/Users/me/work/libra","appId":"jetbrains:GO","appName":"GoLand","cwd":"/Users/me/work/libra"}
Time, IDE name, project root. No file names, code, programming language, window titles or keystrokes.
Where it keeps things, what it does and what it can't do, said up front.
Every record goes into JSON Lines files under ~/.orea/ (or $OREA_HOME), one event per line. The plugins don't connect to the internet and upload nothing.
The files are yours even without the Libra desktop app: tail -f ~/.orea/ide-heartbeats.jsonl shows them, and any script can add them up. The fields are explained in the plugin documentation.
Libra has one switch per source; the plugins' switch is under 设置 → 通用 → 采集开关 (Settings → General → Collection switches). Off really stops collection rather than ignoring the data, and nothing already recorded is deleted. A plugin stops writing within seconds of being switched off, with no IDE restart.
| Source | Answers | Can't answer |
|---|---|---|
| IDE plugins | When you were editing code in a VS Code-family or JetBrains IDE | Time spent reading code or thinking a problem through (more than 3 minutes without an edit isn't counted) |
| DSH plugin | The time of every turn and every tool call in an AI coding session | What was said: it records times only, never prompts or replies |
| macOS foreground and idle | Which app is in front, how long since you touched the keyboard or mouse, screen lock and sleep | Window titles (they need an extra permission and aren't collected by default) |
| Sogou input method | How many Chinese characters you entered through the input method today | Characters typed directly on an English keyboard; what you wrote |
| Keep | Workouts, weight and resting heart rate from the Keep fitness app (not counted as working time) | All-day steps, sleep, HRV |
| Focus timer | Each focus round and break you start yourself | Work you didn't start the timer for |
The plugins work today; the desktop app is coming soon.
VS Code, plus forks such as Cursor and Windsurf. Declared compatible from VS Code 1.75; tested with 1.139.
From the command line: code --install-extension libra-coding-time-x.y.z.vsix (in Cursor, use cursor instead of code); or, in the Extensions view, “⋯ → Install from VSIX…”.
SHA-256: —
GoLand, WebStorm, IntelliJ IDEA, PyCharm, DataGrip and other IntelliJ-based IDEs. Declared compatible from 2024.2; tested with GoLand 2026.3.
Settings → Plugins → ⚙ → Install Plugin from Disk…, then choose the downloaded .jar.
SHA-256: —
Coming soon. The time the plugins record stays in ~/.orea/, and the desktop app reads it directly once it's released, so nothing has to be collected again. Its interface is in Simplified Chinese only for now.
To keep links from being passed around or scraped in bulk, the server generates each download link when you click, and it works once. Click too often from the same network and you'll wait a few seconds; the button comes back by itself, no reload needed.
Both plugins are provided under the Sumery Libra IDE plugin license.
This page counts visits and button clicks with self-hosted Umami: no cookies, no user IDs.