YouTrack from the terminal

ytrack

A cross-platform CLI for creating YouTrack issues, moving their status, inspecting users, creating projects, and keeping global credentials separate from per-project configuration.

ytrack global set-url https://youtrack.example.com
ytrack global set-token perm:your-token
ytrack init
ytrack set-project-id 0-1

ytrack issue create "Crash on save" "Steps to reproduce"
ytrack issue show YR-14
ytrack issue status ART-123 Done
ytrack user me
ytrack project create "Mobile App" --key MOB --leader me --set-project-id

Install

Install from Homebrew, download a release binary, or build from source.

macOS / Linux

Homebrew

brew install rtcoder/tap/ytrack

Development builds are available with brew install --HEAD rtcoder/tap/ytrack.

Ubuntu / Debian

APT package

sudo apt install ./ytrack_<version>_linux_amd64.deb

Download the matching .deb package from GitHub Releases first.

Fedora

DNF package

sudo dnf install ./ytrack_<version>_linux_amd64.rpm

Download the matching .rpm package from GitHub Releases first.

Source

Go

go install ./cmd/ytrack

Use go build -o ytrack ./cmd/ytrack when working from a local checkout.

Quick Start

Configure shared credentials once, set a project ID inside each repository, then create and update issues from the terminal.

Setup Flow

  1. Set the global YouTrack URL.
  2. Store a permanent token globally.
  3. Set the local project ID in your repository.
  4. Create or update issues.
ytrack global set-url https://youtrack.example.com
ytrack global set-token perm:your-token
ytrack init
ytrack set-project-id 0-1

ytrack issue create "Crash on save" "Steps to reproduce..."
ytrack issue show YR-14
ytrack issue status ART-123 Done
ytrack user list --top 20
ytrack project create "Mobile App" --key MOB --leader rtcoder --set-project-id

Command Reference

These are all commands currently exposed by the CLI. The generated Markdown reference lives in docs/commands.md.

Global Options

Help and JSON

Use JSON output and shell completion when scripting or setting up your shell.

ytrack --help
ytrack --json <command>
ytrack completion bash
ytrack completion zsh
ytrack completion fish
ytrack completion powershell
Global Config

Shared URL and Token

Best for values reused across repositories.

ytrack global show
ytrack global set-url <url>
ytrack global set-token <token>
ytrack global unset-url
ytrack global unset-token
Local Config

Repository Settings

Best for project IDs and repository-specific overrides.

ytrack show
ytrack init
ytrack set-url <url>
ytrack set-token <token>
ytrack set-project-id <project-id>
ytrack unset-url
ytrack unset-token
ytrack unset-project-id
Issues

Create and Update

Create issues and send YouTrack state-change commands.

ytrack issue create <summary>
ytrack issue create <summary> <description>
ytrack issue create <summary> --description-file <path>
ytrack issue create <summary> <description> --type <type> --assignee <user> --priority <priority> --version <version>
ytrack issue list
ytrack issue list --state <value>
ytrack issue list --assigned-to <user>
ytrack issue show <issue-id>
ytrack issue edit <issue-id> --title <title>
ytrack issue edit <issue-id> -t <title> -d <description> --type <type> --priority <priority>
ytrack issue type <issue-id> <type>
ytrack issue priority <issue-id> <priority>
ytrack issue comment <issue-id> <text>
ytrack issue assign <issue-id> <user>
ytrack issue command <issue-id> <command>
ytrack issue close <issue-id>
ytrack issue status <issue-id> <status>
Users

Inspect and Find

Show the current user, list users, and resolve a single user by query.

ytrack user me
ytrack user list
ytrack user list --top <count>
ytrack user list --skip <count>
ytrack user find <query>
Projects

Create

Create YouTrack projects with flags or interactive prompts, and optionally save the new local project ID.

ytrack project create [title]
ytrack project create "Mobile App" --key MOB --leader me
ytrack project create "Mobile App" --key MOB --leader rtcoder
ytrack project create "Mobile App" --key MOB --leader 1-2
ytrack project create "Mobile App" --key MOB --leader me --set-project-id
ytrack project create "Mobile App" --key MOB --leader me --template kanban
ytrack project list issues
ytrack project list issues --status Submitted
ytrack project list issues --user me
ytrack project list issues --type Bug
ytrack project list issues --priority Normal
ytrack project list statuses
ytrack project list users
ytrack project list types
ytrack project list priorities
ytrack project list versions
There is no ytrack global set-project-id. Project IDs are local-only by design.

Configuration

Local configuration overrides global configuration. Tokens are masked when printed, and local config should be ignored by Git.

Merge Order

local ./.ytrack/config.json
  > global OS user config

project_id is never stored globally, which reduces the chance of creating issues in the wrong YouTrack project.

Config Paths

  • macOS: ~/Library/Application Support/ytrack/config.json
  • Linux: ~/.config/ytrack/config.json
  • Windows: %APPDATA%\ytrack\config.json
  • Local: ./.ytrack/config.json

Show Output

ytrack show prints the effective merged config. Secret tokens are masked.

url: https://youtrack.example.com
token: perm:xxxx...abcd
project_id: 0-1

JSON and Scripting

Put --json before the command to print raw YouTrack API responses.

ytrack --json issue create "Crash on save"
ytrack --json issue create "Crash on save" "Steps to reproduce..."
ytrack --json issue show ART-123
ytrack --json issue edit ART-123 --title "New title"
ytrack --json issue comment ART-123 "Looks good"
ytrack --json issue command ART-123 "Priority Critical"
ytrack --json issue status ART-123 Done
ytrack --json user me
ytrack --json user list --top 20
ytrack --json project create "Mobile App" --key MOB --leader me
ytrack --json project list users

Required Configuration

issue create

  • url
  • token
  • local project_id

issue status

  • url
  • token

user

  • url
  • token

project create

  • url
  • token
  • project name
  • project key
  • resolvable leader
  • optional --set-project-id
Missing values produce actionable errors, such as missing configured project_id, run `ytrack set-project-id <project-id>`.

Development

Test

go test ./...
go test -count=1 ./...

Build

go build -o ytrack ./cmd/ytrack
GOOS=darwin GOARCH=arm64 go build -o dist/ytrack-darwin-arm64 ./cmd/ytrack
GOOS=linux GOARCH=amd64 go build -o dist/ytrack-linux-amd64 ./cmd/ytrack
GOOS=windows GOARCH=amd64 go build -o dist/ytrack-windows-amd64.exe ./cmd/ytrack

Releases

GitHub Actions publishes release assets when a version tag is pushed. Release packages include platform builds, Linux .deb and .rpm packages, and checksums.txt.

git tag v0.1.1
git push origin v0.1.1