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