| title | Planning commands |
|---|---|
| description | huly-cli commands for Planner actions (todos), availability schedules, and time tracking in self-hosted Huly. |
Planner actions (todos), availability schedules, and time tracking.
huly action list [--owner email@...] [--issue <ref>] [--title <q>]
[--priority High|Medium|Low|NoPriority|Urgent]
[--visibility public|busy|private]
[--due-from <iso>] [--due-to <iso>]
[--completed true|false|all] [--limit N] [--offset N]
huly action get <ref>
huly action create --title "..." [--description] [--body] [--body-file] \
[--due <iso>] [--priority <p>] \
[--owner email@...] [--attached-to <ref>] [--attached-to-class <class>]
huly action update <ref> [--title] [--description] [--body] [--body-file]
huly action complete <ref> # sets doneOn=now
huly action reopen <ref> # clears doneOn
huly action schedule <ref> --start <iso> --duration <minutes> # creates a WorkSlot for the task
huly action unschedule <ref> [--slot-id <id>] # removes WorkSlots for the task
huly action delete <ref...> [--yes]--completed filter: true|false|all (default all). true /
false match the value of doneOn; all returns both.
Priority: accepts any of Urgent | High | Medium | Low | NoPriority. Match is case-insensitive. Unknown priorities throw a
Validation error (exit code 4).
Best practices & side effects:
--attached-to <ref>+--attached-to-class tracker:class:Issueattaches the todo to one parent only. Unlike server-auto-created todos (which usecreateTxCollectionCUDand live under both the issue andtime.space.ToDos), a CLI-created todo appears under the issue but not in the assignee's personal todo list. Use--owner <email>to additionally pointuserat a person, or omit--attached-toentirely to attach the todo to aPerson.complete/deletemay trigger issue status rollback or advance (when the todo is attached to an issue).scheduleon aBacklog/Todoissue-attached todo can auto-advance the issue's status to the nextActivestate.
See
Platform behavior — Tasks
for the full OnToDoUpdate / OnToDoRemove / OnWorkSlotCreate
chain. The cascade you almost always care about:
| What you do | What happens |
|---|---|
complete last open todo on an issue |
Issue may auto-advance past the last Active state. |
delete last open todo on an issue |
Issue rolls back to the previous un-started status. |
schedule first WorkSlot on a Backlog/Todo issue |
Issue auto-advances to the next Active status. |
Calendar schedules (owner availability).
huly schedule list
huly schedule create --title <t> --owner <userUuid> --time-zone <tz> \
[--description <text>] [--duration 30] [--interval 15]
huly schedule update <ref> [--title] [--description] [--time-zone] [--duration] [--interval]
huly schedule delete <ref...> [--yes]--owner: UUID of the account that owns the schedule (typically
the current user). Resolve via huly user get --json | jq -r '._id'.
Note: --owner does not have the substring fallback that
--assignee does — see
CLI behavior — Ref resolution order.
Time tracking on issues.
huly time list [--issue <ref>] [--start <iso>] [--end <iso>] [--limit N] [--offset N]
huly time log --issue TSK-1 --minutes 30 --description "did thing"
huly time log --issue TSK-1 --hours 2 --description "pair programming"
huly time report <issueRef> # per-issue summary
huly time delete <entryRef...> [--yes]Note:
time reporttakes a single positional issue ref. Earlier revisions of this README mistakenly documented--from/--to/--user/--projectflags here, but the CLI never accepted them — the underlying SDK method is single-issue only. For workspace-wide or date-range aggregations, usehuly time list --jsonand filter client-side, e.g.:huly time list --json | jq '[.[] | select(.date >= "2026-06-01")]'
Best practices & side effects: logging time on an issue updates
that issue's reportedTime and recomputes remainingTime. If the
issue has a parent, the change walks up the parent chain
automatically (OnIssueUpdate). There is no opt-out — script
accordingly.
The value passed to --minutes / --hours is rounded to the
nearest 15 minutes and stored as man-hours (value = minutes/60).