Dashboard
Running banco with no subcommand opens a full-screen, read-only dashboard for the current
project.
banco
Press q or Ctrl+C to exit.
Layout
━━━━━━━━━━━━━ Status: 2026-01-15 09:30:00 (3d ago) · ok · 1.2 MB
┃ banco ┃ Providers: local, github
━━━━━━━━━━━━━
┌ local ──────────────┬──────────────────┬──────────────┐
│ notes (2) │ tasks (4) │ bookmarks (1)│
│ My first note │ backlog (2) │ Rust docs │
│ Meeting 2026-01 │ Fix login │ │
│ │ Add tests │ │
│ │ doing (1) │ │
│ │ Review PR │ │
└─────────────────────┴──────────────────┴──────────────┘
Header
The top row shows:
| Field | Source |
|---|---|
| Status | Most recent sync timestamp with relative age, config check result, and total project folder size |
| Providers | Enabled providers from .banco/config.yml, always starting with local |
Provider sections
Each provider with at least one non-empty module gets a box. Modules with zero items are hidden. Each visible module is a column:
- notes / bookmarks — header with item count, then up to 5 most recent names
- repos — like notes/bookmarks, but each repo also shows its current git branch and
status, e.g.
my-repo (main) *↟2(see Repo status indicators) - tasks — header with total count, then items grouped by status with up to 5 items per group; task number prefixes are stripped from displayed names
Repo status indicators
Repos render as name (branch) flags, where the flags annotate the git working copy:
| Marker | Meaning |
|---|---|
(branch) | Current branch. Omitted for a detached HEAD or a directory git can’t read |
* | The working copy has uncommitted or untracked changes |
↟N | N local branches are not merged into the current branch |
A clean repo on its default branch shows just name (main) with no flags. The same branch,
dirtiness, and unmerged-branch information is available in banco context JSON
output and in banco tidy repo findings.
If the terminal is too narrow to show item details usefully (less than 16 characters per column), the columns collapse to headers-only — counts remain visible.
The focused provider’s box is drawn in orange. The focused module’s column header is also orange.
Collapsing providers
Press v to collapse the focused provider. A collapsed provider is replaced by a single
summary bar showing its name and per-module item counts, freeing the vertical space for the
expanded providers. Press v again on it to expand it back.
│ ▸ github tasks (4) · repos (2) │
This is a per-project view preference: it is remembered per project and persists across
restarts. It is stored outside the repository in $XDG_STATE_HOME/banco/state.yml (falling
back to ~/.local/state/banco/state.yml), not in .banco/config.yml, so it never appears in
diffs and never leaks between users.
Keyboard shortcuts
| Key | Action |
|---|---|
? | Toggle shortcuts overlay |
c | Open the config editor |
d | Open check panel |
Esc | Close overlay |
j / k | Next / previous provider |
q | Quit |
v | Collapse / expand the focused provider |
Ctrl+C | Quit |
Ctrl+S | Sync, then reload the dashboard with the freshly synced items |
Tab | Next module (overflows to first module of next provider) |
Shift+Tab | Previous module (underflows to last module of previous provider) |
Space | Browse all items in the focused module |
Press ? at any time to show the shortcuts panel as an overlay over the dashboard.
Item browser
Pressing Space on a focused module opens a full-screen list of all items in that module.
┌ local: tasks (12 items) ────────────────────────────────┐
│ filter: _ │
├──────────────────────────────────────────────────────────┤
│ backlog │
│ Fix login bug │
│ Add tests │
│ doing │
│ Review PR │
└──────────────────────────────────────────────────────────┘
Esc/q close ↑↓/Tab navigate type to filter Enter edit
Filtering
Type any characters to fuzzy-filter items. Label/group headers (e.g. status names) are always shown for groups that have at least one matching item, and hidden when all their items are filtered out.
Navigation
| Key | Action |
|---|---|
↑ / ↓ | Previous / next item (wraps around) |
Tab / Shift+Tab | Next / previous item (wraps around) |
Editing
Pressing Enter opens the selected item in $EDITOR (falls back to vi). The dashboard
suspends while the editor runs and resumes when it exits.
Editing is supported for all modules that map to files on disk:
localprovider:notes,tasks- Remote providers (
jira,github,gitlab):tasks
Check panel
Pressing d opens a compact overlay summarising the output of banco check.
┌ check ──────────────────────────────┐
│ │
│ 2 issues found: │
│ │
│ Extraneous directories │
│ ✗ ./archive │
│ │
│ Extraneous module paths │
│ ✗ ./notes/local/scratch.txt │
│ │
│ Esc close │
└─────────────────────────────────────┘
When there are no issues the panel shows a single green confirmation line:
┌ check ──────────────┐
│ │
│ ✓ No issues found │
│ │
│ Esc close │
└─────────────────────┘
The panel is sized to fit its content and centered on the terminal. It is drawn as an overlay on top of the dashboard — the underlying view is not redrawn until the panel is closed.
Press Esc or q to close.
Config editor
Pressing c opens an editor for .banco/config.yml as a master-detail view. The master list
holds a General row (project-wide settings) followed by one row per configured provider.
Providers that are disabled show ✗ off, and providers with validation problems show a ⚠
issue count in red.
┌ config ───────────────────────────────────┐
│ │
│ General │
│ local │
│ github (gh-work) │
│ gitlab ✗ off │
│ jira ⚠ 1 │
│ │
│ ↑↓ move Enter open a add x delete … │
└───────────────────────────────────────────┘
| Key | Action |
|---|---|
↑ / ↓ | Move between rows |
Enter | Open the selected row’s detail view |
a | Add a provider (runs the same interactive flow as banco provider add) |
x / Del | Remove the selected provider from the config (after confirmation) |
Esc / q | Close the editor |
Removing a provider only deletes its entry from .banco/config.yml — synced files already on
disk are left in place. Use banco tidy afterwards to review what is now orphaned.
The built-in local provider cannot be removed, because an absent local entry means “use the
defaults” (every module enabled) — deleting it would reset its configuration rather than turn it
off. To switch local off instead, open its detail view and toggle enabled, or disable
individual modules; both are saved to the config.
Detail views
Opening General edits the project-wide browse block (the command and arguments used to
open URLs). Opening a provider shows a schema-driven form:
┌ github (gh-work) ─────────────────────────┐
│ │
│ alias gh-work │
│ enabled [x] │
│ module tasks [x] │
│ module repos [x] │
│ api_key $GH_TOKEN │
│ host (unset) │
│ projects [2 items] │
│ browse cmd (none) │
│ │
│ ⚠ 0 issues │
└───────────────────────────────────────────┘
Each field is edited in place with Enter:
- alias, string parameters, browse cmd — open a single-line text editor. Clearing the value unsets it (string parameters are removed from the config entirely).
- enabled and module rows — toggle on/off. Toggling a module off adds it to the
provider’s
disabled_modules. - list parameters (e.g.
projects) and browse args — open a list editor whereaadds an entry anddremoves the selected one.
Required parameters that are unset are shown in red, and a live issue count at the bottom
mirrors banco check. Stored values are shown raw — a $GH_TOKEN reference is
displayed as $GH_TOKEN, not its expanded value.
Every change is saved to .banco/config.yml immediately. When you close the editor, the
dashboard rebuilds so any newly enabled or disabled providers and modules are reflected at
once.
Note: saving rewrites
config.ymlthrough the YAML serializer, so hand-written comments and key ordering are not preserved. Edit the file directly if you need to keep those.