trello-axi

September 1, 2026 ยท View on GitHub

Agent-native, token-efficient CLI for Trello. It calls the official Trello REST API directly and implements the AXI design principles: compact truthful output, bounded reads, exact resolution, idempotent mutations, structured failures, batching, and non-interactive operation.

Install

Requires Python 3.13+ and uv.

uv tool install trello-axi

For development:

uv sync --locked --all-groups
uv run trello-axi --version

Authentication

Prefer environment variables in managed environments:

export TRELLO_API_KEY='...'
export TRELLO_TOKEN='...'
trello-axi auth status

Or store them locally (the file is created with mode 0600):

trello-axi auth set --api-key '...' --token '...'

Install the bundled skill and optional Claude Code/Codex SessionStart hooks:

trello-axi setup skill
trello-axi setup hooks

The hook installer preserves unmanaged hooks and updates only entries marked for trello-axi.

Default path: ${XDG_CONFIG_HOME:-~/.config}/trello-axi/config.json. Environment variables take precedence. Never commit the token or pass credentials through agent prompts.

Agent-oriented workflows

No arguments returns live board data rather than help:

trello-axi
trello-axi boards
trello-axi board Dream
trello-axi lists --board Dream
trello-axi cards --board Dream --list Backlog --limit 50
trello-axi search videoaula --board Dream
trello-axi labels --board Dream
trello-axi card view CARD_ID            # descriptions are bounded to 2,000 chars
trello-axi card view CARD_ID --full     # explicitly request the complete description

Mutations:

trello-axi card create --board Dream --list Backlog --title 'Task' --description-file task.md
trello-axi card ensure --board Dream --list Backlog --title 'Task' --description-file task.md
trello-axi card update CARD_ID --title 'New title' --due 2026-06-01
trello-axi card move CARD_ID --board Dream --list Doing
trello-axi card comment CARD_ID --text 'Implementation started'
trello-axi label ensure --board Dream --name 'Complexity: 5' --color yellow
trello-axi card add-label CARD_ID --board Dream --label 'Complexity: 5'
trello-axi card remove-label CARD_ID --board Dream --label 'Complexity: 5'
trello-axi card add-checklist CARD_ID --name Acceptance --item 'Tests pass' --item 'Docs updated'
trello-axi card archive CARD_ID

Labels are taxonomy-agnostic. For example, users can model Planning Poker and priority independently:

for points in 1 2 3 5 8 13 21; do
  trello-axi label ensure --board Dream --name "Complexity: $points" --color blue
done
for priority in P0 P1 P2 P3; do
  trello-axi label ensure --board Dream --name "Priority: $priority" --color red
done

trello-axi cards --board Dream --label 'Priority: P1'
trello-axi cards --board Dream --label-order 'Complexity: 1,Complexity: 2,Complexity: 3,Complexity: 5,Complexity: 8,Complexity: 13,Complexity: 21'

ensure is idempotent by exact case-insensitive title: it creates a missing card, moves/updates one match, leaves the desired state unchanged, and refuses ambiguous matches.

Batch creation accepts JSON or YAML:

cards:
  - title: First task
    description: Detailed scope
  - title: Second task
    due: '2026-06-30'
trello-axi card create-batch --board Dream --list Backlog --file cards.yaml --ensure

Output contract

TOON-style output is the default and includes contextual next-command suggestions. JSON is available globally and uses a stable {<resource>: ..., "help": [...]} envelope:

trello-axi --format json cards --board Dream --limit 10

Unknown flags fail. Reads default to 50 records and are capped at 1000. Failures are written to stderr with stable exit codes:

CodeMeaning
0Success / desired state already satisfied
1Unexpected local failure
2Invalid input or configuration
3Authentication/permission failure
4Resource not found
5Ambiguous name; use an ID
6Trello API/network failure

Scope

The CLI supports boards and lists, generic label management, card CRUD, label filtering and custom ordering, search, moves, archive, comments, checklists, idempotent ensure, and batch creation. It intentionally excludes Power-Ups, webhooks, OAuth multi-user applications, and destructive permanent deletion.

Development

uv sync --locked --all-groups
uv run ruff format --check .
uv run ruff check .
uv run ty check .
uv run pytest
uv build

License

MIT