Holded TT
holded-tt is an unofficial Python CLI for automating time tracking on Holded.
It is a focused time-tracking tool, not a general-purpose Holded client.
Install
Requirements
- Python 3.11+
- A Holded account with time tracking enabled
- An interactive terminal for
holded-tt login(email/password prompt, plus 2FA prompt when required)
# Install from PyPI (recommended for end users)
pipx install holded-tt
# or
uv tool install holded-tt
# or, inside an existing virtualenv
pip install holded-tt
With Nix, the repository is a flake:
nix run github:Villoh/holded-tt -- --help
To install it declaratively, add it as an input and use inputs.holded-tt.packages.${system}.default.
After installation, you can check the global CLI version with:
holded-tt --version
Quick start
# 1. Authenticate
holded-tt login
# 2. Check your workplace ID
holded-tt workplaces
# Optional: inspect your profile and organization directory
holded-tt employee
holded-tt organization
# 3. Save your defaults
holded-tt config set defaults.workplace_id <id>
holded-tt config set defaults.start 09:00
holded-tt config set defaults.end 18:00
holded-tt config set defaults.timezone Europe/Madrid
holded-tt config set defaults.pause 14:00-15:00
# 4. Register a date range (preview first)
holded-tt track --from 2026-01-07 --to 2026-04-07 --dry-run
holded-tt track --from 2026-01-07 --to 2026-04-07
To have your days clocked for you (Linux or Windows), run holded-tt clock install once. See Automatic clocking.
Documentation
| Guide | What is in it |
|---|---|
| Account | login, session, workplaces, employee, organization, session troubleshooting |
| Configuration | config, every default and per-weekday overrides, where files are stored |
| Track | Register, inspect and update days in bulk, with jitter |
| Clock | Real-time clock-in, clock-out, pause and resume |
| Automatic clocking | clock tick, clock install, clock skip, the systemd units and Windows task, retries and failure handling |
| Time off | Vacation availability, requests and holidays |
| Export | PDF and Excel reports |
| Development | Running from source, tests |
Every command also has --help.
Security note
session.json stores sensitive authentication cookies. The CLI must never log those cookies, and file permissions are applied on a best-effort basis (0600 where supported).
License
MIT — see LICENSE.
Metadata
Release files for holded-tt 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| holded_tt-1.5.0.tar.gz | 134.0 kB | With provenance | Details for holded_tt-1.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| holded_tt-1.5.0-py3-none-any.whl | Python 3 | none | any | Details for holded_tt-1.5.0-py3-none-any.whl |
Total release size: 195.0 kB
Release files / holded_tt-1.5.0.tar.gz
| Download URL | holded_tt-1.5.0.tar.gz |
|---|---|
| Size | 134.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b838410432115f2e4457a3e5f0178378052bfe5e69abfcb0b7a2531f2bf68524
|
|
BLAKE2b-256 checksum How to use checksums |
61d57549384b8d3bc2efe61947df3c8f0d0fb32f1f73ee41fd9944ffcd38c7a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logRelease files / holded_tt-1.5.0-py3-none-any.whl
| Download URL | holded_tt-1.5.0-py3-none-any.whl |
|---|---|
| Size | 61.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d0b071b3bef82140ee775b5e997fff8121ce307c995af4a02b961237e801507
|
|
BLAKE2b-256 checksum How to use checksums |
82cdf98f669112287af6011f305ce9fede11937646ac163706e65e96b5312342
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logSecurity for holded-tt 1.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for holded_tt-1.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.