Skip to content

Projects

KoukeNeko edited this page Sep 9, 2026 · 4 revisions

Projects

English · 繁體中文

Browsing and selecting

taiga project list
taiga project view example-project
taiga project use example-project
taiga project use example-project --local

project use writes the default project into the current profile; with --local it binds only the current Git repository. Afterwards every command that needs a project can omit --project.

Create, edit, delete

taiga project create --name "Mobile App" --template scrum
taiga project edit mobile-app --description "Product delivery" --kanban=true
taiga project delete mobile-app --yes

Projects are created private by default; --public is required to create a public one. --template accepts a project template defined on the Taiga site, commonly scrum or kanban.

Permanent deletion runs as a background job on Taiga and cannot be undone. It requires --yes when there is no terminal.

The archive limitation

Taiga 6's REST API exposes archived_code as read-only and offers no archive action, so taiga project archive|unarchive reports unsupported_capability and points you at a site administrator. The CLI will not simulate the behaviour through some other endpoint.

Export and import

taiga project export example-project --format gzip --json
taiga project import ./example-project-export.json.gz --dry-run --json
taiga project import ./example-project-export.json.gz --yes --json
cat example-project-export.json | taiga project import - --yes --json

Both plain JSON and gzip dump formats are supported.

Production Taiga deployments normally generate exports and run imports as background jobs. In that case the CLI reports status: "accepted" with a task ID and verified: false, and Taiga emails the result. Synchronous deployments with Celery disabled instead return status: "ready" with a download URL, or status: "created" with the project that was made.

Export uses a Taiga GET endpoint, but that endpoint enqueues work and is therefore not idempotent, so the CLI deliberately does not retry it. Import validates the JSON or gzip format locally by streaming, without loading the whole dump into memory, and requires an explicit --yes when non-interactive.

Ownership transfer

taiga project transfer start --user 27 --reason "New maintainer" --yes
taiga project transfer validate-token --token "$TRANSFER_TOKEN"
taiga project transfer accept --token "$TRANSFER_TOKEN" --yes

The transfer token never appears in dry-run or result output.

Likes and fans

taiga project like
taiga project unlike
taiga project fans --json

CSV export

taiga csv export issue --output ./issues.csv
taiga csv export story --output ./stories.csv
taiga csv export task --output ./tasks.csv
taiga csv export epic --output ./epics.csv

The flow is: request a short-lived server-side UUID from Taiga, stream the download into a 0600 temporary file, compute its SHA-256, replace the destination atomically, and finally revoke the UUID. An existing file is not overwritten by default.

Clone this wiki locally