trello-tasker
v0.3.2
Published
A full-screen terminal UI for Trello — focus on today's cards, comment, edit, move, and create, all from the keyboard.
Maintainers
Readme
trello-tasker
A full-screen terminal UI for Trello, built with Ink. Pull every card from every board into one place, focus on what's due today, and comment / edit / move / create cards without leaving the keyboard.
╭─ trello-tasker · You ──────────────────────────────────────────────────────╮
│ VIEWS │ Today's Focus (3) │
│ · ★ Today (#today) 3 │ ❯ ◉ Fix login bug ▪▪ Work Doing ◷ May28 │
│ ◉ Assigned to me 5 │ ◉ Review PR #42 ▪ Work Todo ◷ 14:00 │
│ ≡ All cards │ ─ description ───────────────────────────────────── │
│ BOARDS │ The login flow breaks when the session cookie … │
│ · All boards │ ─ comments ─────────────────────────────────────── │
│ Work 4 │ @you looking into this now │
╰────────────────────────┴─────────────────────────────────────────────────────╯
focus · all boards [tab] pane [j/k] move [t] focus [c] comment [q] quitFeatures
- One view of everything — all boards, lists, cards, and members are pulled locally, then filtered client-side (no per-action round-trips for navigation).
- Custom views —
Today's Focus(label-driven),Assigned to me, andAll cards. - See what others are doing — filter by any member.
- Grouped, collapsible views — a single board groups cards by list; the All cards view groups across boards as board → list. Cards keep their Trello priority order (
pos); boards and lists are collapsible (z/Z) and the collapsed state is remembered across restarts. (Focus / Mine across boards stay a flat list sorted by due date.) - Edit in place — toggle the focus label, mark a card done (
d, per-board Done list), assign board members, manage checklists, add comments, edit descriptions (multi-line editor), move and reorder cards, and create cards. - Point and click — click a view, board, or card to select it (mouse on by default;
--no-mouseto keep native text selection). - Always fresh — the dashboard re-syncs with Trello in the background (every 30 s by default), so changes made on trello.com, on mobile, or by teammates show up on their own.
rstill forces an immediate reload. - MCP server —
trello-tasker mcpserves the full Trello toolset over stdio, so AI agents (Claude Code, Claude Desktop, …) can read and write your boards. See MCP server. - Themes — six built-in color themes (
default,dracula,nord,gruvbox,solarized,mono), switchable live withT.
Install
Requires Node.js ≥ 18.
# from a clone of this repo
npm install
npm run build
npm install -g . # installs the `trello-tasker` binary globallyOr run without installing globally:
npm run build && node dist/cli.jsTo put it on another machine, either publish to npm (see below) or copy a tarball:
npm pack # produces trello-tasker-x.y.z.tgz
# on the other machine:
npm install -g ./trello-tasker-x.y.z.tgzAuthenticate
trello-tasker loginIt walks you through two steps:
- Create a Power-Up at https://trello.com/power-ups/admin and copy its API key.
- Open the authorization URL it prints, click Allow, and paste the token.
Credentials are stored at ~/.config/trello-tasker/config.json (mode 600). You can also supply them via the TRELLO_API_KEY / TRELLO_TOKEN environment variables. Repeat login on each computer.
Usage
trello-tasker # launch the dashboard
trello-tasker --board Work # open focused on a board
trello-tasker config --focus-label priority # change the focus label
trello-tasker config --refresh 60 # background-sync every 60 s (0 = off)
trello-tasker whoami # show the authenticated user
trello-tasker mcp # serve the Trello tools over MCP/stdio
trello-tasker logout # remove stored credentialsKeys
| Key | Action |
|-----|--------|
| tab / shift+tab | move between panes (views · boards · cards) |
| j / k or ↓ / ↑ | move selection |
| click | select a view, board, or card; click a list/board header to collapse or expand it |
| 1 / 2 / 3 | Today / Assigned to me / All cards |
| f | filter by member |
| t | toggle the focus label on the selected card |
| d | move the card to its board's Done list (see below) |
| D | set which list is the Done list for the board |
| a | assign / unassign board members |
| l | view / edit checklists (toggle items, add items, new list, delete) |
| c | add a comment |
| e | edit the description (multi-line; Ctrl+D save, Esc cancel) |
| m | move the card to another list (also clears the focus label) |
| J / K | reorder the card down / up within its list (board view) |
| n | create a new card (tab to add a description, Ctrl+D to save) |
| z / Z | collapse/expand the selected list / all lists |
| T | change color theme (live preview) |
| r | refresh from Trello |
| ? | help · q quit |
Marking cards done
Each board can have a designated Done list. Press d on a card to move it
there in one keystroke (this also clears the focus label, so it drops out of
Today's Focus). The first time you press d on a board, you're prompted to
choose which list is "Done"; the choice is remembered per board. Press D any
time to change it. The Done list is flagged with a ✓done marker in the card
view.
Mouse
Clicking is on by default — click a view or board in the sidebar, or a card in
the list, to select it. If you'd rather keep your terminal's native text
selection (mouse reporting intercepts it), disable it with --no-mouse or
trello-tasker config --no-mouse.
Clicking needs a terminal that supports xterm mouse reporting. Most do —
iTerm2, Terminal.app, VS Code, Alacritty, kitty, WezTerm, and Windows
Terminal (PowerShell or WSL). The one place it won't work is the legacy
Windows console (the old standalone conhost window); use Windows Terminal
there. Either way, every action also has a key binding, so the keyboard works
everywhere.
Configuration
~/.config/trello-tasker/config.json:
| Field | Meaning | Default |
|-------|---------|---------|
| apiKey, token | Trello credentials | — |
| focusLabel | label name that drives Today's Focus | today |
| defaultBoardId | board to open on first | — |
| proxy | HTTP(S) proxy URL for hosts without direct egress | — |
| theme | color theme: default, dracula, nord, gruvbox, solarized, mono | default |
| refreshSeconds | background sync interval in seconds (0 disables) | 30 |
| doneLists | per-board Done list ({ "<boardId>": "<listId>" }); set in-app with D | — |
| mouse | enable mouse clicks (--no-mouse to disable) | true |
Press T in the app to switch themes with live preview, or set one with trello-tasker config --theme dracula.
Behind a proxy
On a host with no direct internet egress (e.g. a corporate VPC), point it at your proxy — Node's fetch ignores HTTP(S)_PROXY on its own, so set it explicitly:
export HTTPS_PROXY=http://proxy.corp:8080 # honored automatically, or…
trello-tasker config --proxy http://proxy.corp:8080 # persist it in configIf the proxy intercepts TLS with a private CA, also export NODE_EXTRA_CA_CERTS=/path/to/corp-ca.pem.
Collapsed-list state lives separately in ~/.config/trello-tasker/state.json. Config paths can be overridden with TRELLO_TASKER_CONFIG and TRELLO_TASKER_STATE.
MCP server
trello-tasker mcp speaks the Model Context Protocol over stdio and exposes the full Trello surface the TUI uses — 26 tools covering boards, lists, cards, members, labels, comments, and checklists:
| Kind | Tools |
|------|-------|
| Read | whoami, list_boards, list_lists, list_all_lists, list_cards, search_list_cards, list_board_members, list_labels, get_card_comments, get_card_actions, get_card_checklists |
| Write | create_card, update_card, move_card, set_card_position, add_comment, add_member_to_card, remove_member_from_card, add_label_to_card, remove_label_from_card, create_label |
| Checklists | create_checklist, delete_checklist, add_check_item, delete_check_item, set_check_item_state |
It reuses the same credentials as the TUI (trello-tasker login, or the TRELLO_API_KEY / TRELLO_TOKEN environment variables), so there is no extra setup.
Add it to an mcp.json (Claude Code project .mcp.json, Cursor, etc.):
{
"mcpServers": {
"trello": {
"command": "trello-tasker",
"args": ["mcp"]
}
}
}If it isn't installed globally, point at the built bundle instead:
{
"mcpServers": {
"trello": {
"command": "node",
"args": ["/absolute/path/to/trello_tasker/dist/cli.js", "mcp"]
}
}
}With the Claude Code CLI it's one line:
claude mcp add trello -- trello-tasker mcpWhile an agent edits your boards through MCP, the running TUI picks the changes up on its next background sync.
Develop
npm run dev # run from source (tsx)
npm run typecheck # tsc --noEmit
npm run smoke # headless render of the dashboard with mock data
npm run smoke:mcp # MCP server round-trip against the mock client
npm run mcp # run the MCP server from source (tsx)
npm run build # bundle to dist/ (tsup)Publish (optional)
npm login
npm publish # runs the build via prepublishOnly
# then on any machine:
npm install -g trello-taskerLicense
MIT
