ENTERPRISE SOFTWARE

Process Discovery
Tool

Enterprise-grade continuous monitoring for process mining and business intelligence. Designed for mission-critical deployments.

01

Platform Downloads

Chronos ships in 3 versions. The choice mostly comes down to whether the machine has admin rights and internet access at install time:

Criterion Enterprise Standard User
Admin rights Required by default — per-user only with MSIINSTALLPERUSER=1 Not required
Internet on first run Required — downloads AI models on first run Not required — fully offline
Bundled dependencies Smaller installer — FFmpeg & AI models (below) not included; fetched on first run if internet access allows it VC++ runtime, FFmpeg & AI models (below) all bundled in the installer
Install scope Per-machine by default (dual-scope MSI) Per-user only
Installer format MSI EXE bundle
Best for Networked machines, smallest download Individual installs on a machine you don't administer

The four "AI models" cover: speech-to-text transcription, voice activity detection (so only speech gets transcribed), speaker segmentation (splitting audio by speaker turns), and speaker identification. Enterprise and User bundle all four in the installer, along with FFmpeg. Standard ships without any of them and fetches them on first run — that download needs unrestricted outbound internet access, so it can fail on machines behind a corporate proxy or firewall, leaving Chronos without FFmpeg until it's made available another way.

Standard Edition

Lightweight installer — ships without FFmpeg or AI models. Fetches both on first run, which needs unrestricted internet access.

  • Smaller download
  • Fetches FFmpeg & models online
  • Standard MSI
  • System-wide install
987fb047c61fd121cad92de4b8c2c079dcd748ce6fdf38992b097db432be599c

User Edition

Per-user installation without administrator privileges. Suitable for individual deployments. The bundle is the per-user installer; the Standard MSI is dual-scope and installs per-user when run with MSIINSTALLPERUSER=1 (or non-elevated), but needs internet on first run.

  • No admin rights
  • User-scoped
  • Fully offline — FFmpeg & AI models bundled
  • Quick setup
chronos-0.3.4-setup-user-bundle.exe 8a2847066d5dbe4ef5b990e6a67d9fc8d169303314a9789e60611ec236713d99

Apple Silicon

M1/M2/M3

Native ARM64 build with Metal GPU acceleration.

Intel x86_64

Intel

Optimized for Intel-based Mac systems.

Linux x86_64

Ubuntu 20.04+

Compatible with Ubuntu, Debian, and equivalent distributions.

02

System Requirements

MINIMUM
Processor Dual-core 2GHz+
Memory 2GB RAM
Storage 20GB free disk space
Graphics Any modern graphics card
OS (Windows) Windows 10 64-bit
03

Setup Wizard

Double-clicking either EXE bundle — chronos-0.3.4-setup-enterprise.exe (per-machine, needs admin) or chronos-0.3.4-setup-user-bundle.exe (per-user, no UAC) — opens the wizard below instead of installing silently, and both bundles show the same one. The standalone MSI is not silent either: it has its own, plainer set of Windows Installer dialogs covering the same ground. The screenshots here are the bundle wizard.

Everything the wizard offers can also be set on the command line, so any choice made here can be reproduced unattended across a fleet. The reverse does not hold — these properties have no wizard field and are set on the command line only: CHRONOS_DATA_DIR, CHRONOS_MODELS_DIR, DISABLE_VAD, MERGE_AUDIO_DEVICES and MUX_AUDIO_INTO_VIDEO (04 — Installation Guide); CLOUD_CONCURRENCY, CLOUD_DB_BACKUP_INTERVAL and CLOUD_DELETE_AFTER_UPLOAD (06 — Cloud Storage).

One default also differs by route rather than being wrong either way, so set it explicitly if it matters to you: EXPORT_TRANSCRIPTS is on for the standalone MSI but off for both EXE bundles, where the wizard's checkbox or an explicit EXPORT_TRANSCRIPTS=1 turns it on.

!
The screenshots below come from the per-user bundle with Custom chosen, which is the path that shows every page. Typical skips the three configuration pages and installs the historical headless deployment: no filters, no observation period, no tray icon. Choose Custom for any real engagement — not because Typical is unsafe, but because the settings a deployment actually needs all live on the pages Typical skips.
Page by page
1
Welcome — product summary and the Master Service Agreement. Next stays disabled until you accept.
Chronos setup wizard on the Welcome page: a product summary, and a ticked checkbox reading "I have read and accept Uniphore's Master Service Agreement".
Welcome — Next stays greyed out until the agreement box is ticked.
2
Install TypeTypical records locally with safe defaults and skips to the summary (fully headless, no filters, no dates). Custom adds the three pages below. Choose Custom for any real engagement.
The Install Type page offering two radio buttons, Typical and Custom, with Typical selected.
Install Type — shown as it opens. Custom is what reveals the three configuration pages below.
3
Privacy — observation period (OBSERVATION_START_DATE / OBSERVATION_END_DATE, validated as you type) with optional daily hours (OBSERVATION_DAILY_START / OBSERVATION_DAILY_END, set as a pair), user-ID anonymization, the deny/allow app and URL lists, and transcript export. Includes a panel explaining where to read an app's process name off Task Manager.
The top of the Privacy page, with ms-teams.exe typed into Denied Apps: the note that apps match on any part of the name while URLs are regular expressions, the "How do I find an app's name?" panel, and the deny and allow boxes for apps and URLs. Transcript export, user-ID anonymization and the observation period follow further down the page.
Privacy — the deny list wants the process name (ms-teams.exe), not the window title. The panel on this page says where to read it off Task Manager.
4
Visibility — hide from the Programs list and Start menu, plus the end-user controls: tray icon (USER_UI), the on-screen pill, then user authority (USER_CONTROL_LEVEL) and how long a pause lasts before recording returns on its own (PAUSE_AUTO_RESUME_MINUTES, accepted here as 060) side by side. Everything here is off by default — auto-resume included, at 0, meaning a pause lasts until the person ends it — so clicking straight through gives the historical headless install.
The top of the Visibility page: the two checkboxes that hide Chronos from the Programs list and the Start menu, then the end-user controls — a checkbox for the notification-area icon, ticked here, and below it a checkbox for the on-screen pill. Under those, sharing one row, a user-authority dropdown set to "Pause and resume" on the left and a narrow box for the auto-resume minutes on the right, holding its default of 0.
Visibility — shown with the tray icon on and authority set to Pause and resume. Every control here is off (or View only, or 0) by default, so clicking straight through gives the historical headless install.
5
Cloud — optional upload to your own S3, GCS, Azure or MinIO bucket. Leave the bucket blank to keep everything on the machine.
The top of the Cloud Storage page: "Enable cloud upload" left unticked, which greys out the provider, bucket, prefix, region and endpoint fields below it. The per-provider credential fields follow further down.
Cloud Storage — left blank, which keeps every recording on the machine.
6
Ready — a summary of every choice, including the observation period and end-user controls. Read it before clicking Install; it is the last free chance to fix a mistyped date.
The Ready to Install page, showing the start of a plain-text summary of the selections made on the previous pages. The summary scrolls when it runs longer than the window.
Ready to Install — the last free chance to catch a mistyped date or a filter that names the wrong process.
7
Progress — installs the VC++ Redistributable if missing, then Chronos. When it finishes, log off and back on: recording starts from the logon task, not in the session that ran the installer.
04

Installation Guide

Installation Parameters
Parameter Description Default
CHRONOS_DATA_DIR Data storage location C:\ProgramData\Chronos
CHRONOS_MODELS_DIR AI models directory [DATA_DIR]\models
ANONYMIZE_USER_ID Anonymize user identity: pseudonymize (hashed ID) or anonymize (fixed "user") 0 (disabled)
HIDE_FROM_PROGRAMS Hide Chronos from the Windows "Apps & Features" / Programs list (stealth deployment) 0 (visible)
HIDE_FROM_START_MENU Suppress the Chronos shortcut in the user's Start menu 0 (shortcut created)
DISABLE_VAD Turn off voice-activity detection, so audio is transcribed continuously instead of only where speech was detected 1 (VAD off)
MERGE_AUDIO_DEVICES Mix every capture device into one stream rather than recording each separately 1 (merged)
MUX_AUDIO_INTO_VIDEO Write audio into the MP4 alongside the video instead of as a separate file 1 (muxed)
Enterprise Silent Install
# Default installation
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log

# Custom data directory
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart CHRONOS_DATA_DIR=D:\Chronos /log install.log
Standard MSI Install
# Default installation
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart /L*V "install.log"

# Custom data directory
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart CHRONOS_DATA_DIR="D:\Chronos" /L*V "install.log"

Both EXE bundles also open an interactive wizard when double-clicked, covering the same settings as the properties above. See 03 — Setup Wizard for a page-by-page walkthrough with screenshots.

Post-Installation Verification
Chronos auto-starts after installation
Configured for user login auto-start (10s delay)
Recording begins with default settings
Multi-user support enabled
Verification Commands
# Check process status
Get-Process chronos

# View configuration
Get-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos"

# Tail logs
Get-Content "C:\ProgramData\Chronos\logs\chronos-task.log" -Tail 20
05

Storage Usage

2-3 GB
Per 8-hour workday

Typical recording output with default settings

06

Cloud Storage

Chronos can automatically upload recordings, audio, and database backups to cloud storage. Cloud storage is configured at install time by passing parameters to the Windows installer. Credentials are encrypted using Windows DPAPI and stored securely in the registry.

Cloud Upload Parameters
Parameter Description Example
CLOUD_ENABLED Enable cloud upload. 1 = enabled 1
CLOUD_PROVIDER Provider: aws-s3, gcs, azure-blob, minio aws-s3
CLOUD_BUCKET Bucket or container name my-chronos-bucket
CLOUD_PREFIX Path prefix inside the bucket acme-pilot
CLOUD_REGION AWS region (AWS S3 only) us-east-1
CLOUD_ENDPOINT Custom endpoint URL (MinIO / S3-compatible) http://minio:9000
CLOUD_DELETE_AFTER_UPLOAD Defaults to 1 — a local recording is removed once it has been uploaded. Pass CLOUD_DELETE_AFTER_UPLOAD=0 to keep local copies as well 1
CLOUD_CONCURRENCY How many files upload at once. Raise it on a fast link, lower it to 1 where the agent's bandwidth is shared with voice traffic 2 (default)
CLOUD_DB_BACKUP_INTERVAL How often the SQLite database itself is uploaded, as a duration (24h, 6h, 30m). The database is what makes the recordings searchable, so this is separate from the media upload 24h (default)
EXPORT_TRANSCRIPTS Export audio transcripts as JSON alongside recordings. The default differs by route: 1 for the standalone MSI, 0 for both EXE bundles unless the wizard checkbox or the property sets it. Pass it explicitly if it matters 1
Credential Parameters
Parameter Description Provider
AWS_ACCESS_KEY_ID IAM access key ID AWS S3, MinIO
AWS_SECRET_ACCESS_KEY IAM secret access key AWS S3, MinIO
GCS_CREDENTIALS_PATH Path to GCS service account JSON file on disk GCS
AZURE_STORAGE_ACCOUNT Azure Storage account name Azure
AZURE_STORAGE_KEY Azure Storage account key Azure
AZURE_CONNECTION_STRING Full Azure connection string (alternative to key) Azure
Enterprise — AWS S3
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  CLOUD_ENABLED=1 `
  CLOUD_PROVIDER=aws-s3 `
  CLOUD_BUCKET=my-chronos-bucket `
  CLOUD_REGION=us-east-1 `
  CLOUD_PREFIX=acme-pilot `
  AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE `
  AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Standard MSI — AWS S3
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart /L*V "install.log" `
  CLOUD_ENABLED=1 `
  CLOUD_PROVIDER=aws-s3 `
  CLOUD_BUCKET=my-chronos-bucket `
  CLOUD_REGION=us-east-1 `
  CLOUD_PREFIX=acme-pilot `
  AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE `
  AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Enterprise — Google Cloud Storage
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  CLOUD_ENABLED=1 `
  CLOUD_PROVIDER=gcs `
  CLOUD_BUCKET=my-chronos-bucket `
  CLOUD_PREFIX=acme-pilot `
  GCS_CREDENTIALS_PATH=C:\path\to\service-account-key.json
Standard MSI — Google Cloud Storage
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart /L*V "install.log" `
  CLOUD_ENABLED=1 `
  CLOUD_PROVIDER=gcs `
  CLOUD_BUCKET=my-chronos-bucket `
  CLOUD_PREFIX=acme-pilot `
  GCS_CREDENTIALS_PATH=C:\path\to\service-account-key.json
!
The service account JSON file must exist at GCS_CREDENTIALS_PATH on every machine before Chronos starts. The installer stores only the path — deploy the JSON file separately.
Enterprise — Azure Blob (storage key)
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  CLOUD_ENABLED=1 `
  CLOUD_PROVIDER=azure-blob `
  CLOUD_BUCKET=my-container `
  CLOUD_PREFIX=acme-pilot `
  AZURE_STORAGE_ACCOUNT=myaccount `
  AZURE_STORAGE_KEY=base64encodedkey==
Enterprise — Azure Blob (connection string)
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  CLOUD_ENABLED=1 `
  CLOUD_PROVIDER=azure-blob `
  CLOUD_BUCKET=my-container `
  CLOUD_PREFIX=acme-pilot `
  AZURE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=...;EndpointSuffix=core.windows.net"
Enterprise — MinIO (self-hosted S3)
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  CLOUD_ENABLED=1 `
  CLOUD_PROVIDER=minio `
  CLOUD_BUCKET=chronos-data `
  CLOUD_ENDPOINT=http://minio-server:9000 `
  CLOUD_PREFIX=acme-pilot `
  AWS_ACCESS_KEY_ID=minioadmin `
  AWS_SECRET_ACCESS_KEY=minioadmin
Transcript Export
Add EXPORT_TRANSCRIPTS=1 to any installer command above to export Whisper transcripts as JSON alongside each audio recording
Transcript JSON files are uploaded to cloud storage together with the audio files
All transcription runs locally via Whisper — no audio is sent to external services
Verify Cloud Configuration
# Check cloud settings in registry
Get-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos\Cloud"

# Watch upload activity in logs
Get-Content "C:\ProgramData\Chronos\logs\chronos-task.log" -Wait | Select-String "cloud|upload"
07

Recording Filter

Chronos can selectively blur screen recordings and mute audio based on application names and/or browser URLs. This protects sensitive content (email, messaging apps) while recording work activity. Filters are configured at install time or updated via registry post-install.

How It Works
Deny list (default): Specified apps/URLs are blurred; everything else recorded normally
Allow list: Only specified apps/URLs are recorded; everything else blurred
Combined: Deny list takes priority — denied content is always blurred even if in the allow list
Screen blur: Denied frames are replaced with a Gaussian blur in the video
Audio mute: Audio is muted while a denied app/URL is focused
Finding an App Name

The name Chronos matches is the program's process file name, not its window title and not the label on the Start menu. To look one up on the machine you are configuring:

1
Bring the app you want to filter to the foreground.
2
Press Ctrl+Shift+Esc to open Task Manager.
3
Open the Details tab and read the Name column — for example ms-teams.exe, chrome.exe, EXCEL.EXE.
Or from PowerShell: Get-Process | Where-Object { $_.MainWindowTitle } | Select-Object ProcessName, MainWindowTitle — the ProcessName column is the name to use (add .exe or leave it off, both match).

Matching is a case-insensitive substring, so any fragment of the name is enough: teams covers ms-teams.exe, and word covers WINWORD.EXE. The flip side is that a short fragment catches more than you may intend — code matches both Code.exe and vscode.exe. Use the full file name when you want to be precise.

Common mistake: using the friendly name. Microsoft Teams runs as ms-teams.exe, so Microsoft Teams never matches while teams does. The same applies to Microsoft Word (WINWORD.EXE) and Visual Studio Code (Code.exe).

Filter Parameters
Parameter Description Example
DENIED_APPS Semicolon-separated app names to blur (case-insensitive substring match) Teams;Slack
ALLOWED_APPS Semicolon-separated app names to record (everything else blurred) msedge.exe;notepad.exe
DENIED_URLS Semicolon-separated regex patterns for URLs to blur mail\.google\.com;.*\.youtube\.com
ALLOWED_URLS Semicolon-separated regex patterns for URLs to record github\.com;jira\.atlassian\.com
!
App matching uses case-insensitive substring (e.g., Teams matches ms-teams.exe). URL matching uses regex patterns and only works for browser apps (Edge, Chrome, Firefox). When using ALLOWED_URLS, you must also include the browser in ALLOWED_APPS for URL detection to work. Filter values are stored as plaintext in the registry (they are app names and URL patterns, not secrets).
Enterprise — Deny Specific Apps and URLs
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  DENIED_APPS="Teams" `
  DENIED_URLS="mail\.google\.com;.*\.youtube\.com"
Standard MSI — Deny Specific Apps and URLs
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart /L*V "install.log" `
  DENIED_APPS="Teams" `
  DENIED_URLS="mail\.google\.com;.*\.youtube\.com"
Enterprise — Allow Only Specific Apps
# Only record Edge browser and Notepad, blur everything else
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  ALLOWED_APPS="msedge.exe;notepad.exe"
Enterprise — Allow Only Specific URLs
# Record Edge only when on GitHub or GCS console, blur all other sites and apps
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  ALLOWED_APPS="msedge.exe;Explorer.EXE" `
  ALLOWED_URLS="github\.com;console\.cloud\.google\.com"
Enterprise — Allow List with Deny Exception
# Record Edge on any google.com site EXCEPT Gmail
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  ALLOWED_APPS="msedge.exe" `
  ALLOWED_URLS=".*\.google\.com" `
  DENIED_URLS="mail\.google\.com"
Standard MSI — Allow Only Specific Apps
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart /L*V "install.log" `
  ALLOWED_APPS="msedge.exe;notepad.exe"
Verify Recording Filter
# View recording filter settings from registry
Get-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos" | Select-Object DeniedApps, AllowedApps, DeniedUrls, AllowedUrls
Update Filters Without Reinstalling
# Add or update denied apps
Set-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos" -Name "DeniedApps" -Value "Teams;Slack"

# Add or update denied URLs
Set-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos" -Name "DeniedUrls" -Value "mail\.google\.com;.*\.youtube\.com"

# Remove a filter (set to empty string)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos" -Name "DeniedApps" -Value ""

# Restart Chronos to apply changes
Stop-ScheduledTask -TaskName "Chronos"; Start-Sleep 3; Start-ScheduledTask -TaskName "Chronos"
!
The filters above are the administrator baseline. On installs with USER_UI=1 and USER_CONTROL_LEVEL=pause, end users can add their own rules from the tray program's Privacy settings window without touching the registry. That layer is deny-only — a user rule can only make Chronos record less, never more, and there is no allow field in its schema at all. The baseline stays read-only to them, shown with a Managed by your organization badge on a per-machine install — or Set when Chronos was installed on a per-user one, where the baseline is HKCU and was chosen by the person using the machine rather than by an administrator. The window also opens when Chronos is not currently recording: neither layer lives in the recorder's memory, so a user who has just paused, or whose machine is outside its observation window, can still change their own rules — the window says the change will be applied the next time Chronos starts.
08

Privacy Controls

Chronos can anonymize the user identity before any data is stored or uploaded. This is required in jurisdictions with strict worker-protection regulations (for example, Italy) where deployed solutions are prohibited from tracking individual agent performance.

How It Works
anonymize: Replaces the OS username and real name stored in the session record with a fixed "user" constant
pseudonymize: Replaces the username with a deterministic 8-character SHA-256 hash — preserves cohort analytics while hiding real identity (DPIA-friendly)
Where it applies: The username and realname columns of the session record. It does not cover everything: the machine's device name and hostname are stored verbatim in either mode, and log output is not redacted. On a fleet where the device name identifies its user, treat this as reducing the identifiers on record rather than as irreversible anonymization
Privacy Parameters
Parameter Description Example
ANONYMIZE_USER_ID Set to anonymize for full GDPR anonymization, or pseudonymize for DPIA-compliant hashed IDs (default: disabled) anonymize
Enterprise — Full GDPR Anonymization
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  ANONYMIZE_USER_ID=anonymize
Standard MSI — Full GDPR Anonymization
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart /L*V "install.log" `
  ANONYMIZE_USER_ID=anonymize
Enterprise — DPIA-compliant Pseudonymization
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart /log install.log `
  ANONYMIZE_USER_ID=pseudonymize
Standard MSI — DPIA-compliant Pseudonymization
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart /L*V "install.log" `
  ANONYMIZE_USER_ID=pseudonymize
Verify Anonymization Setting
# View privacy setting from registry
Get-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos" | Select-Object AnonymizeUserId
09

End-User Controls

Chronos records silently by default, with no user interface at all. Deployments that need transparency — or a works-council agreement that grants employees a right to pause — can opt in to a notification-area icon showing recording status and, separately, a user-accessible pause. Every setting below is off by default; a default install installs no user-facing program at all.

End-User Control Parameters
Parameter Description Default
USER_UI Install and launch the tray program (notification-area icon with recording status) 0
USER_CONTROL_LEVEL none = status only, recording cannot be stopped; pause = the user may pause, and the pause lasts until they resume it; full = accepted alias of pause, no behavioural difference none
USER_UI_SHOW_PILL Also show an on-screen recording indicator. Requires USER_UI=1. The pill is excluded from the capture path, so it is not burned into the recordings — see the note under the table 0
PAUSE_AUTO_RESUME_MINUTES Minutes after which a user-initiated pause resumes automatically. 0 = never. The tray starts only open-ended pauses, so this is what bounds every pause a user can start. Offered on the Visibility page of the wizard, which accepts 060 and will not advance past a larger value it read off the machine; the standard MSI's own dialog and the command line accept any number, and the recorder logs a warning above 60 but honours it rather than clamping 0
The on-screen pill never reaches the recordings

The pill sits on screen for the whole session, so if the capture path saw it, every frame of every recording would carry a watermark. It is created with SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE), which keeps it out of the captured frames.

That API is documented against DWM and PrintWindow capture rather than the desktop-duplication path Chronos uses, so we verify it rather than assume it. The check records twice through the real pipeline at the installed settings — once with a colour-identical decoy window that deliberately does not call the API, once with only the real pill. The decoy was detected in 19 of 19 sampled frames; the pill in 0 of 19, with its window confirmed on screen throughout via UI Automation. The decoy is what makes the second number mean anything: without it, “found nothing” would be equally consistent with a detector that cannot see.

One consequence worth knowing: the same exclusion hides the pill from ordinary screen capture too, so it does not show up in Print Screen, Snipping Tool or most meeting-share tools. It is visible to the person at the machine, which is its purpose.

The user can also put the pill away: its and a matching Hide the on-screen indicator row in the tray menu both dismiss it for the session, and the row then offers to bring it back. This is not an opt-out of transparency — the dismissal is never written to disk, so the pill returns at the next sign-in, UserUiShowPill still reads 1, and the tray icon stays where it is either way. A pill that cannot be moved off the one control someone needs is a reason to fight the software rather than accept it.

Transparency only — icon visible, recording mandatory
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart ALLUSERS=1 `
  USER_UI=1
Consent mode — user may pause, auto-resume after 30 minutes
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart `
  USER_UI=1 USER_CONTROL_LEVEL=pause PAUSE_AUTO_RESUME_MINUTES=30
Upgrades keep these settings

An upgrade or repair that does not repeat these properties keeps whatever the machine is already configured with. The installer reads the settings back out of the registry (both hives, 64-bit view) before deciding what to write, so chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart on a consent-mode machine leaves the tray on, at the same control level. Anything named on the new command line still wins, so an upgrade is also how you change a setting fleet-wide. The settings that carry over are USER_UI, USER_UI_SHOW_PILL, USER_CONTROL_LEVEL, PAUSE_AUTO_RESUME_MINUTES, OBSERVATION_START_DATE, OBSERVATION_END_DATE, OBSERVATION_DAILY_START, OBSERVATION_DAILY_END, and the four recording filter lists (DENIED_APPS, ALLOWED_APPS, DENIED_URLS, ALLOWED_URLS). An interactive upgrade keeps them too — the wizard reads the installed values during its detect phase and shows them on the Privacy and Visibility pages, except for the four lists, whose text boxes always open empty; leaving them empty is silence, so the installed lists survive.

A list cannot be emptied from the installer. Windows Installer cannot tell DENIED_APPS="" from DENIED_APPS never being mentioned, so an empty value reads as “say nothing” and the remembered list wins. To clear one, delete the registry value and restart the Chronos task, or uninstall before reinstalling. The asymmetry is deliberate: remembering a list too long means recording less than intended, which an operator notices; forgetting one means recording an app the customer promised their staff would never be recorded.

Not carried over — pre-existing behaviour, unchanged here. Cloud storage (CLOUD_*, AWS_*), HIDE_FROM_PROGRAMS, HIDE_FROM_START_MENU, the anonymization level, and the audio/export toggles (DISABLE_VAD, MERGE_AUDIO_DEVICES, MUX_AUDIO_INTO_VIDEO, EXPORT_TRANSCRIPTS) revert to their defaults on an upgrade that does not repeat them. If your fleet uses any of those, keep the original install command line in the ticket and re-use it verbatim, adding only what you mean to change.

Verify End-User Controls
# A default (headless) install reports 0 / none / 0 / 0
Get-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos" |
    Select-Object UserUiEnabled, UserControlLevel, UserUiShowPill, PauseAutoResumeMinutes

# ...and the tray program is not present on disk at all
Test-Path "C:\Program Files\Chronos\bin\chronos-tray.exe"
10

Observation Period

A process-discovery engagement usually runs for a fixed number of weeks, but the machines are provisioned before it starts and collected long after it ends. Give Chronos a date range and it stays installed but idle outside it — no second visit to each machine to switch recording on, and no data captured outside the window you agreed with the works council. An optional pair of daily times narrows that range further, to the shift you actually agreed to observe. Leave all four blank and Chronos records whenever the machine is on, exactly as before.

Observation Period Parameters
Parameter Description Default
OBSERVATION_START_DATE Recording does not begin before this local calendar date. Format YYYY-MM-DD empty
OBSERVATION_END_DATE Recording stops after this local calendar date. Format YYYY-MM-DD empty
OBSERVATION_DAILY_START Time of day recording starts, inclusive. Format HH:mm, 24-hour local time. Must be set together with the end time empty
OBSERVATION_DAILY_END Time of day recording stops, exclusive. Format HH:mm. An end earlier than the start crosses midnight (night shift) empty

Both dates are inclusive and evaluated against the machine's local calendar date. One side may be left open — a start with no end, or an end with no start. At the end of the window Chronos stops recording and stays installed and idle; it does not uninstall itself. Outside the window neither screen nor microphone is captured — a machine deployed a week early opens no video file and no audio stream until the start date arrives.

A bad period stops recording rather than being ignored. The wizard refuses to advance past the Privacy page while a date is malformed or the start is after the end, so an interactive install cannot ship one. An unattended install can: msiexec and the bundle's /quiet path accept whatever you pass. Chronos then records nothing, reports observation.state = misconfigured at /recording/status, names the offending value in <data dir>\logs\chronos-task-<date>.log, and the tray — where it is deployed — tells the user to contact IT. This is deliberate: a typo must not widen what is recorded. Recording nothing for a day is recoverable; recording outside the agreed period is not.

The daily hours are an optional limit inside those dates, and they only ever narrow the range — outside the dates nothing is recorded whatever the clock says. The start time is inclusive and the end time is exclusive: 09:0018:00 records from 09:00:00 up to but not including 18:00:00. An end time earlier than the start is an overnight window: 22:0006:00 records from 22:00 through midnight until 06:00 the next morning, which is how a night shift is configured. Both times must be supplied together — one alone is a configuration error, as are two equal times — and both are the machine's local 24-hour clock, at minute granularity.

Four-week engagement, headless
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart ALLUSERS=1 `
  OBSERVATION_START_DATE=2026-09-01 OBSERVATION_END_DATE=2026-09-28
Dates plus a user-visible tray icon
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart `
  OBSERVATION_START_DATE=2026-09-01 OBSERVATION_END_DATE=2026-09-28 `
  USER_UI=1 USER_CONTROL_LEVEL=pause
Office hours only, on the agreed dates
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart ALLUSERS=1 `
  OBSERVATION_START_DATE=2026-09-01 OBSERVATION_END_DATE=2026-09-28 `
  OBSERVATION_DAILY_START=09:00 OBSERVATION_DAILY_END=18:00
Night shift, crossing midnight
.\chronos-0.3.4-setup-enterprise.exe /install /quiet /norestart `
  OBSERVATION_START_DATE=2026-09-01 OBSERVATION_END_DATE=2026-09-28 `
  OBSERVATION_DAILY_START=22:00 OBSERVATION_DAILY_END=06:00

With USER_UI=1 the tray icon explains itself: before the window opens it reads not recording - observation period starts 2026-09-01, after the end date not recording - observation period ended 2026-09-28, and outside the day's hours not recording - recording hours are 09:00-18:00. A second menu line always shows the configured window, so "when does this start?" is answerable without reading the registry. If USER_CONTROL_LEVEL is pause or full, the menu also offers Start recording now so a user who is ready early can begin. That exception covers the one closed stretch they overrode and nothing beyond it: it lapses at the next boundary of the window, or at the next logon, whichever comes first. Starting at 07:00 under OBSERVATION_DAILY_START=09:00 records straight through 09:00, and the 18:00 close still happens on time. With none there is no such control and the dates are absolute.

Two states cannot be started at all, and in both the menu item is greyed out and the endpoint returns 403. After the end date it reads the observation period has ended — every other hold-off has a later boundary that reopens it, this one does not, so an override would have no bound to expire at; extending an engagement means setting a new end date and restarting the scheduled task. A window that cannot be parsed reads recording cannot start - ask your it administrator: with no readable window there is no period to record inside, so starting would mean recording with no end date. Each boundary crossing is written to the recording_events table with source=schedule; a user starting early is recorded as source=user, so the audit trail distinguishes the two.

Verify the Observation Period
# What the installer stored (empty on an unlimited install)
Get-ItemProperty -Path "HKLM:\SOFTWARE\Uniphore\Chronos" |
    Select-Object ObservationStartDate, ObservationEndDate, ObservationDailyStart, ObservationDailyEnd

# What the recorder currently believes (tray-enabled installs)
# Read the token file at call time, never from a cached copy: Chronos mints a new one
# on every start, so a token saved earlier stops working after the next restart.
Invoke-RestMethod http://127.0.0.1:3030/recording/status `
    -Headers @{ 'X-Chronos-Control-Token' = (Get-Content 'C:\ProgramData\Chronos\control-token' -Raw).Trim() } |
    Select-Object -ExpandProperty observation

The dates and hours can be changed after installation by editing ObservationStartDate, ObservationEndDate, ObservationDailyStart and ObservationDailyEnd under HKLM\SOFTWARE\Uniphore\Chronos (or HKCU\Software\Uniphore\Chronos for a per-user install) and restarting the Chronos scheduled task. This works in both directions — extending an engagement needs no reinstall. While Chronos is running the window is re-evaluated every 30 seconds, so a machine left on over the end date stops on its own and a daily boundary can be up to half a minute late; the video segment in progress is finalized first. A value that does not parse — a date that is not YYYY-MM-DD, a time that is not HH:mm, one daily time without the other, or a start after the end — stops recording rather than being ignored. Chronos stays installed and running, records nothing, reports observation.state = misconfigured at /recording/status, and (where the tray is deployed) tells the user the recording period is not configured correctly and to contact IT. The launcher names the value at fault in chronos-task-<date>.log. This is deliberate: ignoring a typo would leave the machine recording continuously, or all day inside its dates, which is the one outcome an observation period exists to prevent and the only one that cannot be undone afterwards. All four values also survive an upgrade or repair that does not repeat them — see Upgrades keep these settings, which also lists the older settings that do not.

Ending an engagement early through the installer needs one extra switch, because a date has no "off" spelling: an empty OBSERVATION_END_DATE= cannot be told apart from not passing it at all, so a reinstall keeps the configured period rather than removing it. Say so explicitly instead:

Remove the observation period
# Clears all four values; the machine records continuously again.
# Note the verb: this runs against a machine that already has Chronos on it, so it is a
# reconfigure, not an install. /repair is what re-applies properties to the installed build.
.\chronos-0.3.4-setup-enterprise.exe /repair /quiet /norestart CHRONOS_CLEAR_OBSERVATION=1

# Or against the standalone MSI. REINSTALL=ALL REINSTALLMODE=vomus is required for the same
# reason: a plain /i of the version already installed fails with 1638, and it is the 'm' and 'u'
# in the mode string that rewrite the registry values the observation period actually lives in.
msiexec /i "chronos-0.3.4-setup.msi" /qn /norestart ALLUSERS=1 `
  REINSTALL=ALL REINSTALLMODE=vomus CHRONOS_CLEAR_OBSERVATION=1

Drop ALLUSERS=1 if the machine has a per-user install — and use the per-user bundle rather than the enterprise one, since a bundle can only reconfigure the scope it installed.

CHRONOS_CLEAR_OBSERVATION=1 cannot be combined with any OBSERVATION_* value — to change a period, pass the new dates, which replace the old ones on their own. In the wizard, clearing the date and time boxes on the Privacy page does the same job: once you have edited them, leaving all four empty is read as "no period" rather than as silence. Editing the registry directly works too — delete the four values and restart the scheduled task.

11

Frequently Asked Questions

01 What distinguishes Enterprise from Standard editions? +
Enterprise edition bundles all dependencies (VC++ runtime, FFmpeg, AI models) for offline deployment in air-gapped environments. Standard edition downloads models on first run, requiring internet connectivity.
02 Are administrator privileges required? +
Standard and Enterprise editions require administrator privileges for system-wide installation. User edition can be installed without admin rights, limited to per-user AppData directory.
03 Can data storage location be customized? +
Yes, use CHRONOS_DATA_DIR parameter during installation. Ensure path is on fixed local drive with sufficient space. Avoid network paths and removable drives.
04 Uninstallation procedures? +
Standard: msiexec /x "chronos-0.3.4-setup.msi" /qn
Enterprise: .\chronos-0.3.4-setup-enterprise.exe /uninstall /quiet
Note: Uninstallation removes application but preserves recorded data.
05 Multi-monitor support? +
Chronos automatically detects and records all connected monitors. Each monitor generates a separate video stream for individual review.
06 Process status verification? +
PowerShell: Get-Process chronos
Task Manager: Look for "chronos.exe"
Logs: C:\ProgramData\Chronos\logs\
07 Does Chronos work with Citrix Workspace? +
Yes, Chronos can work with Citrix Workspace, though the answer depends on the customer's environment.

Chronos runs on the user's physical Windows/Mac machine and records the screen, including the Citrix Workspace window showing the remote session. In most deployments this works out of the box. Two caveats worth flagging up front:

1. Citrix App Protection. If the Citrix environment has the anti-screen-capture policy enabled on the apps or desktops being monitored, the Citrix window will appear blank/black in Chronos recordings by design. The fix is straightforward — the customer's Citrix admin adds chronos.exe to the Screen Capture Allow List in Citrix Cloud. We can share the exact entry to allow-list.

2. Chronos deployed inside the Citrix-hosted desktop. Technically possible. This is usually the preferred setup when the activity to be recorded happens inside Citrix, because local screen-capture protections may prevent tools on the user's local machine from recording the Citrix window.

To give a more specific answer, we need to confirm:
• Will Chronos be installed on users' physical endpoints, or is the customer considering installing it inside the Citrix virtual desktop itself?
• Is App Protection / anti-screen-capture enabled in their Citrix environment today?
08 Can PII be redacted before data reaches the Uniphore cloud? +
Yes. Uniphore provides a redaction service for removing PII from recordings. By default, redaction can be performed on the Uniphore side during ingestion.

For customers with strict data-residency requirements who need PII removed before any data leaves their environment, Uniphore also offers a customer-deployed redaction worker (BYOC). The redaction service runs inside the customer's own environment — either in their cloud account or on an on-prem container host — and processes recordings before they cross to the Uniphore cloud.

How the customer-deployed flow works:
• Chronos endpoints upload recordings to a customer-owned input bucket.
• The redaction worker reads from that bucket, redacts video frames, audio, and OCR text, and writes the redacted output to a second customer-owned output bucket.
• Only the redacted output bucket is connected to the Uniphore cloud for downstream Process Discovery ingestion. Raw recordings never leave the customer environment.

Contact your Uniphore representative for support on this option.
09 Support channels? +
Contact your Uniphore representative for assistance.
10 How do I hide Chronos from the Programs list and Start menu? +
Pass HIDE_FROM_PROGRAMS=1 and/or HIDE_FROM_START_MENU=1 at install time. The defaults are visible (Chronos appears in Apps & Features and the Start menu) so endpoint-management tools can verify deployment. To install in stealth mode for environments where Chronos must not appear to end users:
msiexec /i chronos-0.3.4-setup.msi /qn HIDE_FROM_PROGRAMS=1 HIDE_FROM_START_MENU=1
When HIDE_FROM_PROGRAMS=1 the installer writes SystemComponent=1 to both the MSI and the Burn bundle ARP keys, so neither entry shows in the Programs list. Uninstall in stealth mode requires the command-line uninstall path described above.
11 Why can end users only add to the deny lists, never to the allow lists? +
Because an allow-list entry widens what is recorded, and a deny-list entry narrows it. With USER_CONTROL_LEVEL=pause, a user can add their own apps and URLs to the denied lists from the tray's Privacy settings, so they can always exclude something personal without asking anyone. They cannot add to the allowed lists, and they cannot remove or edit the entries the installer set — those are shown read-only and marked as managed by the organization.

The rule is that a user may make Chronos record less, never more. If users could edit the allow lists, then on a machine installed in strict mode — a non-empty allow list, meaning only matching apps are recorded — anyone could add an app to it and quietly bring a system outside the agreed scope into the recording, which is the opposite of what a recording filter is for. This is the same model as Chrome and Edge policies or macOS Managed Preferences: local settings can tighten a managed baseline but not loosen it.

It is enforced in the recorder, not in the window. The tray writes user additions to user-filters.json in the data directory, and Chronos unions only the denied_apps and denied_urls fields into the installed policy — an allowed_apps key added to that file by hand is ignored rather than obeyed.

With USER_CONTROL_LEVEL=none — the default — the Privacy settings window still opens from the tray, but every list in it is read-only and it says so: the lists then change only by reinstalling or by an administrator editing the registry. The deny-only rule applies to per-user installs as well, so a machine installed without admin rights behaves the same way.