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