SUMERY · LIBRALibra 中文

Sumery Libra

Weigh work against recovery

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.

Four steps, and you can check each one yourself

  1. Install a plugin and code as usual

    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.

  2. Stop, and the clock stops at your last edit

    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.

  3. Several sources, merged, nothing counted twice

    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.

  4. See today and this week

    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.

Libra's Overview, Today page, in its Chinese interface: today's working time, the comparison with yesterday, the longest unbroken stretch, the idle and screen-lock time already subtracted, and Chinese characters typed
Real interface · demo dataToday: working time, compared with yesterday, and the longest unbroken stretch, with idle time and screen lock already taken off.
Libra's weekly work-sessions view, in its Chinese interface: seven days on a 24-hour axis, each with one row for macOS activity, AI sessions and IDE coding, and each day's de-duplicated total on the right
Real interface · demo dataThe week: one row per source, with IDE coding on a row of its own; overlapping time is counted once.
Each line the plugin writes (to ~/.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.

Full disclosure

Where it keeps things, what it does and what it can't do, said up front.

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.

The format is open

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.

Switch it off at any time

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.

What it can't do

Data sources, and what each one can answer

SourceAnswersCan't answer
IDE pluginsWhen you were editing code in a VS Code-family or JetBrains IDETime spent reading code or thinking a problem through (more than 3 minutes without an edit isn't counted)
DSH pluginThe time of every turn and every tool call in an AI coding sessionWhat was said: it records times only, never prompts or replies
macOS foreground and idleWhich app is in front, how long since you touched the keyboard or mouse, screen lock and sleepWindow titles (they need an extra permission and aren't collected by default)
Sogou input methodHow many Chinese characters you entered through the input method todayCharacters typed directly on an English keyboard; what you wrote
KeepWorkouts, weight and resting heart rate from the Keep fitness app (not counted as working time)All-day steps, sleep, HRV
Focus timerEach focus round and break you start yourselfWork you didn't start the timer for

Download

The plugins work today; the desktop app is coming soon.

Plugin for VS Code and its forks

VS Code, plus forks such as Cursor and Windsurf. Declared compatible from VS Code 1.75; tested with 1.139.

Version
—
Size
—
Install and verify

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: —

JetBrains plugin

GoLand, WebStorm, IntelliJ IDEA, PyCharm, DataGrip and other IntelliJ-based IDEs. Declared compatible from 2024.2; tested with GoLand 2026.3.

Version
—
Size
—
Install and verify

Settings → Plugins → ⚙ → Install Plugin from Disk…, then choose the downloaded .jar.

SHA-256: —

Libra desktop app

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.