CLI: Getting Started
The Keito CLI tracks billable time against the production Keito API v2 from a terminal, script, CI job, or agent workflow.
Production API base URL: https://app.keito.ai
Install
Homebrew
brew install osodevops/tap/keito
GitHub Releases
Download a binary or installer from the keito-cli releases.
Build from Source
git clone https://github.com/osodevops/keito-cli.git
cd keito-cli
cargo build --release
The binary is written to target/release/keito.
Authenticate
Ask a workspace Administrator to create a full-access integration key bound to your human or Agent identity, then copy the key and Company ID from Settings > API & Developers in Keito.
Do not use the Personal read-only sync key. It cannot access tracking tasks or write time entries, and it cannot be upgraded to full access.
keito auth login
The login command prompts for:
| Prompt | Value |
|---|---|
| API key | A full-access kto_... integration key |
| Account/company ID | The Company ID from Keito |
keito auth login validates the key against the production API and saves credentials in the local config file. The CLI does not use the macOS Keychain or a system keyring.
| OS | Config path |
|---|---|
| macOS | ~/Library/Application Support/keito/config.toml |
| Linux | ~/.config/keito/config.toml |
| Windows | %APPDATA%\keito\config.toml |
For agents and CI, prefer environment variables so the command can run without prompts:
export KEITO_API_KEY="kto_xxxxx"
export KEITO_ACCOUNT_ID="your_company_id"
Verify Credentials
keito auth status
keito auth whoami
Use JSON output when another tool or agent needs to consume the result:
keito auth status --json
Discover Projects and Tasks
keito projects list
keito projects tasks "Acme Website"
Projects can be referenced by ID, name, or code. Task definitions can be reused across the workspace, but time entries must use a task assigned to the selected project. Pass the project to keito projects tasks before choosing a task.
Track Time
# Start a running timer
keito time start --project "Acme Website" --task "Development"
# Check the active timer
keito time running
# Stop and save elapsed time
keito time stop --notes "Implemented OAuth flow"
For work that already happened, log a completed entry:
keito time log --project "Acme Website" --task "Development" \
--duration 1:30 \
--date 2026-05-06 \
--notes "Implemented OAuth flow"
Agent Quick Start
Agents should use JSON output and deterministic exit codes:
keito auth status --json
keito projects list --json
keito projects tasks "Acme Website" --json
keito time running --json
keito time start --project "Acme Website" --task "Development" --json
# agent performs work
keito time stop --notes "Implemented OAuth flow" --json
Use keito time session-record for completed agent sessions. It writes source=agent by default and uses metadata.session_id for idempotent updates.
keito time session-record \
--project "project_id_here" \
--task "task_id_here" \
--session-id "codex-123" \
--duration-seconds 1800 \
--metadata '{"integration":"custom_agent","agent_type":"codex"}' \
--json
For automatic Codex and Claude Code hooks, install the Keito Agent Skill:
keito skill install
Next Steps
- Authentication - credentials, config files, and environment variables.
- Projects & Tasks - how project and task resolution works.
- Tracking Time - timers, manual entries, filters, and JSON output.
- Agent Workflows - reliable patterns for agents and scripts.
- Keito Agent Skill - automatic local session tracking.