CLI: Projects & Tasks
Every Keito time entry needs a project and a task. The CLI can discover both and resolve friendly names into API IDs.
List Projects
keito projects list
keito projects list --json
keito projects list --limit 20
The CLI lists active projects in the current company. In table output you see the project ID, name, code, client, billable status, and active status.
Agents should prefer JSON:
keito projects list --json
Show One Project
keito projects show "Acme Website"
keito projects show ACME
keito projects show project_id_here --json
The project argument accepts:
| Input | Example |
|---|---|
| Project ID | cmo1j2iwm0016ynap3fw2pcfw |
| Project name | Acme Website |
| Project code | ACME |
Resolution is case-insensitive.
List Tasks
keito projects tasks "Acme Website"
keito projects tasks ACME --json
keito projects tasks project_id_here --limit 20 --json
The optional project argument accepts a project ID, name, or code. Pass it when choosing a task for time tracking:
keito projects tasks <PROJECT> --json
Task definitions can be reused across the workspace, but Keito validates project-task assignments and may enforce member-specific task restrictions. With a project argument, the command returns tasks that are valid for that project. Without one, it returns active workspace-level task definitions, which are not a guarantee that every task can be used with every project.
Use IDs in Automation
Humans can use names or codes:
keito time start --project "Acme Website" --task "Development"
Agents and scripts should use IDs after discovery:
keito time start \
--project "project_id_here" \
--task "task_id_here" \
--json
IDs avoid ambiguity when project names or task names are similar.
Not Found Recovery
If a project cannot be resolved, the CLI exits with code 4 and suggests:
keito projects list --json
If a task cannot be resolved, the CLI exits with code 4 and suggests:
keito projects tasks <PROJECT> --json