Help · The app
The local CLI
A small script that talks to the running app, for people who would rather type than click. Entirely optional, and it stays on your machine.
What it can do
owntime status totals, unbilled count, pending owntime projects list your projects with rates owntime start "Acme — site audit" start the timer (picked up in ~2s) owntime stop stop the timer owntime log 1.5 "kickoff call" --project Acme owntime help
Installing it
The script ships inside the app, at /Applications/owntime.app/Contents/Resources/scripts/owntime.mjs. Symlink it onto your path:
ln -sf "/Applications/owntime.app/Contents/Resources/scripts/owntime.mjs" /usr/local/bin/owntime
No chmod needed, the file already ships executable. Do not chmod it inside the app either: changing a file in a signed bundle breaks the signature, and macOS may then refuse to open the app. A symlink leaves the bundle alone, and keeps pointing at the current version after an update.
Rather not put anything on your path? Run it through node instead: node "/Applications/owntime.app/Contents/Resources/scripts/owntime.mjs" status
Needs Node 18 or newer, since the script uses fetch. Working from the source checkout? Symlink app/scripts/owntime.mjs the same way.
How it talks to the app
owntime listens on 127.0.0.1:45123, your machine only. The script reads the app’s local token and uses it for the commands that write. If the app is not running, every command tells you so rather than failing silently.
What it is not
It is not a second product and not a supported platform. It exists so that a timer can be started from a shell script, a Stream Deck, or a window manager shortcut. If you never open a terminal, you are not missing anything.