How it works

How ActivityPulse works

A desktop agent on Windows or macOS records which application and window are in the foreground, aggregates that into activity segments on the device, and syncs them as per-project hours. It captures metadata only by default: no keystroke content, no screen recording, no webcam.

From a foreground window to a billable hour

Six steps, and nothing hidden in between them.

  1. The agent samples the foreground window

    A small desktop application on Windows or macOS records which application and which window are in front, and for browsers the site-level identity of the tab. It reads window and process metadata. It does not read page content, document contents or what you type.

  2. Samples are aggregated on the device

    Raw samples never leave the machine. The agent folds them into activity segments locally — a stretch of continuous work in one application, against one project — so what is sent is a summary, not a stream. This is what keeps the volume low enough to work on a bad connection, and it is why there is no raw feed of your day sitting on a server.

  3. Idle time is subtracted, not counted

    When the machine goes idle, the segment ends. Idle time is reported separately rather than folded into active hours, so an hour of attributed work is an hour someone was actually at the keyboard.

  4. Segments sync, exactly once

    Each segment carries a UUIDv7. The server upserts on that id, so a segment that arrives twice — a retry after a dropped connection, a resumed sync after a flight — is stored once. With no network, segments queue in a local outbox and go when the connection returns.

  5. Overlaps between a person's devices are resolved

    Somebody working on a laptop and a desktop in the same hour has worked one hour. Overlapping time from two devices belonging to the same person is resolved before it reaches a report, with the raw per-device figures kept alongside the credited ones so the resolution is inspectable.

  6. Hours become timesheets and exports

    The result is per-project and per-task hours you can review, adjust and export. A manual adjustment is recorded as an adjustment — marked, attributed and audited — rather than overwriting what was captured.

What is never captured

On any plan, in any configuration.

  • Keystroke content — what you type is never recorded, on any plan.
  • Webcam or microphone — the agent has no access to either.
  • Continuous screen recording — there is no session replay or video capture.
  • Personal file contents — the agent reads window and process metadata, not documents.
  • Browsing on a paused device — pausing capture stops collection, it does not hide it.

What the design guarantees

no-double-count
An hour is never counted twice: each activity segment carries a UUIDv7 the server upserts on, so a retried sync adds nothing.
offline-first
The agent keeps working with no network, queueing segments locally and syncing them when the connection returns.
two-devices-one-hour
One person working on two machines is credited with one hour, not two — overlapping time is resolved before it reaches a report.
manual-adjustments-audited
A manually adjusted timesheet is marked as adjusted and audited; captured data is never silently overwritten.

What the monitored person sees

The person being tracked is not the last to know what is being collected about them. The desktop agent shows what is being captured on their own machine, which project time is going to, and offers a pause control for personal time.

This is a design position, not a feature list. A monitoring tool that a team discovers rather than agrees to is one that gets worked around, and the data it produces stops being worth trusting.

Frequently asked questions

How does ActivityPulse track time?

A desktop agent for Windows and macOS records which application and window are in the foreground, aggregates that into activity segments on the device, and syncs the segments to be attributed to projects and tasks. There is no manual timer to start or stop.

Does ActivityPulse read what I type or see?

No. Keystroke content is never captured, there is no screen recording by default, and the agent does not read document or page contents. It reads window and process metadata.

What happens if I lose my internet connection?

Capture continues. Segments queue in a local outbox on the device and sync when the connection returns. Because each segment carries an id the server upserts on, a delayed or retried sync never produces duplicate hours.

How does it know which project I am working on?

Time is attributed to the project currently selected in the desktop agent, and switching project is a single action. Rules can also attribute particular applications or sites to a project automatically.

Can I pause tracking?

Yes. The agent has a pause control for personal time. Pausing stops collection — it does not hide activity that was already captured.

Which operating systems are supported?

Windows and macOS. There is no Linux client and no mobile client. A browser extension acts as a companion to the desktop agent rather than a replacement for it.

See where the hours actually went

Free for up to three people. Windows and macOS. No screenshots, no keystroke logging.