Skip to content

TUI

Launch the full-screen dashboard:

Terminal window
keyledger

KeyLedger TUI demo

The interface is split into a sidebar (left, always visible) and a main panel (right). The sidebar lists all providers with their live key counts. Press tab to move focus between them.

Switch views with the number keys or action shortcuts. These keys work from any view, including Providers and Settings.

KeyView
1Keys
2Health
3Diff
4Snapshots
pProviders
gSettings

The default view. Shows a table of all keys across every enabled provider.

Columns: Key ID · Name · WorkSpace · Created · Last Used · Owner · Status · Risk

Keyboard:

KeyAction
/ kMove up
/ jMove down
← →Switch to WorkSpaces tab / back to Keys tab
/Open filter bar
escClear filter
oCycle sort: Created → Last Used → Name → Risk
sSave snapshot to database

The active sort column is underlined in purple in the table header. Sorting by Risk puts critical keys first.

The bottom third of the screen shows a detail pane for the selected key with full metadata and risk reasons.

Press to switch to the WorkSpaces tab inside the Keys view. This shows a collapsible provider → workspace/project tree with per-scope key counts and risk breakdown. The key table at the bottom updates to show only keys in the selected scope.

KeyAction
/ kMove up
/ jMove down
enter / lExpand provider
hCollapse provider
Switch back to Keys tab

Multiple terms are ANDed together separated by spaces.

ExpressionMatches
fooSubstring in ID, name, scope, or status
name:prodName contains “prod”
id:abcKey ID contains “abc”
scope:stagingScope contains “staging”
status:activeExact status match
risk:criticalRisk score — critical, warning, or ok
age:>90Keys older than 90 days
idle:>30Keys idle for more than 30 days
idle:neverKeys that have never been used
owner:aliceOwner name or email contains “alice”
provider:awsFilter by provider

Example — find all active OpenAI keys unused for more than 30 days:

provider:openai status:active idle:>30

Shows keys grouped by risk level: Critical first, then Warning, then OK (hidden by default).

KeyAction
/ kMove up
/ jMove down
oToggle visibility of OK keys
sSave snapshot to database
escGo back to Keys view

A risk distribution bar at the bottom shows the percentage breakdown. The selected key’s full detail and risk reasons appear in the pane below.

Compares the most recent database snapshot against the current live inventory. Shows added, removed, and changed keys.

KeyAction
/ kMove up
/ jMove down
oOpen a saved snapshot for comparison
enterShow detail for selected change
escGo back to Keys view

Manage all saved snapshots. Press 4 to open.

KeyAction
/ kMove up
/ jMove down
dDelete selected snapshot (confirmation popup)
xExport snapshot to JSON file
enterDiff selected snapshot against live inventory
escGo back to Keys view

Deleting a snapshot shows a centered confirmation dialog — press y or enter to confirm, n or esc to cancel.

Configure providers: enable/disable, set credentials, and for session-based providers (Mistral), run the interactive login flow.

The provider list shows each provider’s credential status as set (green) or missing (red). For AWS, credentials are considered set when either sso_creds alone, or both access_key_id and secret_access_key, are present.

KeyAction
/ kNavigate providers
/ jNavigate providers
enterOpen provider detail
spaceToggle enabled/disabled (list view)
dDelete stored credential (detail view, shows confirmation popup)
tRun login flow (session-based providers)
escGo back

Credentials are stored in an AES-256-GCM encrypted SQLite database. You will be prompted to set a password on first use and enter it to unlock on each session.

Edit thresholds, snapshot directory, timeout, and parallelism. Changes are saved immediately to the database.

KeyAction
rRefresh all providers
?Toggle help overlay
tabSwitch focus: sidebar ↔ main panel
escGo back / close dialog
qQuit
ctrl+cQuit immediately