A terminal user interface (TUI) for Azure DevOps Boards.
- Work items — Browse, search and filter by sprint, state, assigned, area, tags; sort by ID / Type / State.
- Quick search — Instantly jump to any work item by ID using Ctrl+F.
- Hierarchical view — PBIs / Bugs with expandable child tasks.
- CRUD — Create, edit, delete PBIs, Bugs and child tasks via modal forms.
- Assignments — Assign or unassign work items to team members using a searchable list.
- Comments — Add, edit, delete comments (supports @mentions).
- Work item info — Quickly copy work item ID or URL to clipboard via info modal.
- Integration helpers — Create a git branch from a work item (branch-name helper).
- Detail view — Fullscreen view showing metadata, description, acceptance criteria, tags and comments.
- Keyboard-driven UX — Modals for search/assign/branch/change-state/parent-selection; Vim-like navigation (j/k/g/G); panel switching and contextual help.
- Cross-platform — Works on Linux, macOS and Windows.
go install github.com/charlintosh/lazyado@latestThen run with:
lazyadoIf you prefer to build from source:
go build -o lazyado . sudo mv lazyado /usr/local/bin/Create a config file at ~/.config/lazyado/config.yaml:
# Azure DevOps connection organization: "my-organization" project: "my-project" team: "my-team" # Authentication (or use AZURE_DEVOPS_PAT env variable) pat: "your-personal-access-token" # UI settings theme: "default" # Default filters at startup defaults: sprint: "current" state: "all" assigned: "me"| Variable | Description |
|---|---|
AZURE_DEVOPS_PAT | Personal Access Token (recommended) |
AZURE_DEVOPS_ORG | Organization (overrides config) |
AZURE_DEVOPS_PROJECT | Project (overrides config) |
AZURE_DEVOPS_TEAM | Team (overrides config) |
Your Personal Access Token needs these scopes:
Work Items (Read)- Read work itemsProject and Team (Read)- List sprints/iterations
These shortcuts reflect the canonical internal/keys/keymap.go bindings used by the application.
| Key | Description |
|---|---|
1 | Panel 1 / Sort by ID |
2 | Panel 2 / Sort by Type |
3 | Panel 3 / Sort by State |
4 | Panel 4 |
5 | Panel 5 |
6 | Panel 6 |
7 | Panel 7 |
Tab | Switch to next panel |
Shift+Tab | Switch to previous panel |
? | Show/hide help |
Ctrl+r | Reload data |
q / Ctrl+c | Quit |
Note: keys 1, 2, 3 are also used for sorting in some contexts (see Sort section).
| Key | Description |
|---|---|
j / ↓ | Move down |
k / ↑ | Move up |
h / ← | Left / collapse |
l / → | Right / expand |
g | Go to first item |
G | Go to last item |
| Key | Description |
|---|---|
enter | Select / Open |
v | View fullscreen details |
/ | Search in filter panels |
Ctrl+f | Quick search by work item ID |
s | Change work item state |
n | Create new parent item (PBI/Bug) |
t | Create new child task (on PBI) |
e | Edit work item |
d | Delete work item |
c | Add comment (with @mentions) |
b | Create git branch |
a | Assign to user |
i | Show work item info (copy URL/ID) |
| Key | Description |
|---|---|
esc | Back / Close |
ctrl+s | Save / Submit in modals |
y / Y | Confirm |
left / right | Modal-only arrow navigation |
| Key | Description |
|---|---|
1 | Sort by ID (contextual) |
2 | Sort by Type (contextual) |
3 | Sort by State (contextual) |
If a key has multiple meanings, the active context determines the action (panel vs list sort).
| Key | Description |
|---|---|
Tab | Switch input field |
Ctrl+S | Save/Submit form in modals |
| Key | Description |
|---|---|
e | Edit selected comment |
d | Delete selected comment |
c | Add comment (from Work Items view) |
| Key | Description |
|---|---|
@ | Trigger user suggestions |
↑ / ↓ | Navigate suggestions |
Enter / Tab | Select user from suggestions |
Ctrl+S | Submit comment |
Esc | Cancel / Close suggestions |
| Key | Description |
|---|---|
Esc / q | Back to main view |
c | Add comment |
j / k | Scroll (description, comments) |
The detail view displays:
- Work item metadata (type, state, ID, dates, etc.)
- Parent item (if any)
- Description
- Acceptance criteria (if present)
- Tags
- Comments with author and timestamp
This repository includes a Taskfile.yml with convenient tasks for building, running, and debugging the app. Use the task CLI (https://github.com/go-task/task) to run them.
Examples:
# Build release binary task build # Run in dev mode task dev # Build with debug flags (runtime debug log) task debug # Install to PATH (requires sudo) task installSee Taskfile.yml for details.
Enable debug logging with the -debug flag when running the binary. On Linux the debug output is written to a temporary file (for example /tmp/lazyado-debug.log):
lazyado -debugUse this when reporting issues or investigating runtime behaviour.
- Bubble Tea - TUI framework
- Bubbles - UI components
- Lip Gloss - Styling
- Viper - Configuration
This project is a fork of shcizo/devops-tui. Thanks to the original author(s) for their work and inspiration.
MIT