# Nixelo CLI

> TLDR: Machine-facing guide to Nixelo CLI authentication, command families, structured output, issue detail, and product boundaries.

> Generated by `pnpm run public:markdown:generate`. Edit `src/content/publicMarkdown.ts`, not the generated public file.

Source: packages/cli/README.md

The published nixelo CLI provides organization-scoped terminal access to delivery, administration, automation, and reporting workflows. Pin the package version while the CLI remains pre-stable in 0.0.x.

## Install and Discover

- Run npx nixelo --help without a global install, or install the nixelo package globally with npm.
- Run `nixelo <command> --help` for complete generated arguments and options.
- Use --json or --output json|csv for automation; human table output is not a stable interface.
- Use --yes only where destructive commands expose explicit non-interactive confirmation.

## Authentication and Scope

- nixelo login uses the app-owned browser flow and stores an organization-bound token under ~/.config/nixelo/.
- NIXELO_TOKEN overrides locally stored credentials.
- The active token selects the organization for every request; nixelo whoami reports that identity and scope.
- A configured default project key never changes token organization scope.

## Command Families

- Identity and configuration: login, logout, whoami, config, tokens, and apikeys.
- Delivery: issues, projects, sprints, labels, fields, templates, filters, automations, and stats.
- Knowledge and collaboration: docs, notifications, invites, users, teams, and workspaces.
- Operations: time and webhooks.
- Shell support: completion for bash, zsh, and fish.

## Issue Detail Contract

- `nixelo issues view <key>` returns descriptionText and descriptionMarkdown for clean automation input.
- Detailed issue JSON includes resolved assignees, parent issue, epic, sprint, bounded subtasks, and a subtasksTruncated signal.
- Issue creation remains intentionally narrower than issue update; inspect command help rather than assuming every web field is accepted at creation time.
- Subtask listing is available, but dedicated CLI subtask creation and reparenting are not yet exposed.

## Product Context

- [Capability manifest](/capabilities.json): Product areas plus generated operation support and transport bindings.
- [API guide](/markdown/api.md): Mounted HTTP and MCP interfaces.
- [Documentation map](/markdown/docs.md): Canonical source owners for deeper research.

## CLI Operation Support

This table is generated from semantic operation metadata and CLI HTTP bindings. Command aliases and composite command workflows remain discoverable through `nixelo --help`.

| Operation | Status | Method and path | Stability | Limitation |
| --- | --- | --- | --- | --- |
| api_keys.generate | supported | POST /api/cli/apikeys | pre-stable |  |
| api_keys.list | supported | GET /api/cli/apikeys | pre-stable |  |
| api_keys.revoke | supported | POST /api/cli/apikeys/revoke | pre-stable |  |
| api_keys.rotate | supported | POST /api/cli/apikeys/rotate | pre-stable |  |
| api_keys.usage | supported | GET /api/cli/apikeys/usage | pre-stable |  |
| automation_rules.create | supported | POST /api/cli/automations | pre-stable |  |
| automation_rules.list | supported | GET /api/cli/automations | pre-stable |  |
| automation_rules.remove | supported | POST /api/cli/automations/remove | pre-stable |  |
| automation_rules.update | supported | POST /api/cli/automations/update | pre-stable |  |
| cli_auth.exchange | supported | POST /api/cli/exchange | pre-stable |  |
| cli_tokens.list | supported | GET /api/cli/tokens | pre-stable |  |
| cli_tokens.revoke | supported | POST /api/cli/tokens/revoke | pre-stable |  |
| custom_fields.create | supported | POST /api/cli/fields | pre-stable |  |
| custom_fields.list | supported | GET /api/cli/fields | pre-stable |  |
| custom_fields.remove | supported | DELETE /api/cli/fields | pre-stable |  |
| custom_fields.update | supported | PATCH /api/cli/fields | pre-stable |  |
| documents.archive | supported | POST /api/cli/document/archive | pre-stable |  |
| documents.create | supported | POST /api/cli/document/create | pre-stable |  |
| documents.get | supported | GET /api/cli/document | pre-stable |  |
| documents.list | supported | GET /api/cli/documents | pre-stable |  |
| documents.move | supported | POST /api/cli/document/move | pre-stable |  |
| documents.move_project | supported | POST /api/cli/document/move-project | pre-stable |  |
| documents.rename | supported | POST /api/cli/document/rename | pre-stable |  |
| documents.search | supported | GET /api/cli/documents/search | pre-stable |  |
| documents.tree | supported | GET /api/cli/documents/tree | pre-stable |  |
| invites.list | supported | GET /api/cli/invites | pre-stable |  |
| invites.resend | supported | POST /api/cli/invites/resend | pre-stable |  |
| invites.revoke | supported | POST /api/cli/invites/revoke | pre-stable |  |
| invites.send | supported | POST /api/cli/invites | pre-stable |  |
| issue_activity.list | supported | GET /api/cli/issue/activity | pre-stable |  |
| issue_comments.create | supported | POST /api/cli/issue/comment | pre-stable |  |
| issue_comments.list | supported | GET /api/cli/issue/comments | pre-stable |  |
| issue_templates.create | supported | POST /api/cli/templates | pre-stable |  |
| issue_templates.list | supported | GET /api/cli/templates | pre-stable |  |
| issue_templates.remove | supported | DELETE /api/cli/templates | pre-stable |  |
| issue_templates.update | supported | PATCH /api/cli/templates | pre-stable |  |
| issues.archive | supported | POST /api/cli/issue/archive | pre-stable |  |
| issues.bulk_archive | supported | POST /api/cli/issues/bulk/lifecycle | pre-stable |  |
| issues.bulk_assign | supported | POST /api/cli/issues/bulk/assign | pre-stable |  |
| issues.bulk_delete | supported | POST /api/cli/issues/bulk/lifecycle | pre-stable |  |
| issues.bulk_due_date | supported | POST /api/cli/issues/bulk/date | pre-stable |  |
| issues.bulk_labels | supported | POST /api/cli/issues/bulk/labels | pre-stable |  |
| issues.bulk_priority | supported | POST /api/cli/issues/bulk/priority | pre-stable |  |
| issues.bulk_restore | supported | POST /api/cli/issues/bulk/lifecycle | pre-stable |  |
| issues.bulk_sprint | supported | POST /api/cli/issues/bulk/sprint | pre-stable |  |
| issues.bulk_start_date | supported | POST /api/cli/issues/bulk/date | pre-stable |  |
| issues.bulk_status | supported | POST /api/cli/issues/bulk/status | pre-stable |  |
| issues.create | supported | POST /api/cli/issues | pre-stable |  |
| issues.create_subtask | supported | POST /api/cli/issue/subtask/create | pre-stable |  |
| issues.delete | supported | POST /api/cli/issue/delete | pre-stable |  |
| issues.get | supported | GET /api/cli/issue | pre-stable |  |
| issues.list | partial | GET /api/cli/issues | pre-stable | CLI filtering and result shaping remain independently implemented from the public API issue list owner. |
| issues.move | supported | POST /api/cli/issue/move | pre-stable |  |
| issues.restore | supported | POST /api/cli/issue/restore | pre-stable |  |
| issues.similar | supported | GET /api/cli/issue/similar | pre-stable |  |
| issues.subtasks | supported | GET /api/cli/issue/subtasks | pre-stable |  |
| issues.update | supported | POST /api/cli/issue/update | pre-stable |  |
| labels.create | supported | POST /api/cli/labels | pre-stable |  |
| labels.list | supported | GET /api/cli/labels | pre-stable |  |
| labels.remove | supported | POST /api/cli/label/remove | pre-stable |  |
| labels.update | supported | POST /api/cli/label/update | pre-stable |  |
| meeting_recordings.cancel | supported | POST /api/cli/meetings/cancel | beta |  |
| meeting_recordings.get | supported | GET /api/cli/meeting | beta |  |
| meeting_recordings.list | supported | GET /api/cli/meetings | beta |  |
| meeting_recordings.schedule | supported | POST /api/cli/meetings/schedule | beta |  |
| meeting_recordings.start | supported | POST /api/cli/meetings/start | beta |  |
| notifications.dismiss | supported | POST /api/cli/notifications/dismiss | pre-stable |  |
| notifications.list | supported | GET /api/cli/notifications | pre-stable |  |
| notifications.mark_read | supported | POST /api/cli/notifications | pre-stable |  |
| project_members.add | supported | POST /api/cli/project/member/add | pre-stable |  |
| project_members.list | supported | GET /api/cli/project/members | pre-stable |  |
| project_members.remove | supported | POST /api/cli/project/member/remove | pre-stable |  |
| project_members.update_role | supported | POST /api/cli/project/member/role | pre-stable |  |
| project_stats.get | supported | GET /api/cli/project/stats | pre-stable |  |
| project_workflows.list | supported | GET /api/cli/project/workflow | pre-stable |  |
| project_workflows.reorder | supported | POST /api/cli/project/workflow/reorder | pre-stable |  |
| project_workflows.set | supported | POST /api/cli/project/workflow/set | pre-stable |  |
| projects.create | supported | POST /api/cli/projects | pre-stable |  |
| projects.delete | supported | POST /api/cli/project/delete | pre-stable |  |
| projects.get | supported | GET /api/cli/project | pre-stable |  |
| projects.list | supported | GET /api/cli/projects | pre-stable |  |
| projects.restore | supported | POST /api/cli/project/restore | pre-stable |  |
| projects.update | supported | POST /api/cli/project/update | pre-stable |  |
| saved_filters.create | supported | POST /api/cli/filters | pre-stable |  |
| saved_filters.list | supported | GET /api/cli/filters | pre-stable |  |
| saved_filters.remove | supported | POST /api/cli/filters/remove | pre-stable |  |
| saved_filters.toggle_favorite | supported | POST /api/cli/filters/favorite | pre-stable |  |
| saved_filters.update | supported | POST /api/cli/filters/update | pre-stable |  |
| sprints.burndown | supported | GET /api/cli/sprint/burndown | pre-stable |  |
| sprints.complete | supported | POST /api/cli/sprint/complete | pre-stable |  |
| sprints.create | supported | POST /api/cli/sprints | pre-stable |  |
| sprints.get | supported | GET /api/cli/sprint | pre-stable |  |
| sprints.list | supported | GET /api/cli/sprints | pre-stable |  |
| sprints.start | supported | POST /api/cli/sprint/start | pre-stable |  |
| sprints.update | supported | POST /api/cli/sprint/update | pre-stable |  |
| stats.cycle_time | supported | GET /api/cli/stats/cycle-time | pre-stable |  |
| stats.organization | supported | GET /api/cli/stats/org | pre-stable |  |
| stats.team | supported | GET /api/cli/stats/team | pre-stable |  |
| team_members.add | supported | POST /api/cli/team/member/add | pre-stable |  |
| team_members.remove | supported | POST /api/cli/team/member/remove | pre-stable |  |
| team_members.update_role | supported | POST /api/cli/team/member/role | pre-stable |  |
| teams.create | supported | POST /api/cli/teams | pre-stable |  |
| teams.delete | supported | POST /api/cli/team/delete | pre-stable |  |
| teams.get | supported | GET /api/cli/team | pre-stable |  |
| teams.list | supported | GET /api/cli/teams | pre-stable |  |
| teams.restore | supported | POST /api/cli/team/restore | pre-stable |  |
| teams.update | supported | POST /api/cli/team/update | pre-stable |  |
| time_entries.add_weekly_row | supported | POST /api/cli/time/weekly/row | beta |  |
| time_entries.copy_previous_week_rows | supported | POST /api/cli/time/weekly/copy | beta |  |
| time_entries.create | supported | POST /api/cli/time/create | beta |  |
| time_entries.delete | supported | POST /api/cli/time/delete | beta |  |
| time_entries.get_weekly | supported | GET /api/cli/time/weekly | beta |  |
| time_entries.link_issue | supported | POST /api/cli/time/issue/link | beta |  |
| time_entries.list | supported | GET /api/cli/time | beta |  |
| time_entries.remove_weekly_row | supported | POST /api/cli/time/weekly/row | beta |  |
| time_entries.set_weekly_cell | supported | POST /api/cli/time/weekly/cell | beta |  |
| time_entries.start | supported | POST /api/cli/time | beta |  |
| time_entries.stop | supported | PATCH /api/cli/time | beta |  |
| time_entries.summarize | supported | GET /api/cli/time/summary | beta |  |
| time_entries.unlink_issue | supported | POST /api/cli/time/issue/unlink | beta |  |
| time_entries.update | supported | POST /api/cli/time/update | beta |  |
| users.current | supported | GET /api/cli/whoami | pre-stable |  |
| users.get | supported | GET /api/cli/user | pre-stable |  |
| users.search | supported | GET /api/cli/users/search | pre-stable |  |
| users.stats | supported | GET /api/cli/users/stats | pre-stable |  |
| webhook_executions.list | supported | GET /api/cli/webhook/executions | pre-stable |  |
| webhook_executions.retry | supported | POST /api/cli/webhook/retry | pre-stable |  |
| webhooks.create | supported | POST /api/cli/webhooks | pre-stable |  |
| webhooks.delete | supported | POST /api/cli/webhook/delete | pre-stable |  |
| webhooks.list | supported | GET /api/cli/webhooks | pre-stable |  |
| webhooks.test | supported | POST /api/cli/webhook/test | pre-stable |  |
| webhooks.update | supported | POST /api/cli/webhook/update | pre-stable |  |
| workspace_members.add | supported | POST /api/cli/workspace/member/add | pre-stable |  |
| workspace_members.list | supported | GET /api/cli/workspace/members | pre-stable |  |
| workspace_members.remove | supported | POST /api/cli/workspace/member/remove | pre-stable |  |
| workspace_members.update_role | supported | POST /api/cli/workspace/member/role | pre-stable |  |
| workspaces.archive | supported | POST /api/cli/workspace/archive | pre-stable |  |
| workspaces.create | supported | POST /api/cli/workspaces | pre-stable |  |
| workspaces.delete | supported | POST /api/cli/workspace/delete | pre-stable |  |
| workspaces.get | supported | GET /api/cli/workspace | pre-stable |  |
| workspaces.list | supported | GET /api/cli/workspaces | pre-stable |  |
| workspaces.update | supported | POST /api/cli/workspace/update | pre-stable |  |
