{"id":29200310,"url":"https://github.com/zmoog/toggl-track","last_synced_at":"2026-01-21T10:10:08.239Z","repository":{"id":65539710,"uuid":"304132602","full_name":"zmoog/toggl-track","owner":"zmoog","description":"Toggl Track CLI","archived":false,"fork":false,"pushed_at":"2025-10-29T22:07:05.000Z","size":80,"stargazers_count":2,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-30T00:09:33.730Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zmoog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-10-14T20:51:25.000Z","updated_at":"2025-10-29T22:06:34.000Z","dependencies_parsed_at":"2024-04-26T06:25:55.547Z","dependency_job_id":"951484d2-cc8b-4ad7-928b-584fbf260359","html_url":"https://github.com/zmoog/toggl-track","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"ecf8077cf721d43c8290c53c00a0046ae47f9f90"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/zmoog/toggl-track","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmoog%2Ftoggl-track","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmoog%2Ftoggl-track/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmoog%2Ftoggl-track/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmoog%2Ftoggl-track/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zmoog","download_url":"https://codeload.github.com/zmoog/toggl-track/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmoog%2Ftoggl-track/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28631936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-02T10:35:40.604Z","updated_at":"2026-01-21T10:10:08.221Z","avatar_url":"https://github.com/zmoog.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# toggl-track\n\n[![PyPI](https://img.shields.io/pypi/v/toggl-track.svg)](https://pypi.org/project/toggl-track/)\n[![Changelog](https://img.shields.io/github/v/release/zmoog/toggl-track?include_prereleases\u0026label=changelog)](https://github.com/zmoog/toggl-track/releases)\n[![Tests](https://github.com/zmoog/toggl-track/workflows/Test/badge.svg)](https://github.com/zmoog/toggl-track/actions?query=workflow%3ATest)\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/zmoog/toggl-track/blob/master/LICENSE)\n\nCLI tool and Python library to access Toggl Track https://toggl.com/track/\n\n## Installation\n\nInstall this tool using `pip`:\n\n    pip install toggl-track\n\n## Usage\n\nFor listing the time entries in the last 24 hours, run:\n\n    $ tgl entries list\n                                                                Time Entries\n\n    At           Description                                                                  Start      Stop       Duration   Tags\n    ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n    2023-02-04   toggl-track: insights                                                        05:37 AM              -\n    2023-02-03   Community: Allow parsing of IPv6 addresses in ingest pipeline                08:18 PM   10:09 PM   1:51       type:support\n    2023-02-03   🍲 Dinner                                                                    07:19 PM   08:18 PM   0:58\n    2023-02-03   sync                                                                         06:19 PM   06:55 PM   0:35       type:sync\n    2023-02-03   🚌 Shuttling kids between home and whatever                                  04:46 PM   06:19 PM   1:33\n    2023-02-03   App Service logs integration: troubleshootign lucianpy issues                04:40 PM   04:46 PM   0:06       type:goal\n    2023-02-03   Community: Allow parsing of IPv6 addresses in ingest pipeline                04:21 PM   04:40 PM   0:18       type:support\n    2023-02-03   Community: Fix parsing error client port is blank and adjust for timeStamp   03:15 PM   04:21 PM   1:05       type:support\n    2023-02-03   Community: Azure Signin Module authentication_processing_details Issue       02:37 PM   03:15 PM   0:38       type:support\n    2023-02-03   Rosanna                                                                      11:06 AM   02:37 PM   3:31\n    2023-02-03   Community: Azure Signin Module authentication_processing_details Issue       09:25 AM   11:06 AM   1:41       type:support\n    2023-02-03   sync                                                                         08:37 AM   09:25 AM   0:48       type:sync\n    ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n                                                                                                        Total      13:08\n\nNow you can also filter time entries by project ID or description:\n\n    $ tgl entries --project-id 178435728 list\n                                                                Time Entries\n\n    At           Description                                                                  Start      Stop       Duration   Tags\n    ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n    2023-02-03   Community: Allow parsing of IPv6 addresses in ingest pipeline                08:18 PM   10:09 PM   1:51       type:support\n    2023-02-03   sync                                                                         06:19 PM   06:55 PM   0:35       type:sync\n    2023-02-03   App Service logs integration: troubleshootign lucianpy issues                04:40 PM   04:46 PM   0:06       type:goal\n    2023-02-03   Community: Allow parsing of IPv6 addresses in ingest pipeline                04:21 PM   04:40 PM   0:18       type:support\n    2023-02-03   Community: Fix parsing error client port is blank and adjust for timeStamp   03:15 PM   04:21 PM   1:05       type:support\n    2023-02-03   Community: Azure Signin Module authentication_processing_details Issue       02:37 PM   03:15 PM   0:38       type:support\n    2023-02-03   Community: Azure Signin Module authentication_processing_details Issue       09:25 AM   11:06 AM   1:41       type:support\n    2023-02-03   sync                                                                         08:37 AM   09:25 AM   0:48       type:sync\n    ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n                                                                                                        Total      7:05\n\n    $ tgl entries --description SDH list\n\n                                Time Entries                                \n                                                                                \n    At           Description   Start      Stop       Duration   Tags          \n    ────────────────────────────────────────────────────────────────────────── \n    2023-04-01   SDH 3256      05:56 AM   07:01 AM   1:04       type:support  \n    2023-03-31   SDH 3256      03:01 PM   04:18 PM   1:17       type:support  \n    2023-03-31   SDH 3247      09:45 AM   12:04 PM   2:18       type:support  \n    2023-03-31   SDH 3253      08:49 AM   09:45 AM   0:56       type:support  \n    2023-03-31   SDH 3237      07:22 AM   08:30 AM   1:08       type:support  \n    2023-03-30   SDH 3229      01:16 PM   05:35 PM   4:18       type:support  \n    2023-03-30   SDH 3229      09:36 AM   11:31 AM   1:55       type:support  \n    2023-04-03   SDH 3140      08:11 AM   09:19 AM   1:07       type:support  \n    2023-03-29   SDH 3149      01:36 PM   05:04 PM   3:27       type:support  \n    2023-03-28   SDH 3237      05:04 PM   06:03 PM   0:58       type:support  \n    2023-03-28   SDH 3237      02:40 PM   03:01 PM   0:20       type:support  \n    2023-03-28   SDH 3237      01:43 PM   02:21 PM   0:38       type:support  \n    2023-03-28   SDH 3237      10:31 AM   12:17 PM   1:46       type:support  \n    2023-03-27   SDH 3069      08:50 PM   09:29 PM   0:39       type:support  \n    2023-03-27   SDH 3069      05:51 PM   06:56 PM   1:05       type:support  \n    2023-03-27   SDH 3069      04:59 PM   05:21 PM   0:21       type:support  \n    2023-03-27   SDH 3069      01:11 PM   03:09 PM   1:57       type:support  \n    ──────────────────────────────────────────────────────────────────────────\n                                            Total      25:22\n\nSupports JSON and NDJSON as alternative output format using the  `--format` option:\n\n    # format result as a list of objects\n    $ tgl --format ndjson entries --project-id 178435728 list\n\n    [{\"id\": 2848841800, \"workspace_id\": 1815018, \"user_id\": 2621333, \"project_id\": 178435728, \"task_id\": null, \"billable\": false, \"at\": \"2023-02-16T15:54:40+00:00\", \"description\": \"Observability Demo Day\",  ... \"stop\": \"2023-02-16T06:59:01+00:00\", \"duration\": 314, \"tags\": [\"type:goal\"]}]\n\n    # optionally, format result as a root element that contains the list of objects using the `--json-root` option\n    $ tgl --format ndjson --json-root entries entries --project-id 178435728 list\n\n\n    $ tgl --format ndjson entries --project-id 178435728 list\n\n    {\"id\": 2832493940, \"workspace_id\": 1815018, \"user_id\": 2621333, \"project_id\": 178435728, \"task_id\": null, \"billable\": false, \"at\": \"2023-02-06T10:31:24+00:00\", \"description\": \"ESF: send after input has output\", \"start\": \"2023-02-06T09:40:10+00:00\", \"stop\": \"2023-02-06T10:31:24+00:00\", \"duration\": 3074, \"tags\": [\"type:goal\"]}\n    {\"id\": 2832473617, \"workspace_id\": 1815018, \"user_id\": 2621333, \"project_id\": 178435728, \"task_id\": null, \"billable\": false, \"at\": \"2023-02-06T09:34:53+00:00\", \"description\": \"Maurizio / Tom\", \"start\": \"2023-02-06T08:58:17+00:00\", \"stop\": \"2023-02-06T09:29:22+00:00\", \"duration\": 1865, \"tags\": [\"type:meeting\"]}\n    {\"id\": 2832337954, \"workspace_id\": 1815018, \"user_id\": 2621333, \"project_id\": 178435728, \"task_id\": null, \"billable\": false, \"at\": \"2023-02-06T09:34:39+00:00\", \"description\": \"sync\", \"start\": \"2023-02-06T08:15:08+00:00\", \"stop\": \"2023-02-06T08:57:17+00:00\", \"duration\": 2529, \"tags\": [\"type:sync\"]}\n\nFor grouping time entries by tags and sum up the totals, run:\n\n    $ tgl entries --project-id 178435728 group-by --field tags --start-date 2023-02-01\n        Time Entries\n\n    tags           Duration\n    ─────────────────────────\n    type:support   7:13\n    type:goal      5:10\n    type:meeting   4:29\n    type:sync      3:38\n    type:hr        0:09\n    ─────────────────────────\n    Total          20:40\n\nFor help, run:\n\n    toggl-track --help\n\nYou can also use:\n\n    python -m toggl_track --help\n\n## Development\n\nTo contribute to this tool, first checkout the code. Then create a new virtual environment:\n\n    cd toggl-track\n    python -m venv venv\n    source venv/bin/activate\n\nNow install the dependencies and test dependencies:\n\n    pip install -e '.[test]'\n\nTo run the tests:\n\n    pytest\n\nIf you need to send other requests to Toggl API, you can capture responses using:\n\n   pytest --record-mode=once\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzmoog%2Ftoggl-track","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzmoog%2Ftoggl-track","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzmoog%2Ftoggl-track/lists"}