A beautiful, real-time Text User Interface (TUI) visualizer for the bd (beads) issue tracker.
- Kanban Board - Classic 4-column view (Open, In Progress, Blocked, Closed)
- Tree View - Hierarchical parent-child relationships with interactive navigation
- Dependency Graph - ASCII art visualization of issue dependencies
- Statistics Dashboard - Comprehensive analytics with visual bar charts
- Real-time Updates - File watching with automatic refresh
- Search & Filter - Full-text search across title, description, and ID
- Custom Themes - 5 built-in color schemes (Default, Ocean, Forest, Sunset, Monochrome)
- Responsive Layout - Adapts to terminal size with smart column hiding
- Vim-style Navigation - hjkl keys supported alongside arrow keys
- Create Issues - Add new issues directly from the TUI
- Edit Issues - Modify any field (title, description, priority, status, assignee, labels)
- Export/Copy - Export issues in Markdown, JSON, or plain text format
- Desktop Notifications - Native OS notifications with custom icons for status changes
- Per-column Pagination - Independent scroll positions for each status column
- Detail Panel - View full issue details including all dependencies
- Blocked Status Detection - Automatically moves issues with blockers to "Blocked" column
- Keyboard-first - Every action accessible via keyboard shortcuts
- Bun runtime (required)
- bd (beads) issue tracker
- A
.beads/directory withbeads.dbin your project
The easiest way to install on macOS:
brew tap assimelha/tap
brew install bduiTo upgrade to the latest version:
brew upgrade bduiDownload the latest release for your platform:
- macOS (ARM64):
bdui-macos-arm64 - macOS (x64):
bdui-macos-x64 - Linux (x64):
bdui-linux-x64 - Windows (x64):
bdui-windows-x64.exe
Make it executable (Unix systems):
chmod +x bdui-macos-arm64
./bdui-macos-arm64# Clone the repository
git clone <repository-url>
cd bdui
# Install dependencies
bun install
# Run in development mode
bun run dev
# Or build single binary for your platform
bun run build
./bdui# Build for macOS (both ARM64 and x64)
bun run build:macos
# Build for Linux x64
bun run build:linux
# Build for Windows x64
bun run build:windows
# Build for all platforms
bun run build:allBinaries will be created in the dist/ directory (~50-60 MB each, includes Bun runtime).
Navigate to a directory containing a .beads/ folder and run:
bduiOr from the source directory:
bun run devThe app will automatically discover the .beads/ directory by walking up the directory tree (like git).
β/βork/j- Move up/down (select issue)β/βorh/l- Move left/right (change column in Kanban view)EnterorSpace- Toggle detail panel
1- Kanban board view (default)2- Tree view (hierarchical)3- Dependency graph4- Statistics dashboard
N(Shift+N) - Create new issuee- Edit selected issuex- Export/copy selected issuet- Change theme
/- Open search (searches title, description, ID)f- Open filter panel (filter by assignee, tags, priority, status)c- Clear all filters and searchESC- Close search/filter/form panels
r- Refresh data from databasen- Toggle notifications?- Show helpqorCtrl+C- Quit
The main view shows issues organized in 4 columns:
- Open - New or ready-to-work issues
- In Progress - Currently being worked on
- Blocked - Issues waiting on dependencies
- Closed - Completed issues
Features:
- Color-coded priorities (P0-P4)
- Type indicators (epic, feature, bug, task, chore)
- Label tags
- Per-column pagination and selection
- Responsive layout (adapts to terminal size)
Shows hierarchical parent-child relationships:
- Navigate with β/β or k/j
- Press Enter/Space to toggle details
- Press
eto edit selected issue - Visual tree structure with connection lines
- Depth-aware indentation
Visualizes issue dependencies:
- Issues organized by dependency levels
- Shows blocking relationships
- Navigate with β/β or k/j
- Color-coded by type and status
- Displays parent-child and blocking relationships
Comprehensive analytics:
- Status Distribution - Visual bar chart of issue statuses
- Priority Breakdown - Distribution across P0-P4
- Issue Type Distribution - Epic, feature, bug, task, chore counts
- Key Metrics - Completion rate, blocked rate, dependency count
- Top Assignees - Most active team members
- Top Labels - Most used labels
BD TUI supports native desktop notifications for important events:
-
Task Completed β - When an issue status changes to "closed"
- Green checkmark icon
- System sound (macOS)
- Shows issue ID and priority
-
Task Blocked π« - When an issue becomes blocked
- Red prohibition icon
- Silent notification
- Shows number of blocking issues
Custom icons are located in assets/icons/:
completed.png- Green circle with white checkmark (512x512)blocked.png- Red circle with prohibition symbol (512x512)
Platform support:
- macOS - Full support with custom icons in Notification Center
- Linux - Freedesktop.org notification spec
- Windows - Toast notifications
Toggle notifications with the n key. Current state is shown in the footer (π ON / π OFF).
bun run test:notificationsPress N (Shift+N) to open the create issue form:
- Tab/Shift+Tab to navigate between fields
- Fill in: title, description, priority (P0-P4), type, assignee, labels
- Press Enter to submit
- ESC to cancel
Select any issue and press e to open the edit form:
- All fields pre-populated with current values
- Tab/Shift+Tab to navigate
- Use β/β to change priority and status
- Press Enter to save changes
- ESC to cancel
Changes are immediately written to the bd database and reflected in the UI.
Press x on any selected issue to open the export dialog:
- Markdown - Formatted markdown with headers and lists
- JSON - Complete issue data in JSON format
- Plain Text - Simple text format with clear structure
- Copy to Clipboard - Copy formatted issue to system clipboard
- Export to File - Save to
{issue-id}.{extension}in current directory
Press Enter to execute. Works on macOS, Linux, and Windows.
BD TUI includes 5 built-in color schemes. Press t to open the theme selector:
- Default - Classic blue/cyan theme with high contrast
- Ocean - Blue and cyan tones for a calm, aquatic feel
- Forest - Green-focused theme inspired by nature
- Sunset - Warm magenta and yellow tones
- Monochrome - Clean grayscale theme for distraction-free work
Use β/β or k/j to browse themes. Each theme shows a live color preview. Press Enter to apply.
- Full-text search across title, description, and issue ID
- Type to search incrementally
- ESC to close
- Assignee - Filter by assigned person
- Tags - Filter by labels (multi-select)
- Priority - Filter by P0-P4
- Status - Filter by open/in_progress/blocked/closed
- Tab to cycle between filter types
- Space/Enter to toggle selections
- ESC to close
Removes all active search and filter criteria.
- Wide (>160 cols): All 4 columns + detail panel
- Medium (80-160 cols): All 4 columns
- Narrow (40-80 cols): 2 columns
- Very narrow (<40 cols): 1 column
- Width: 80 columns (recommended: 120+)
- Height: 24 rows (recommended: 30+)
- True color support recommended but not required
Terminal dimensions are shown in the header (e.g., "120x30").
A test project with sample issues is included:
cd /tmp/bdui-test
bun run /path/to/bdui/src/index.tsxThe test project includes:
- 11 diverse issues (varied priorities, types, statuses)
- Multiple assignees (alice, bob, charlie, diana)
- Parent-child relationships (epic with children)
- Blocking dependencies
- Various labels and metadata
See /tmp/bdui-test/README.md for a complete feature walkthrough.
# Test notifications
bun run test:notifications
# Run in development mode
bun run dev
# Test with your own bd project
cd /path/to/your/project
bun run /path/to/bdui/src/index.tsx- Runtime: Bun (native SQLite, faster than Node.js)
- UI Framework: Ink (React for CLIs)
- State Management: Zustand
- Database: SQLite (direct reads from bd's database via
bun:sqlite) - Notifications: node-notifier (cross-platform)
- Database Reading - Direct SQLite queries to
beads.db - File Watching - Debounced
fs.watchmonitoring with 100ms debounce - State Management - Zustand store with normalized data structure
- Real-time Updates - Pub/sub pattern for database changes
- Notifications - Status change detection with OS notifications
bdui/
βββ src/
β βββ components/ # React/Ink components
β β βββ App.tsx # Main app with keyboard handling
β β βββ Board.tsx # View router
β β βββ KanbanView/ # 4-column Kanban board
β β βββ TreeView.tsx # Hierarchical tree view
β β βββ DependencyGraph.tsx
β β βββ StatsView.tsx
β β βββ CreateIssueForm.tsx
β β βββ EditIssueForm.tsx
β β βββ ExportDialog.tsx
β β βββ ThemeSelector.tsx
β β βββ ...
β βββ bd/ # bd integration
β β βββ parser.ts # SQLite database reading
β β βββ watcher.ts # File watching
β β βββ commands.ts # bd CLI integration
β βββ state/ # State management
β β βββ store.ts # Zustand store
β βββ themes/ # Theme definitions
β β βββ themes.ts
β βββ utils/ # Utilities
β β βββ notifications.ts
β β βββ export.ts
β βββ types.ts # TypeScript types
β βββ index.tsx # Entry point
βββ assets/
β βββ icons/ # Notification icons
β βββ completed.png
β βββ blocked.png
β βββ README.md
βββ CLAUDE.md # Development documentation
βββ package.json
βββ README.md # This file
Contributions are welcome! This project uses bd (beads) for issue tracking.
# Clone repository
git clone <repository-url>
cd bdui
# Install dependencies
bun install
# Run in development mode
bun run devSee CLAUDE.md for detailed architecture documentation and guidelines for:
- Adding new view modes
- Adding new filters
- Creating new components
- Modifying the data flow
MIT License - See LICENSE file for details
- bd (beads) - The issue tracker that powers this TUI
- Ink - React for CLIs
- Bun - Fast JavaScript runtime
- Zustand - State management
- node-notifier - Cross-platform notifications
For issues, questions, or contributions:
- Check the documentation in
CLAUDE.md - Review existing bd issues in this repository
- Create a new bd issue with detailed information
Made with β€οΈ for developers who love the command line
