Top performers
Live devices
0 onlineDepartment comparison
last 7 daysEmployees
| Name | Department | Position | Team | GitHub |
|---|
Enrolled devices
Assign employee, email & GitHub per host| Host | Employee | OS | Version | Status | Last seen |
|---|
Productivity by employee — today
Application usage — today
Set category & billable per app| Application | Time | Classification | Billable |
|---|
Department app rules
Override an app's classification for one department only — e.g. Photoshop counts as productive for Design, everyone else keeps the tenant-wide rule above| Department | App | Category | Billable |
|---|
Detail rules
Classify by browser URL or chat contact/group — takes priority over the app's own rule above. Leave Department blank for a tenant-wide rule; a department-specific rule overrides it for just that department.| App | Pattern | Department | Category | Billable | Used by |
|---|
Observed values
Distinct values actually captured recently — classify an app directly below, for one department or as the common rule| App | Value | Seen | Last seen | Employees |
|---|
Timeline —
| Time | Type | App | Window | Detail |
|---|
Billable report
| Employee | Host | Total Hours | Active | Idle | Productive | Unproductive | Neutral | Productivity % | Active Util. % | Overall Prod. % | Billable | Billable % | Commits | PRs |
|---|
Enrollment tokens
Generate a token, then set it as enrollment_token in the agent config (or bake into the MSI). Reusable tokens enroll many devices until they expire or are revoked.
| Token | Label | Type | Uses | Status | Expires |
|---|
Company
Timezone used for workday windows, daily Odoo sync, and every date/time shown across the dashboard -- regardless of where an admin is viewing from. Workday hours bound every Total Hours figure: a day starts at the first login or the start time, whichever is earlier, and never runs past the end time -- so a machine left logged on overnight stops accruing hours, and work past the end time is not counted.
GitHub integration
Connect a GitHub organization so each employee's commits and pull requests appear in the report. Paste a fine-scoped, read-only Personal Access Token. It is stored encrypted and never shown again.
GitHub employee mapping
Matches an employee's own work email against GitHub commit author emails in the org -- same idea as Odoo's auto-match. Never overwrites a username you set manually.
| Employee | GitHub username |
|---|
Odoo integrations
Every Odoo connection this system uses. Each is an independent, read-only connection with its own credentials and schedule. Select one to edit it.
| Integration | Target | Status | Sync schedule | Last sync | |
|---|---|---|---|---|---|
| Loading… | |||||
A connection with no URL configured is not set up yet — open it to add one.
Odoo integration
Read-only sync of employees, projects, tasks and timesheets from your Odoo instance. The API key is stored encrypted and never shown again. Disabling stops all Odoo API calls and hides synced data — the core app is unaffected.
Data to synchronize — each module has its own interval
| Module | Every | Last synced |
|---|
Timesheets is fetched first and yields the project and task ids the modules below it are fetched by, so setting one of those faster than Timesheets will not make it fresher — setting it slower does skip Odoo calls. Employees is fetched independently.
Odoo employee mapping
Map each synced Odoo employee to a FocusTime employee. Auto Match links exact email matches; ambiguous matches are never auto-mapped.
| Odoo employee | FocusTime employee | Source |
|---|
Daily productivity summary (Discuss)
Once a day, every mapped employee gets a private direct message in Odoo Discuss with their own previous day's summary and a link to a fuller report — visible only to them, never posted anywhere a manager would see it.
Odoo Accounting integration
A second, independent Odoo connection -- feeds the MD portal's Customers, Products, Sales and Business Insights pages, not the monitoring dashboard. The API key is stored encrypted and never shown again.
Data to synchronize — each module has its own interval
| Module | Every | Last synced |
|---|
These three are independent queries, so each interval applies exactly as set.
Odoo Social Marketing integration
A third, independent Odoo connection -- real LinkedIn/Facebook/Instagram account stats, post history, and publishing, feeding the MD portal's Marketing page. The API key is stored encrypted and never shown again.
Odoo Email Marketing integration
First connector of Omnichannel Marketing Intelligence -- real campaign stats from Odoo's Email Marketing (mass_mailing) app, feeding the MD portal's Marketing page. Can point at a different Odoo instance than Operations, Accounting, or Social Marketing. The API key is stored encrypted and never shown again.
Odoo WhatsApp Marketing integration
Second connector of Omnichannel Marketing Intelligence -- real message templates from Odoo's WhatsApp app, feeding the MD portal's Marketing page. Can point at a different Odoo instance than the other connections. Even once installed, sending/receiving needs a Meta WhatsApp Business account linked in Odoo -- Sync will show 0 templates until that's done. The API key is stored encrypted and never shown again.
EmprendeAI AI Provider
Connects EmprendeAI's AI Assistant and CEO Advisor pages (/emprendeai) to an LLM provider. Exactly one provider is active at a time. The API key is stored encrypted and never shown again. Ollama needs no key -- just the URL of your self-hosted instance.
Only needed if Anthropic rejects requests with "This API key is not scoped to a workspace" -- find it in the Anthropic Console under the workspace this key belongs to, or use a workspace-scoped key instead and leave this blank.
Local: http://127.0.0.1:11434
Only needed if Ollama sits behind an nginx reverse proxy with HTTP Basic Auth.
Plugins
Install, configure & activate plugins for this tenantCurrently Running
Live Odoo Timer sessions -- as of the last poll (up to ~1 min old)Task Alignment
Timesheet hours vs. Tracked h (FocusTime-verified productive time during the Odoo Timer session, or browser tab as a fallback) per employee/task/day. Timer h is the raw Start-to-Stop elapsed time, for comparison.| Employee | Project | Task | Date | Start | Stop | Timesheet (hh:mm:ss) | Tracked (hh:mm:ss) | Timer (hh:mm:ss) | Variance (hh:mm:ss) | Source |
|---|
Commit & PR activity
Per employee, matched by GitHub username against commit author email| Employee | GitHub username | Commits | PRs |
|---|
Commits linked to Odoo tasks
Matched by the ticket key each commit message and Odoo task name share, e.g. a commit "[LGATE-20291] fix X" links to the task named "[LGATE-20291] ..."| Employee | Commit | Ticket | Task | Project | Date |
|---|
Provision tenant
Tenants & subscriptions
| Tenant | Plan | Status | Seats | Renews | Devices | Employees | Users |
|---|