CLI for submitting FreeAgent timeslips
Project description
freeagent-cli
A small CLI for submitting FreeAgent timeslips without clicking through the web UI.
freeagent-cli log acme 1h30m "fixed the thing"
Install
uv tool install freeagent-cli
One-time setup
You'll need to register your own OAuth app with FreeAgent. It takes about two minutes and keeps your data and rate limits separate from everyone else's.
-
Go to https://dev.freeagent.com/apps and create a new app.
-
Set the redirect URI to:
http://localhost:7878/callback -
Note the OAuth identifier and OAuth secret.
-
Save them locally:
freeagent-cli auth init --client-id <id> --client-secret <secret>Add
--sandboxif you want to test against the FreeAgent sandbox first. -
Authorise the app in your browser:
freeagent-cli auth loginA browser tab opens, you approve, and the CLI captures the refresh token. The refresh token lasts ~20 years; access tokens auto-refresh on every command.
Credentials are stored at ~/Library/Application Support/freeagent-cli/config.json (macOS) or the equivalent platform config directory, with file mode 0600.
Usage
freeagent-cli --help # canonical flow
freeagent-cli projects # projects + tasks in one call
freeagent-cli log <project> <duration> [comment...] # submit a timeslip
freeagent-cli recent # last few timeslips
Examples:
freeagent-cli log Acme 1h30m "fixed the thing"
freeagent-cli log Acme 90m fixed the thing # comment without quotes
freeagent-cli log "Big Co" 1.5 --task Coding --date 2026-05-01
freeagent-cli log Acme 1.5 --dry-run # preview, don't submit
- Duration accepts
1.5,90m,1h30m, or1:30. - Project / task match by case-insensitive name substring, numeric id, or full URL.
--taskis optional when the project has a single task; otherwise the error lists the choices.--datedefaults to today (ISOYYYY-MM-DDto override).--dry-runresolves the project/task/date and prints the would-be submission without sending it.projects --flatemits one project/task pair per line (tab-separated) for grep/awk.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file freeagent_cli-0.2.0.tar.gz.
File metadata
- Download URL: freeagent_cli-0.2.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f4cd395b797513b4d1a6395f7001c8a7f7dc9dcb6d376bfc3ca3c26b32b46e4
|
|
| MD5 |
9873db83b8b308b73be370bee1d50162
|
|
| BLAKE2b-256 |
78a35a41a4cd33f52b71d0f1586e283425971b66c28a64c262a917ee401c7176
|
File details
Details for the file freeagent_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: freeagent_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da536bb7a6ae1f07ca88c9deeed2826dc99c87d7edbd4c0214cfd50aa7d432b6
|
|
| MD5 |
1c3a98f8a486b7183d9e6fa0813487d0
|
|
| BLAKE2b-256 |
ba57ed5299ebd34d93400afcce7fc2191dad18059456a19936a5fb756f31de71
|