Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mirage.strukto.ai/llms.txt

Use this file to discover all available pages before exploring further.

The Trello resource exposes workspaces, boards, lists, cards, members, and labels as a virtual filesystem mounted at some prefix such as /trello/. For API key setup, see Trello Setup.

Config

import os

from mirage import MountMode, Workspace
from mirage.resource.trello import TrelloConfig, TrelloResource

config = TrelloConfig(
    api_key=os.environ["TRELLO_API_KEY"],
    api_token=os.environ["TRELLO_API_TOKEN"],
)
resource = TrelloResource(config=config)
ws = Workspace({"/trello": resource}, mode=MountMode.READ)

Filesystem Layout

/trello/
  workspaces/
    <workspace-name>__<workspace-id>/
      workspace.json
      boards/
        <board-name>__<board-id>/
          board.json
          members/
            <full-name>__<member-id>.json
            ...
          labels/
            <label-name>__<label-id>.json
            ...
          lists/
            <list-name>__<list-id>/
              list.json
              cards/
                <card-name>__<card-id>/
                  card.json
                  comments.jsonl
                ...
            ...
Example:
/trello/
  workspaces/
    engineering__abc123def/
      workspace.json
      boards/
        product-roadmap__brd_001/
          board.json
          members/
            alice__mem_001.json
            bob__mem_002.json
          labels/
            bug__lbl_001.json
            feature__lbl_002.json
          lists/
            backlog__lst_001/
              list.json
              cards/
                fix-login__crd_001/
                  card.json
                  comments.jsonl
                add-search__crd_002/
                  card.json
                  comments.jsonl
            in-progress__lst_002/
              list.json
              cards/
                ...
Directory and file names embed the Trello ID after __ so that resource-specific commands can reference the correct resource without extra lookups.

Workspaces

Each workspace directory is named:
<workspace-name>__<workspace-id>
Inside the workspace directory:
  • workspace.json is the normalized workspace metadata
  • boards/ contains one directory per board

Boards

Each board directory is named:
<board-name>__<board-id>
Inside the board directory:
  • board.json is the normalized board metadata
  • members/ contains one JSON file per board member
  • labels/ contains one JSON file per board label
  • lists/ contains one directory per list

Lists

Each list directory is named:
<list-name>__<list-id>
Each list directory contains:
  • list.json — normalized list metadata with fields such as list_id, list_name, board_id, closed, pos
  • cards/ contains one directory per card

Cards

Each card directory is named:
<card-name>__<card-id>
Each card directory contains:
  • card.json — normalized card metadata with command-aligned fields such as card_id, board_id, list_id, member_ids, label_ids, due, url
  • comments.jsonl — normalized comment stream ordered by created_at
comments.jsonl is a Mirage representation chosen for shell-friendly workflows. It is not a native Trello file format.

Members

Each member file is named:
<full-name>__<member-id>.json
Member JSON includes command-aligned identifiers such as member_id and username so the value can be reused directly in commands like trello-card-assign.

Labels

Each label file is named:
<label-name>__<label-id>.json
Label JSON includes label_id, label_name, color, and board_id.

Cache

Uses IndexCacheStore (same as other resources).

Example

See examples/trello/trello.py for the full working example.
# List workspaces
ls /trello/workspaces/

# Read workspace metadata
cat /trello/workspaces/engineering__abc123/workspace.json

# List boards
ls /trello/workspaces/engineering__abc123/boards/

# Read board metadata
cat /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/board.json

# List lists
ls /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/

# Read a card
cat /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/backlog__lst_001/cards/fix-login__crd_001/card.json

# Read card comments
cat /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/backlog__lst_001/cards/fix-login__crd_001/comments.jsonl

# Extract card ID with jq
cat /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/backlog__lst_001/cards/fix-login__crd_001/card.json \
  | jq '.card_id'

# Read last 5 comments
tail -n 5 /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/backlog__lst_001/cards/fix-login__crd_001/comments.jsonl

# List members
ls /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/members/

# List labels
ls /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/labels/

# Tree view
tree -L 2 /trello/workspaces/

Finding IDs

IDs are embedded in directory and file names after __:
# Workspace ID -- embedded in directory name
ls /trello/workspaces/
# -> engineering__abc123   <- workspace_id = abc123

# Board ID -- embedded in board directory name
ls /trello/workspaces/engineering__abc123/boards/
# -> roadmap__brd_001   <- board_id = brd_001

# List ID -- embedded in list directory name
ls /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/
# -> backlog__lst_001   <- list_id = lst_001

# Card ID -- embedded in card directory name
ls /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/backlog__lst_001/cards/
# -> fix-login__crd_001   <- card_id = crd_001

# Member ID -- embedded in member file name
ls /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/members/
# -> alice__mem_001.json   <- member_id = mem_001

# Label ID -- embedded in label file name
ls /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/labels/
# -> bug__lbl_001.json   <- label_id = lbl_001

# Use stat for structured metadata
stat /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/backlog__lst_001/cards/fix-login__crd_001/card.json

# Extract fields with jq
cat /trello/workspaces/engineering__abc123/boards/roadmap__brd_001/lists/backlog__lst_001/cards/fix-login__crd_001/card.json \
  | jq '{card_id, board_id, list_id, member_ids, label_ids}'

Shell Commands

Standard commands available on the mounted Trello tree:
CommandNotes
lsList workspaces, boards, lists, cards
catRead .json metadata or .jsonl comments
head / tailFirst/last N lines
grep / rgPattern search (file or directory level)
jqQuery JSON fields
wcLine/word/byte counts
statFile metadata (name, size, type)
findRecursive search with -name, -maxdepth
treeDirectory tree view
basenameExtract file name from path
dirnameExtract directory from path
realpathResolve path to absolute form

Resource-Specific Commands

trello-card-create

Create a new card. Description can be passed via --desc, --desc_file, or stdin.
trello-card-create --list_id LST123 --name "Fix login"
trello-card-create --list_id LST123 --name "Fix login" --desc "Details here"
cat brief.md | trello-card-create --list_id LST123 --name "Agent bug"
OptionRequiredDescription
--list_idyesTrello list ID
--nameyesCard name
--descnoInline description text
--desc_filenoPath to file containing description

trello-card-update

Update an existing card. Description can be passed via --desc, --desc_file, or stdin.
trello-card-update --card_id CRD123 --name "Updated title"
trello-card-update --card_id CRD123 --desc "New description"
trello-card-update --card_id CRD123 --closed true
OptionRequiredDescription
--card_idyesTrello card ID
--namenoNew card name
--descnoInline description text
--desc_filenoPath to file containing description
--duenoDue date
--closednoArchive card (true/false)

trello-card-move

Move a card to a different list.
trello-card-move --card_id CRD123 --list_id LST999
OptionRequiredDescription
--card_idyesTrello card ID
--list_idyesTrello list ID

trello-card-assign

Assign a member to a card.
trello-card-assign --card_id CRD123 --member_id MEM001
OptionRequiredDescription
--card_idyesTrello card ID
--member_idyesTrello member ID

trello-card-comment-add

Add a comment to a card. Text can be passed via --text, --text_file, or stdin.
trello-card-comment-add --card_id CRD123 --text "Looks good"
cat note.md | trello-card-comment-add --card_id CRD123
OptionRequiredDescription
--card_idyesTrello card ID
--text*Inline comment text
--text_file*Path to file containing text
* One of --text, --text_file, or stdin is required.

trello-card-comment-update

Update an existing comment. Text can be passed via --text, --text_file, or stdin.
trello-card-comment-update --comment_id CMT001 --card_id CRD123 --text "Updated text"
OptionRequiredDescription
--comment_idyesTrello comment ID
--card_idyesTrello card ID
--text*Inline comment text
--text_file*Path to file containing text
* One of --text, --text_file, or stdin is required.

trello-card-label-add

Add a label to a card.
trello-card-label-add --card_id CRD123 --label_id LBL001
OptionRequiredDescription
--card_idyesTrello card ID
--label_idyesTrello label ID

trello-card-label-remove

Remove a label from a card.
trello-card-label-remove --card_id CRD123 --label_id LBL001
OptionRequiredDescription
--card_idyesTrello card ID
--label_idyesTrello label ID