Skip to content

CLI

The kendo CLI lets you manage your board from any terminal — create issues, check the board, log time — without switching to a browser.

Installation

Quick install (Linux / macOS)

bash
curl -sSL https://central.kendo.dev/cli/install.sh | sh

The script detects your OS and architecture, downloads the correct binary, verifies checksums, and installs to ~/.local/bin/kendo.

Update

bash
kendo update           # Download and install latest version
kendo update --check   # Check for updates without installing

Verify

bash
kendo version

Getting Started

bash
# 1. Log in (opens browser for authorization)
kendo auth login

# 2. Select your project
kendo project select KD

# 3. See your sprint board
kendo board

Working across multiple tenants

The CLI can stay logged in to several tenants at once (for example script, emmie, and backtocode) and keeps each tenant's login and active project separate. You never hand-edit a config file or re-authenticate just to switch.

bash
kendo auth login --tenant emmie.kendo.dev   # Add a tenant and make it active
kendo auth switch script                    # Switch the active tenant (no re-auth)
kendo auth status                           # List every tenant; the active one is marked

auth switch and --tenant accept a full host (script.kendo.dev) or a unique subdomain (script).

Target one tenant for a single command

Use the global --tenant flag (or the KENDO_TENANT environment variable) to run one command against a specific tenant without changing the active one:

bash
kendo lane list --tenant emmie              # Runs against emmie; active tenant unchanged
KENDO_TENANT=script kendo board             # Same, via environment variable

Precedence is --tenant flag → KENDO_TENANT → the active tenant. Targeting a tenant you're not logged in to fails fast and names the tenant — it never silently runs against the wrong board. And when a --project code can't be found, the error names the tenant it searched, so a wrong-tenant mistake is easy to spot.

Logging out

bash
kendo auth logout                 # Log out of the active tenant
kendo auth logout --tenant emmie  # Log out of a specific tenant
kendo auth logout --all           # Log out of every tenant

Logging out removes stored credentials but keeps the tenant remembered, so logging back in is quick. If you log out of the active tenant, another logged-in tenant is made active automatically and the CLI tells you which.

Upgrading from an older CLI

The first time you run a multi-tenant build after upgrading, any single-tenant login from an older CLI is reset — run kendo auth login once to sign in again.

Commands

Authentication

bash
kendo auth login                            # Log in (opens browser); becomes the active tenant
kendo auth login --tenant emmie.kendo.dev   # Log in to a specific tenant
kendo auth switch script                    # Switch the active tenant (no re-auth)
kendo auth status                           # Show the active user and list all tenants
kendo auth logout                           # Log out of the active tenant
kendo auth logout --all                     # Log out of every tenant

See Working across multiple tenants for the full model.

Board & Sprint

bash
kendo board                           # Visual kanban board for active sprint
kendo board --rows 0                  # Show all issues (no truncation)
kendo sprint active                   # Sprint name, dates, status
kendo sprint todo                     # To-do issues sorted by priority

Issues

bash
kendo issue list                      # All issues in active project
kendo issue list --sprint active      # Filter by sprint
kendo issue list --label "bug"        # Filter by label
kendo issue view KD-0255              # View issue details
kendo issue my                        # Issues assigned to you (all projects)
kendo issue create --title "Title"    # Create an issue
kendo issue create --title "T" --description "D" --label "bug"  # Create with label
kendo issue move KD-0255 2            # Move to lane 2
kendo issue comment KD-0255 -m "..."  # Add a comment
kendo issue link-branch KD-0255       # Link current git branch
kendo issue label set KD-0255 bug,tech-debt  # Set labels on an issue
kendo issue label set KD-0255         # Clear all labels
kendo issue attachments KD-0255       # List attachments on an issue
kendo issue attach KD-0255 ./diagram.png  # Upload a file to an issue
kendo issue download KD-0255 7        # Download attachment 7 to ~/Downloads
kendo search "query"                  # Search across all projects

Time Tracking

bash
kendo time log KD-0255 --minutes 60   # Log time on an issue
kendo time list                       # This week's entries
kendo time list --from 2026-03-01 --to 2026-03-31  # Date range

Labels

bash
kendo label list                      # List project labels with colors
kendo label create --name "bug" --color red       # Create a label
kendo label update 1 --name "bugfix"              # Rename a label
kendo label update 1 --color green                # Recolor a label
kendo label delete 1                              # Delete a label

Epics & Sprints

bash
kendo epic list                       # List epics with progress
kendo epic issues 9                   # Issues in an epic
kendo epic attachments 9              # List attachments on an epic
kendo epic attach 9 ./roadmap.pdf     # Upload a file to an epic
kendo epic download 9 7               # Download attachment 7
kendo sprint list                     # All sprints

Reports

bash
kendo report list                     # List all reports with attachment counts
kendo report list --status pending    # List only reports awaiting triage
kendo report list --status promoted   # List only reports already promoted to issues
kendo report list --status dismissed  # List only reports dismissed during triage
kendo report attachments 5            # List attachments on a report
kendo report attach 5 ./screenshot.png # Upload a file to a report
kendo report download 5 7             # Download attachment 7 to ~/Downloads

--status accepts pending, promoted, or dismissed (case-insensitive). Unknown values fail fast with a clear error before hitting the API.

Attachments

Upload local files to any issue, report, or epic. The server accepts up to 20MB per file across common document, image, and media types.

bash
kendo issue attach KD-0255 ./diagram.png   # Upload to an issue
kendo report attach 5 ./screenshot.png     # Upload to a report
kendo epic attach 9 ./roadmap.pdf          # Upload to an epic

kendo issue attach KD-0255 ./diagram.png --json  # JSON output for scripting

On success, a one-line confirmation is printed to stderr; with --json, the created attachment is emitted on stdout so the command is safely pipeable.

Migrations

bash
# One-time setup — get a Jira API token at id.atlassian.com/manage-profile/security/api-tokens
export JIRA_EMAIL=you@example.com JIRA_API_TOKEN=...

kendo migrate jira-attach KD-42 https://company.atlassian.net/rest/api/3/attachment/content/1001

Streams a single attachment from a Jira content URL straight into a kendo issue — no temp file. Requires JIRA_EMAIL and JIRA_API_TOKEN in the environment. --json emits the created attachment on stdout so the command is scriptable inside a larger migration loop.

Feedback

bash
kendo feedback send --title "Love the CLI" --description "Smooth flows, great DX"

Sends feedback (bug report, suggestion, or idea about Kendo itself) to the Kendo team. Works from any tenant.

JSON Output

Add --json to any command for machine-readable output:

bash
kendo board --json                    # Full board data
kendo issue view KD-0255 --json       # Issue details as JSON

CLI vs MCP

The CLI and MCP server are complementary:

  • MCP is for your AI assistant — it connects Claude Code, Cursor, and Codex to your board
  • CLI is for when you're the one driving — quick terminal commands for common board operations

Both talk to the same board through the same API.