Using the CLI
Install and log in to the trackica CLI, and manage workspaces, issues, agents, and runtimes from the terminal.
The trackica CLI both connects local runtimes and manages workspaces, issues, agents, and automations from the terminal. This page covers the common paths; the flags your installed version supports are always defined by each command's own --help.
Installation
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bashWith Homebrew installed, you can also run:
brew install multica-ai/tap/multicaThe published Homebrew tap and formula keep their compatibility identity; the installed command is trackica.
Windows PowerShell
irm https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.ps1 | iexConfirm the install:
trackica versionFirst connection
Connect to the private instance provided by your administrator, using the exact API and app URLs they give you:
trackica setup self-host \
--server-url https://api.your-company.example \
--app-url https://trackica.your-company.examplesetup saves the server address, opens a browser to complete sign-in, and starts the daemon. When it finishes, check:
trackica auth status
trackica daemon statusIf you only need to sign in again without overwriting other configuration, run trackica login. On a machine without a browser, create a personal access token in the web settings first, then enter it with:
trackica login --tokenThe command prompts you to paste the token in the terminal, keeping the full value out of shell history.
Choosing a workspace
List workspaces and switch the default:
trackica workspace list
trackica workspace switch <slug>Subsequent commands use this workspace. A single command can override it with --workspace-id, or you can set TRACKICA_WORKSPACE_ID.
Invite members:
trackica workspace member invite teammate@example.com
trackica workspace member invite admin@example.com --role adminCommon issue operations
# View and search
trackica issue list
trackica issue get TRK-123
trackica issue search "login failure"
# Create and update
trackica issue create --title "Fix login failure"
trackica issue status TRK-123 in_progress
trackica issue assign TRK-123 --to "Backend Agent"
# Comments and runs
trackica issue comment list TRK-123
trackica issue comment add TRK-123 --content "Check the regression tests first"
trackica issue runs TRK-123Read long descriptions or comments from stdin to avoid dealing with newlines and quoting:
trackica issue create --title "Upgrade notes" --description-stdin < notes.md
trackica issue comment add TRK-123 --content-stdin < review.mdView the messages of a single run, or stop a task:
trackica issue run-messages <task-id> --issue TRK-123
trackica issue cancel-task <task-id> --issue TRK-123Agents and skills
trackica agent list
trackica agent get <agent-id>
trackica agent create --help
trackica agent update <agent-id> --help
trackica skill list
trackica skill get <skill-id>
trackica skill import --url <skill-url>
trackica agent skills add <agent-id> --skill-ids <skill-id>When an import hits a skill with the same name, the default is to stop without modifying existing content. Pick by intent:
trackica skill import --url <skill-url> --on-conflict overwrite
trackica skill import --url <skill-url> --on-conflict rename
trackica skill import --url <skill-url> --on-conflict skipoverwrite is only allowed for the skill's creator and preserves the original ID and agent bindings.
Daemon and runtimes
trackica daemon start
trackica daemon stop
trackica daemon restart
trackica daemon status --output json
trackica daemon logs --follow
trackica runtime list
trackica runtime rename <runtime-id> "Office Mac"
trackica runtime usage <runtime-id>
trackica runtime activity <runtime-id>Deleting a runtime that still has active agents bound to it is refused by default. trackica runtime delete <id> --cascade unbinds those agents, preserves their configuration and history, and cancels their active tasks.
See Daemon and runtimes for how it works and for custom profiles.
Command overview
| Command | Purpose |
|---|---|
issue | Create, update, assign, and search issues; manage comments, subscribers, labels, properties, and runs |
project | Manage projects and their resources |
label, property | Manage workspace labels and custom properties |
agent, skill, squad | Manage agents, skills, and squads |
autopilot | Manage automations, triggers, and run history |
workspace | Create, view, and switch workspaces, and invite members |
repo | Manage workspace repositories and check them out locally |
daemon, runtime | Start and stop the local daemon; view and manage runtimes |
attachment | Upload or download attachments |
user profile | View or update the current user's profile |
auth, login, setup | Log in, check auth status, and initialize a connection |
config | View or edit the current CLI profile's local configuration |
update, version | Update the CLI or print the version |
trackica chat reads the external chat session an agent is currently handling; it is mainly for agents in chat integrations, not a general command for browsing arbitrary workspace conversations.
IDs and output formats
Issues use keys like TRK-123 or full UUIDs; short UUID prefixes are not accepted.
list commands for other resources usually print copyable short IDs and support --full-id for the full UUID. When a short ID is ambiguous, the CLI asks for more characters or the full UUID. Short task IDs also require --issue to identify the owning issue.
Many commands support structured output:
trackica issue list --output json
trackica agent list --output jsonScripts should use JSON output rather than parsing the terminal-oriented tables. The output formats and pagination flags each command supports are defined by trackica <command> --help.
Profiles and configuration
The default configuration lives in ~/.trackica/config.json. Use --profile <name> to isolate a separate set of server address, token, default workspace, and daemon state:
trackica setup self-host --profile staging \
--server-url https://api.staging.example.com \
--app-url https://app.staging.example.com
trackica issue list --profile stagingNamed profiles live in ~/.trackica/profiles/<name>/config.json. Inspect the current values:
trackica config show
trackica config show --profile stagingDo not set TRACKICA_DAEMON_PORT (or its legacy MULTICA_DAEMON_PORT alias) in the host shell, Compose service, or container entrypoint that starts a daemon. The host daemon derives its health port from --profile and injects the current variable into agent tasks itself. Remove either variable from older startup environments entirely: versions 0.4.22 and 0.4.23 otherwise mistake that shell for a managed task and reject login. Newer versions let guarded human login and daemon status recover when the port is the only task signal, but ordinary API and profile-resolving commands intentionally remain fail-closed until the variable is removed.
When the CLI runs inside a daemon-managed agent task, it does not load or modify these human-owned profile files. trackica API commands authenticate with the task-scoped credential injected by the daemon. config show and config set use private task-local state; human/local commands such as login, logout, setup, workspace switch, local runtime profile path changes, daemon start / stop / restart, daemon logs, and daemon probe-runtimes are unavailable. auth status does not print token material in this context.
daemon status and daemon disk-usage stay available so an agent can inspect the runtime hosting it, scoped to that runtime: status probes the health port the daemon injected, and disk-usage scans the workspaces root the daemon injected. Neither accepts --profile, disk-usage also rejects --all-profiles and --workspaces-root, and its STATUS column is blank because resolving it would require the human's stored token. Use du and df for anything outside that scope.
This protects implicit trackica CLI profile resolution while preserving the normal HOME and XDG variables used by other provider tools. It is not an OS filesystem boundary: processes running as the same system user may still open an explicitly known path. Use a dedicated user, container, VM, or equivalent isolation when that stronger guarantee is required.
CLI configuration files contain tokens that can access trackica as you. Don't commit them to a repository, upload them to logs, or share them with others.
Command reference
The tables below cover every current top-level command, grouped the way the CLI itself groups them. All commands accept the global flags --server-url, --workspace-id, --profile, and --debug. --output is registered per command, and the default format varies: list commands default to a table, while get and create commands mostly default to JSON. Full flags are defined by trackica <command> --help.
Core
| Command | Subcommand | Purpose | Key flags |
|---|---|---|---|
issue | list | List issues | --status, --priority, --assignee, --project, --metadata (repeatable), --limit, --offset, --sort, --full-id |
get <id> | Show a single issue | ||
create | Create an issue | --title (required), --description / --description-stdin / --description-file, --status, --priority, --assignee, --parent, --stage, --project, --start-date, --due-date, --attachment (repeatable) | |
update <id> | Update issue fields | Same fields as create, plus --position, --no-start | |
assign <id> | Assign or unassign | --to (fuzzy name match against members, agents, and squads), --to-id, --unassign, --no-start | |
status <id> <status> | Change status | --no-start | |
reorder <id> | Move within a column | ||
search <query> | Search issues | --limit, --include-closed | |
children <id> | List sub-issues grouped by stage | ||
pull-requests <id> | List linked PRs | ||
comment list/add/delete/resolve/unresolve | Manage comments | add: --content / --content-stdin / --content-file, --parent, --attachment; list: --since, --thread, --tail | |
subscriber list/add/remove <issue-id> | Manage subscribers | --user, --user-id (defaults to the current user) | |
label list/add/remove <issue-id> | Manage labels on an issue | ||
metadata list/get/set/delete <issue-id> | Manage issue-level key-value metadata | ||
property list/set/unset <issue-id> | Set custom property values | set: --name, --value (actor / multi_actor accept a member name, email, or id) | |
runs <issue-id> | View run history | --full-id | |
run-messages <task-id> | View the messages of a single run | --since, --issue | |
usage <issue-id> | View aggregated token usage | ||
rerun <id> | Re-enqueue a run for the current assignee | ||
cancel-task <task-id> | Cancel a running or queued task | --issue | |
project | list/get/create/update/delete | Manage projects | |
status <id> <status> | Change project status | ||
resource list/add/update/remove | Manage project resources | --type, --url, --local-path, --daemon-id, --execution-mode (in_place / worktree for a local directory) | |
label | list/get/create/update/delete | Manage workspace labels | |
property | list/get/create/update/archive/unarchive | Manage workspace custom properties | create: --name, --type (text, number, select, multi_select, date, checkbox, url, actor, multi_actor), --option (repeatable, select types only); list: --include-archived; the type cannot be changed after creation |
agent | list/get/create/update/archive/restore | Manage agents | --name, --runtime-id (required for create), --instructions, --model, --thinking-level, --mcp-config, --permission-mode, --max-concurrent-tasks |
copy <agent-id> | Copy into a new agent; the original is untouched | --name (defaults to the original name plus (copy)), --runtime-id (copying to another runtime also requires --model), --no-skills; secret configuration such as custom_env, mcp_config, and runtime_config is not copied — re-provide it with the same flags as create | |
tasks <id> | View an agent's tasks | ||
avatar <id> | Upload an avatar | ||
env get/set <agent-id> | Read and write custom environment variables (owner and admin only) | ||
skills list/set/add <agent-id> | Manage attached skills | --skill-ids (set replaces the full list, add appends) | |
mcp list/add/enable/disable/remove <agent-id> | Assign workspace MCP servers to this agent | Take the server id from workspace mcp list. A library entry does nothing until it is added here; disable stops sending it without dropping the assignment | |
autopilot | list/get/create/update/delete | Manage automations | create: --title, --agent, --mode (all required), --priority, --project, --subscriber (repeatable) |
trigger <id> | Trigger a run manually | ||
runs <id> | View run history | ||
trigger-add/trigger-update/trigger-delete/trigger-rotate-url | Manage schedule and webhook triggers | ||
workspace | list/get/create/update/switch | Manage workspaces; switch sets the current profile's default workspace | |
mcp list/add/update/remove | Manage the workspace's MCP server library | Writes are owner/admin. A server added here is assigned to no agent — give it to one with trackica agent mcp add. list shows names and transports only; the stored entry is write-only and never returned. --server-config-file / --server-config-stdin keep tokens out of shell history | |
member list/invite <email> | View members, send invites | invite: --role (member or admin, default member) | |
repo | list/add/remove/checkout | Manage workspace repositories and check them out locally | --url (repeatable); checkout: --ref |
skill | list/get/create/update/delete | Manage skills | |
import | Import a skill from a URL or local file | --url / --file, --on-conflict (fail, overwrite, rename, skip; default fail) | |
search <query> | Search skills | ||
files list/upsert/delete <skill-id> | Manage the files inside a skill | ||
squad | list/get/create/update/delete | Manage squads (delete archives) | |
member list/add/set-role/remove | Manage squad members | ||
activity <issue-id> <outcome> | Record a leader evaluation | ||
chat | history, thread [id] | Read the external chat session an agent is currently handling | --limit, --before |
Runtime
| Command | Subcommand | Purpose | Key flags |
|---|---|---|---|
daemon | start | Start the local daemon | --foreground, --device-name, --runtime-name, --workspaces-root, --poll-interval, --heartbeat-interval, --agent-timeout (0 means no limit), --max-concurrent-tasks, --no-auto-update; each has a matching TRACKICA_* environment variable |
stop / status / restart | Stop, check status, restart (restart takes the same flags as start) | ||
logs | View daemon logs | --follow, --lines | |
disk-usage | View local disk usage | --by-workspace, --by-task, --top | |
runtime | list/usage/activity/update/rename/delete | View and manage runtimes | delete: --cascade (unbinds bound agents, preserves their data, and cancels their tasks) |
profile list/create/update/delete | Manage custom runtime profiles | ||
profile set-path/unset-path <profile-id> | Pin a local executable path (local only, never uploaded to the server) |
Additional
| Command | Subcommand | Purpose | Key flags |
|---|---|---|---|
auth | status / logout | Check auth status; logout only deletes the locally saved token and does not revoke it on the server | |
user | profile get/update | View or update the current user's profile | |
login | — | Sign in via the browser and configure all workspaces automatically | --token (prompts interactively in the terminal when passed without a value) |
setup | cloud (default), self-host | Save the server address, complete sign-in, and start the daemon | self-host: --server-url, --app-url, --port, --frontend-port |
attachment | download <attachment-id>, upload <path> | Download or upload attachments | download: --output-dir; upload: --task |
config | show, set <key> <value> | View or edit the current profile's local configuration | Precedence: command-line flags > environment variables > config.json > built-in defaults; set an empty string to clear a value |
update | — | Update the CLI to the latest version | |
version | — | Print version information | --output (text or json) |
Driving trackica from another coding agent
If most of your work already happens inside Codex, Claude Code, or Cursor, you can operate trackica from there instead of switching to a terminal. The trackica CLI skill teaches those agents to drive the commands on this page safely: reading issues and comment threads without burning tokens, writing comments through a file, and handling the side effects that mentions, status changes, and assignments carry.
It runs entirely through your authenticated CLI and grants no access of its own — permissions still come from your login, selected profile, and workspace. It requires CLI v0.4.26 or newer. The repository README covers installation for the Claude Code plugin marketplace, the Codex skill installer, Cursor, and any other tool that loads Markdown instructions.
Next steps
- trackica CLI skill — operate trackica from Codex, Claude Code, or Cursor.
- Authentication and tokens — creating, renewing, and revoking PATs.
- Troubleshooting — diagnosing command errors and tasks that never start.
- Create and configure an agent — the full semantics of every
agent createfield.