Last updated 2026-09-08

Desktop client

The desktop client is the Windows app that sits in your system tray and captures foreground window activity. Windows only (Mac support is on the roadmap).

Installing

Three paths β€” pick whichever applies.

Magic-link install (easiest, v1.6.3+)

The OtiumWork install email contains a link starting with otiumwork://install?token=...&email=.... After you've run the .exe once, clicking that link in any browser pre-fills your credentials and launches the client β€” no typing the company code at all.

Direct download (most users)

The installer isn't a public file β€” the download link carries your company's token, which is why it reaches you by email rather than sitting on a page. If you can't find that email, ask an admin to open Employees β†’ Install info for you; opening that page re-sends it in one click. Admins downloading for their own machine don't need the email at all: Client releases in the sidebar has a direct download of the current version.

  1. Click the download link in your install email to save otiumwork-client.exe.
  2. Double-click to run. If Windows says "Windows protected your PC", click More info β†’ Run anyway. (Code-signing cert landing soon will eliminate this warning.)
  3. A small dialog opens asking for your email and company code β€” both were in the email you received. Paste them in, click Start. - Important: paste, don't retype β€” the company code is a 22-character random string and typos fail silently. The dialog now verifies your credentials with the server before saving (v1.6.3+); if anything's wrong it stays open with an inline error.
  4. A tray icon appears in the bottom-right of the taskbar. If you don't see it, click the ^ arrow β€” Windows sometimes hides new tray icons in the overflow.

Microsoft Intune (IT-managed deployments)

If your company uses Intune, the client is pushed to you automatically β€” you don't download anything. Once installed, log off and back on and the tray icon appears.

Using the tray menu

Right-click the tray icon for options. Double-clicking the icon opens My Day.

  • ⏱ Tracking / ⏸ Paused (until 3:40 PM) / ⚠ Authentication failed β€” Reconfigure β€” top-line status. When auth is failing (mistyped token, etc.), this turns into a clickable item that opens Reconfigure credentials directly, and the icon flips to a red "!" badge. While paused it shows the exact time tracking comes back, not a countdown.
  • β—‰ On: <project> / β—― No focus tile β€” open My Day β€” what you're currently focused on. Click it to open My Day and switch.
  • β˜… Install update v<N> (appears when a new version is available) β€” downloads + swaps the running client without needing a reboot.
  • Open My Day β€” the browser page with your tiles and today's activity.
  • πŸ“Œ Show floating tiles / βœ• Hide floating tiles β€” the desktop widget, see below.
  • Sync tiles now (only while the widget is open) β€” pulls fresh tiles immediately instead of waiting for the 60-second tick.
  • πŸ“Œ Set current focus as default / Clear default focus β€” see Default focus below.
  • Review recent events… β€” opens a small window with your last 15 events; edit categories / work types / projects / notes inline.
  • Open OtiumWork (web) β€” opens the activity drawer, your full event history beyond today.
  • Pause 30 min / 1 hour / 4 hours β€” stops tracking for that window. Tracking auto-resumes after the timer expires.
  • Resume tracking (appears when paused).
  • πŸ–₯ Machine monitoring: <status> (v1.6.25+) β€” click to turn hardware reporting on or off. The status text tells you whether it's off, starting, reporting, or failing. See Machine monitoring below.
  • Machine monitoring settings… (v1.6.25+) β€” set the Fleet address, registration token, the name this PC shows up under, and how often it reports.
  • Flush pending events now β€” immediately sends buffered events instead of waiting for the 5-minute flush cycle.
  • Check for updates now β€” asks the server for a newer release rather than waiting for the next scheduled check.
  • Reconfigure credentials… β€” reopens the setup dialog with your current values pre-filled. Use this if you typed the wrong email or company code. New values are verified against the server before saving.
  • Quit OtiumWork β€” shuts down the tracker until you launch it again. Tracking does not auto-restart until next Windows login.

Floating tiles widget (v1.6.8+)

The widget is a small always-on-top window that shows the same project tiles as My Day, so you can switch focus without leaving whatever you're working in. It's off by default β€” turn it on from the tray with πŸ“Œ Show floating tiles.

Everything about its state is remembered between sessions (position, size, compact mode, whether notes were expanded, and whether it was open at all), so it comes back exactly where you left it the next time you log in.

  • Click a tile to start focus on that project β€” same effect as tapping the tile on My Day. The active tile moves to the top and shows a live timer.
  • πŸ“Œ in the header toggles always-on-top. Un-pin it when you want it to sit behind other windows.
  • ↻ pulls fresh tiles right away (and checks for a newer client version). Use it after you've changed something on My Day in the browser.
  • ⊞ / ⊟ switches compact mode for when you want it out of the way.
  • The line under the header is your day at a glance β€” total tracked today plus the project you've spent the most time in.
  • Notes β€” type a meeting or session note straight onto the active tile; it saves on its own. The expand/collapse state of the note box persists.
  • Tasks β€” pick or create a task for the active project inline, without opening the web app.
  • πŸ“Ž Log to Salesforce appears on the active tile in two cases: the focus session is linked to an Outlook meeting, or the focused project has a client set. One click files the session against the matching Salesforce record.
  • resize β—’ in the bottom-right corner drags the window to whatever size you like; drag the header to move it, and it snaps to screen edges.

Default focus (v1.6.23+)

If most of your days start on the same project, right-click the tray while that focus is running and choose πŸ“Œ Set current focus as default. From then on the client asks the server to open that project (and task, if you set one) automatically when you log in β€” once per day, and never on top of a session that's already running. Clear default focus turns it off. If your machine starts with no network, the client keeps retrying quietly until it can reach the server.

When the network drops (v1.6.24+)

Events used to be lost if the server was unreachable at flush time. Now anything the server never saw is written to a local spool file and re-sent oldest-first at the start of the next flush, so a flight or a dead Wi-Fi hour backfills itself once you're online again β€” you don't have to do anything, and you don't need to keep the app in the foreground.

The spool is deliberately bounded: records older than 7 days are dropped (a week-late capture isn't worth filing), as are records beyond 4,000 or 4 MB, and a single payload the server keeps rejecting is abandoned after 10 attempts. Only a genuinely unreachable server spools β€” if the server answers at all, even with an error, behaviour is exactly as before.

How tracking decides "active vs idle vs walked-away" (v1.6.5+)

The client samples the foreground app + window title every 10 seconds. It then categorizes each sample using a layered idle-detection model:

Signal Category
Workstation locked Dropped β€” user is genuinely away
Recent keyboard / mouse input (< 2 min) Active
Foreground app is Teams / Zoom / Webex / Meet / Skype / Slack / Discord / etc. (the meeting whitelist) Active even with no input β€” user is in a call
Microphone in use anywhere on the machine Active β€” user is on a call or dictating
Camera in use Active β€” user is in a video meeting
No input for 2-10 min, foreground app stable Passive β€” captured + tagged so reports can distinguish "actively typing" from "window focused but reading"
No input for 10+ min, no audio/video signals Dropped

Privacy: only the boolean state of mic/camera is read (same data Windows uses for its tray privacy indicator). No audio or video content is captured or transmitted.

Every 5 minutes the client batches its samples and POSTs to /api/events. Events are tagged with passive_minutes separate from total minutes so the soft-idle time is auditable.

Machine monitoring (v1.6.25+)

Off by default, and opt-in per machine. This is separate from activity tracking and answers a different question: how hard is this PC working, so engineering can see which machines in the fleet are free.

Turn it on from the tray: πŸ–₯ Machine monitoring. Machine monitoring settings… opens a small window with the Fleet address, the registration token, the name this PC appears under (defaults to the Windows computer name), and the reporting interval (30 seconds minimum).

What gets sent: CPU, memory, disk and GPU load, plus a one-time hardware description at registration β€” hostname, Windows version, CPU model, core count, total memory, and GPU models. No screen contents, no window titles, no keystrokes, no activity data. Nothing that identifies what you're working on.

GPU figures need an NVIDIA driver. On any other machine the GPU fields stay empty and everything else still reports.

If the client can't reach Fleet it keeps retrying quietly and the tray status says so β€” a failing heartbeat never affects activity tracking, which runs completely independently.

Auto-update + cleanup (v1.6.4+)

The client checks for a newer version at every Windows login and every 24 hours while running. If found, it downloads in the background, verifies a SHA-256 hash, kills any stale otiumwork-client.exe processes, deletes orphan .exe copies in Downloads / Desktop / OneDrive folders, and relaunches itself. The same cleanup runs on every fresh launch, so a freshly-downloaded .exe always sweeps stale versions before starting.

Troubleshooting

Tray icon is RED with a "!" badge: - Your credentials are being rejected. Right-click β†’ top item ("⚠ Authentication failed β€” Reconfigure") β†’ enter the correct email + 22-character company code (paste, don't retype).

Tray icon doesn't appear at all: - Click the ^ arrow near the clock; it might be hidden there. Drag it out onto the taskbar if so. - Check Task Manager β†’ Details tab for otiumwork-client.exe. If it's not running, log off/on.

Events aren't flowing: - Open the log file: paste %APPDATA%\OtiumWork\client.log into File Explorer and press Enter. Scroll to the bottom. Any WARN / ERROR lines explain what's wrong. - A 401 in the log = wrong credentials β†’ Reconfigure. - Check your internet connection.

I paused and forgot to resume: - Right-click the icon β†’ Resume tracking. It won't catch up on missed time β€” tracking only starts from the moment you resume.

The widget vanished behind my other windows: - Its πŸ“Œ pin got switched off. Re-open it from the tray (πŸ“Œ Show floating tiles) and click πŸ“Œ in the widget's header until it's filled again.

The widget shows stale tiles after I changed something in the browser: - It refreshes on a 60-second tick. Click ↻ in its header, or Sync tiles now in the tray, to pull immediately.

Timestamps look shifted after I travelled: - The client reports its own local timezone to the server (v1.6.22+), so your day follows the machine. If it still looks wrong, check the Windows clock/timezone setting first.

The company uses TLS inspection / a corporate proxy: - Since v1.6.21 the client validates certificates against the Windows certificate store, so a corporate root CA installed on the machine is trusted automatically. Older clients failed to connect in this setup β€” update first before debugging anything else.

Uninstall

  1. Run otiumwork-client.exe --uninstall from a Windows command prompt, or
  2. Delete %LOCALAPPDATA%\OtiumWork\ manually.

Your captured events remain on the OtiumWork server β€” uninstalling just stops future capture.


See something wrong or outdated in this article? Report it β†’