██╗ █████╗ ██████╗ ██████╗ █████╗ ███████╗██╗ ██╗ ██║ ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██║ ██║ ██║ ███████║██████╔╝██║ ██║███████║███████╗███████║ ██║ ██╔══██║██╔══██╗██║ ██║██╔══██║╚════██║██╔══██║ ███████╗██║ ██║██████╔╝██████╔╝██║ ██║███████║██║ ██║ ╚══════╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
labdash is a terminal dashboard for GitLab. It shows the merge requests, pipelines, jobs, and to-dos from every project and group you have access to, in one window. It opens on the work that needs you, so there is nothing to set up first.
ember palette. Every status carries a glyph, a colour and a word, so the screen still reads with colour switched off.Every open merge request in a group and its subgroups, in one table: approvals, head pipeline, diff size, labels, unresolved threads, and the reason it cannot merge. Approve, merge, comment, and check out a branch from the row.
A group's CI in one table. Status, ref, duration, queued time, coverage, and failure reason across every project beneath a group. Retry, cancel, and watch a pipeline until it finishes.
A failed pipeline expands into its failed jobs and their last meaningful log lines. One key opens the full trace, scrolled to the first error, with search, folding, live follow, and colour intact.
GitLab's To-Do list as a view of its own. Filter it, jump to the target, mark one done or all of them, and snooze what can wait. The count sits in the view switcher.
Walk your real group tree, narrow the table with a typed filter bar that completes from your own instance, and pin the result as a tab that is still there tomorrow.
A private CA, client certificates, a proxy, a subfolder install, custom headers, and a read_api token. All of it per instance, and read-only is a supported mode rather than a broken one.
Home opens on the merge requests waiting for your review, the ones handed back to you, and your red pipelines. Everything else is three keys away.
b browse → walk your real group tree
platform ▸ ingest ▸ …
f filter → state:opened draft:false
label:backend
completes from your instance
P pin → it is a tab, and it is
still there tomorrowBrowse shows your actual group tree. GitLab returns it in one request and ranks it by the groups you work in most, so your working set is at the top the first time you open the application.
Filter is typed, not a search box. GitLab exposes real filter arguments with real enums, so labdash completes label names, usernames, branches and milestones from your own instance and refuses a value the instance would reject.
Pin turns the current scope and filter into a named tab beside Home. Reorder it, rename it, remove it.