trackyourtime
Self-hostable time tracker for freelancers. Track time from the web app, your browser or Raycast, then turn the hours into reports and invoices.
Install / Use
claude mcp add trebeljahr -- npx -y github:trebeljahr/trackyourtimeIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Data & AnalyticsSupported Platforms
Our assessment of trackyourtime
trackyourtime scores 83/100 on our quality scale, 480th of 601 Data & Analytics skills we index.
Its MCP Server is 29 KB long, well organised into 24 sections with 8 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 4 days ago, so trackyourtime is actively maintained.
- It is released under AGPL-3.0, a copyleft license: you can use it, but modified versions you distribute must carry the same license.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
trackyourtime compared with similar skills
All 4 of these similar skills score higher than trackyourtime; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| trackyourtime (this skill)by trebeljahr | 83 | 3 | 4d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 106.8k | 5d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.4k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.7k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 90.5k | 1d ago | MCP Server |
Frequently asked questions
- How do I install trackyourtime?
- Run
claude mcp add trebeljahr -- npx -y github:trebeljahr/trackyourtime. The install tabs above show the steps for each supported agent. - Which AI agents does trackyourtime work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is trackyourtime safe to use?
- It is AGPL-3.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is trackyourtime still maintained?
- The repository was last updated 4 days ago, so trackyourtime is actively maintained.
Skill content
View source on GitHubTrack Your Time
Free, open-source time tracking for freelancers and small teams who bill by the hour.
Start a timer in the web app, the desktop app, the Chrome extension, Raycast on your Mac, or the iPhone and Android apps. Each one keeps counting without a connection and sends your changes when the connection comes back. Stop the timer on your phone, and your laptop shows it stopped.
At the end of the month, the hours become a report, a PDF invoice, or a ZUGFeRD or XRechnung e-invoice. Invite colleagues, and each person sees only their own time until you let them see more. Import a CSV from another tracker, take everything out as JSON or CSV, or connect other tools through the REST API.
There's no paid plan, now or later. Use the hosted version at https://trackyourtime.dev, or run the same app on your own server from one compose file. The desktop app, the extensions and the phone apps work with either, because each one asks for a server address.
The Chrome extension is in the Chrome Web Store, and Firefox 0.3.0 is public on Firefox Add-ons. Desktop version 0.2.2 downloads from GitHub Releases for macOS, Windows and Linux. Self-host images are published through v0.3.0. The phone apps are in testing channels. Release readiness records the remaining distribution checks.
The product was called tracktime until September 2026. The repository, images, bundle ids and every other identifier were renamed to trackyourtime before the first release.
The hosted web app is at https://trackyourtime.dev, with the API on its own host at https://api.trackyourtime.dev. The API reference and OpenAPI document describe its public routes. docs/deploy.md explains the topology and why the domain moved.

What it is
A pnpm monorepo: one Express + tRPC API, one Next.js web client exported as static files, and shared packages (shared, core) that the extension, Raycast, the phone apps and the MCP server reuse. Two Docker images and a MongoDB are the whole production footprint; Redis is optional. There is no feature gate between the hosted version and a self-hosted one, and no telemetry you have not configured yourself.
Everything is scoped to a workspace. A person can belong to several, and a workspace can have many members — see Teams.
Where things live
| If you want to | Go to |
| --- | --- |
| Understand how the system fits together | ARCHITECTURE.md |
| Run it locally and open a pull request | CONTRIBUTING.md, or Development below for the short version |
| Run your own instance | docs/self-hosting.md — one VPS, one domain, one docker compose up |
| Deploy it | docs/deploy.md — the two-app, two-host Coolify topology and the four places that must agree on the API origin |
Project below indexes the rest — roadmap, governance, support, security, and what CLAUDE.md and docs-site/ are.
Features
Tracking
- Timer with start / stop / continue / discard, plus manual entry creation and editing. Entries carry a description, project, task, tags, a billable flag, a snapshotted hourly rate and currency, a source (web/desktop/mobile/extension/api/import) and the time zone they were recorded in.
- Favorites and quick-start recents. Favorites are reorderable one-tap job templates; quick-start collapses your recent entries into distinct combinations. Quick starts deliberately open untagged, so the same job tagged differently one day does not fragment the list.
- Description autocomplete from earlier entries, searched server-side. Tab takes the name; Cmd/Ctrl+Enter also takes the project, task, tags and billable flag.
- Command palette (Cmd/Ctrl+K) for timer actions, every page, and clients, projects, tasks and tags. Typing also searches entry descriptions, and choosing an entry opens it — for editing if it is yours, read-only if it is a colleague's. On a phone the palette opens from the More drawer.
- Idle detection with ask, pause-and-resume, keep-running or stop, and a per-project override.
- Runaway-timer guard. A maximum entry duration that asks, caps or stops a forgotten timer. A scheduler job (
services/scheduler/) checks running timers every 5 minutes and sends one reminder email per timer; the lazy check on every read of the running timer stays as the fallback.SCHEDULER_ENABLED=falseturns the job off.
Catalog
- Clients → Projects, one two-level hierarchy. Tasks are workspace-wide and sit beside it, so an entry carries a project and a task as two independent references. Tags are a third dimension, many per entry.
- Full CRUD. Clients, projects and tasks have an archive toggle and a delete that always deletes — never the tracked time, though: entries and favorites are detached and survive as project-less rows. Tags follow a different rule: a tag that still labels tracked time is archived instead of deleted, and only an unreferenced tag is removed outright.
- Projects carry colour, client, billable default, hourly rate, estimated hours, a budget amount and currency, and an idle-behaviour override. A billing change can also reprice the project's un-invoiced entries.
Views
- Track — the timer plus the day's entries.
- Weekly timesheet grid — rows of project + task, columns of weekday, editable cells. The edit rules are explicit and unit-tested: the running entry's cell is never writable, an empty cell creates exactly one entry, a single same-day entry has its end moved (typing 0 deletes it), and a midnight-crossing or multi-entry cell is refused read-only with a breakdown and a link through rather than guessing.
- Calendar — day, week, month and year views positioned by clock time, with drag editing, zoom, clustering for dense bursts of short entries, and an undo stack.
Reports and money
- One Reports screen with two views over the same URL-backed filters: Totals (grouped by client, project, task, tag, member, day, week or month, with a zero-filled timeline and budgets; each group drills down into its entries) and Entries (paginated, sortable, bulk-editable, with totals that span the whole range). The old
/app/reports/summary,/detailedand/weeklyaddresses redirect to it; the REST API still serves summary, detailed and weekly reports. - CSV and PDF export for both views, paginating the full range so an export is never a page of what you were looking at.
- Invoices built from un-invoiced billable time. Preview rolls up line items without writing; creating an invoice re-gathers server-side rather than trusting the client's line items, assigns a per-year sequential number, and stamps the invoice onto every entry it billed. Draft/sent/paid status, PDF export, and a guard that refuses edits to entries already on an invoice.
- Payments, credits and reminders. Record payments against an invoice or credit it in full. Payment reminder emails to the client are opt-in per invoice and go out 1, 7 and 14 days after the due date.
- Business profile and client billing details. The issuer and recipient are copied onto the invoice when it is created, so a later address change does not rewrite a document a customer holds.
- E-invoices. An invoice also downloads as a ZUGFeRD PDF (PDF/A-3b with the EN 16931 XML embedded) or an XRechnung 3.0 XML file. CI runs every sample through the Mustang and KoSIT validators. See
docs-site/docs/e-invoices.md. - Project budgets and estimates — a lifetime roll-up of hours and earnings against estimated hours and budget, computed from each entry's own snapshotted rate.
Reporting grouped by tag gives each of an entry's tags that entry's full duration, so tag rows sum to more than the range total on purpose. The alternative — splitting a duration across tags — would invent time nobody spent. The screen says so where it happens; the report's own totals stay single-counted.
Teams
- Workspaces, members and invitations through the
workspaces,membersandinvitationstRPC routers. Invite by email, or copy the invitation link when the server has no mail transport. The public/invite/?id=page accepts it, before or after sign-in. - Roles
owner,adminandmember, with ownership transfer. A workspace always keeps an owner. - Two visibility flags per member: colleagues' time, and colleagues' money. Every surface answers both server-side — reports, entry lists, exports, the REST API and the sync socket, which sends each member only what they may see.
- Member rates. An owner or admin who may see money can give each member an hourly rate. A new billable entry takes its project's rate first, then its author's member rate, then the workspace default, and keeps that rate as a snapshot.
- Timesheet approval, off by default. A member submits a week, and an owner or admin who may see colleagues' time approves or rejects it. A submitted or approved week is locked against edits, and an invoice can be limited to approved time. Approval needs MongoDB with transactions (a replica set);
docs/timesheet-approvals.mdcovers the setup, including a single-node replica set for the self-host compose file. - A workspace switcher in the app shell. Each client keeps its own choice and names the workspace on every request.
- Invoices are limited to owners and admins who may see both time and money.
Data in and out
- Import from a delimited file. Headers are matched to roles by an alias table and the values decide the granularity, so it is column shapes rather than vendor-specific formats. Day/month order is decided per file and stated on screen when nothing in the data settles it.
- Preview then commit. The commit re-parses the same input rather than trusting the preview it handed back, so a tampered preview cannot write something you never approved.
- Every import is one undoable batch, deleted by an indexed id — and refused if any of its entries have since landed on an invoice.
- Workspace export: JSON (lossless — colours, archived rows, project rates, the business profile, catalog referenced by name so it restores into an empty or different workspace) and CSV (written in the exact column shape the importer reads back).
- Move to another server (Settings → Data): the same export and import, driven from one device, hosted → self-hosted and back.
- REST API and webhooks.
/api/v1covers entries, clients, projects, tasks, tags, reports and the current user, with scoped API tokens, an OpenAPI document and RFC 9457 errors. Signed webhooks report entry and invoice events. Seedocs/api.mdand the MCP server.
Platform
- Realtime multi-device sync over WebSocket on the same Express process. The upgrade is authenticated, a socket joins only its own account's room, and a revoked session closes its socket within a minute.
- Offline queue in the web app, the phone apps, the browser extension and Raycast: entry mutations made offline are queued and replayed in order on reconnect, with optimistic temporary ids until the server answers. Each queued row records the account, workspace and server it was queued for, and replays only there.
- **Sign-i
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
106.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
78.4kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.7kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
90.5k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
