Commands
Every command in the palette and the : line, with its default chord in each keymap profile.
Generated by zig build docs from src/commands/specs.zig — do not edit by hand. 1193 commands in 50 groups. A chord is the default for that keymap profile (editor.input_style); an empty cell means the command is reachable from the palette (ctrl+shift+p) and the : line only. effect is what the command can change — view, edit (a buffer), write (disk, git, the network, config) or exec (a process); a program asking mnml to run anything above view is asked about first.
| group | commands |
|---|---|
app |
7 |
view |
229 |
integrations |
46 |
editor |
67 |
project |
3 |
browser |
34 |
find |
19 |
search |
9 |
ai |
92 |
lsp |
38 |
buffer |
13 |
go |
14 |
picker |
3 |
vim |
5 |
git |
135 |
pr |
2 |
markdown |
1 |
term |
19 |
debug |
1 |
file |
28 |
perf |
5 |
misc |
1 |
files |
20 |
transfer |
1 |
toast |
5 |
tab |
21 |
harpoon |
12 |
clock |
4 |
sonos |
16 |
audio |
2 |
notes |
6 |
todos |
10 |
findings |
7 |
sessions |
59 |
test |
36 |
tools |
1 |
dap |
40 |
edit |
6 |
http |
119 |
mount |
2 |
workspace |
1 |
trusted |
1 |
terminal |
9 |
dock |
12 |
grep |
8 |
coverage |
1 |
script |
16 |
session |
3 |
zon |
2 |
help |
2 |
app
| id | title | effect | vim | standard |
|---|---|---|---|---|
app.check_updates |
Check GitHub for a newer mnml release now | exec | ||
app.choose_data_layout |
Choose data layout — Portable (mnml-data/) or Normal (~/.config/mnml/) | exec | ||
app.command_line |
Open the : command line (any focus, either keymap profile) |
exec | ctrl+; |
ctrl+; |
app.quit |
Quit mnml | exec | ctrl+q |
ctrl+q |
app.reset_to_defaults |
Reset mnml to factory defaults (backup + relaunch) | exec | ||
app.restart |
Restart mnml (rebuild + relaunch via run.sh) | exec | ||
app.startup_picker |
Startup picker — new file / open file / recent files / workspaces | exec |
view
| id | title | effect | vim | standard |
|---|---|---|---|---|
agents.new_from_pr |
Agents: + New session from a PR (Claude Agent SDK · multi-select + action) | exec | ||
agents.refresh |
Agents: rescan local Claude/Codex sessions | view | ||
bookmarks.open |
Bookmarks: open a site (env-grouped web bookmarks) | view | ||
cloud_agents.new_run |
Cloud agents: fire a new ECS run for a Jira ticket | exec | ||
cloud_agents.new_run_wizard |
Cloud agents: + New cloud run (Managed Agents · ECS) | view | ||
cloud_agents.refresh |
Cloud agents: rescan ECS runner rows | view | ||
coverage.chip_show_both |
Coverage chip: show Feature + Code | view | ||
coverage.chip_show_code |
Coverage chip: show Code (Istanbul) only | view | ||
coverage.chip_show_feature |
Coverage chip: show Feature only | view | ||
coverage.chip_show_ticker |
Coverage chip: ticker (auto-cycle F ↔ C) | view | ||
files.open |
Files: open a file-browser pane (workspace root) | view | ||
files.open_split |
Files: open a second file-browser pane beside this one | view | ||
first_launch.show |
First-launch setup wizard (reopen) | view | ||
focus.cycle |
Cycle focus (tree ⇄ editor) | view | f6 |
f6 |
integrations.open_as_split |
Integrations: open a mounted integration BESIDE the active pane (integrations.open_as = split) | view | ||
integrations.open_as_tab |
Integrations: open a mounted integration as another tab in the active leaf (integrations.open_as = tab) | view | ||
integrations.show_in_dev |
Integrations: show In-Development tab (author view) | view | ||
integrations.show_installed |
Integrations: show Installed tab | view | ||
integrations.show_marketplace |
Integrations: show Marketplace tab | view | ||
integrations.toggle_dev_tab |
Integrations: toggle the In-Development tab's visibility | view | ||
integrations.toggle_tab |
Integrations: cycle tab (Installed / Marketplace / In-Dev) | view | ||
jobs.show |
Jobs: the background jobs — running, and the last fifty finished (the statusline chip's click) | view | space j |
ctrl+k j, space j |
keys.doctor |
Keyboard doctor (which modifier chords reach mnml?) | view | ||
layout.delete |
Layout: delete a named layout… (pick it, then confirm) | write | space W d |
space W d |
layout.load |
Layout: load a named layout (replaces this tab page) — the layouts picker; :layout load <name> by name |
view | ||
layout.merge_to_tabs |
Layout: merge splits into tabs (splits→tabs) | view | ||
layout.pick |
Layout: pick a saved layout to load… (Shift+Delete deletes the row) | view | space W l |
space W l |
layout.save |
Layout: save this tab page as a named layout… | write | space W s |
space W s |
layout.spread_to_splits |
Layout: spread tabs into splits (tabs→splits) | view | ||
markdown.edit_raw |
Markdown: swap the active preview for the raw editor | view | ||
markdown.link_check |
Markdown: check all link targets (broken ones → Quickfix) | write | ||
markdown.preview |
Markdown: open rendered preview (split) | view | space m |
space m |
menu.copy_id |
Menus: copy the focused row's command id | view | ||
menu.glyph_audit |
Menus: write + open the glyph audit (icons and spacing) | view | ||
menu.hide_row |
Menus: hide the focused + menu row (settings restore it) | view | ||
menu.pin_row |
Menus: pin the focused + menu row to the top | view | ||
menu.unpin_row |
Menus: unpin the focused + menu row | view | ||
messages.clear |
Messages: clear the toast history | view | ||
messages.copy_all |
Messages: copy the whole history | view | ||
messages.copy_last |
Messages: copy the last message | view | ||
messages.mark_read |
Messages: mark every message read (the bell goes quiet) | view | ||
messages.show |
Messages: recent toasts (searchable log) | view | ctrl+k ctrl+shift+n |
|
script.show_dev |
Scripts: show the Dev tab (author view) | view | ||
script.show_installed |
Scripts: show the Installed tab | view | ||
script.show_marketplace |
Scripts: show the Marketplace tab | view | ||
script.toggle_tab |
Scripts: cycle tab (Installed / Marketplace / Dev) | view | ||
setup.install_to_path |
Setup: install mnml to PATH (so mnml . works anywhere) |
write | ||
theme.auto_system |
Theme: match system (light/dark) + keep in sync | view | ||
theme.auto_system_off |
Theme: stop matching system (freeze on current) | view | ||
theme.pick |
Pick theme… | view | space t t |
ctrl+k ctrl+t, space t t |
theme.reset |
Theme: reset to config default | view | ||
theme.toggle |
Theme: toggle (light ↔ dark) | view | ctrl+k t |
|
tree.collapse_all |
Collapse all folders in the file tree | view | ||
tree.expand_all |
Expand all folders in the file tree | view | ||
tree.open_in_split |
Open the selected tree file in a new split | view | ||
tree.open_selected |
Open the selected tree row (Enter) | view | ||
tree.refresh |
Refresh file tree | view | ||
tree.toggle_collapse_all |
Toggle: collapse-all / expand-all | view | ||
tree.toggle_ignored |
Toggle git-ignored files in the file tree and Ctrl+P | view | ||
view.about |
About mnml (version + workspace metadata) | view | ||
view.activity_agents |
Activity: open the sessions table (was the Agents rail) | view | ||
view.activity_bar_cycle |
Cycle activity bar visibility (always → auto-hide → hidden) | view | ||
view.activity_cloud_agents |
Activity: show Sessions (was the Cloud agents rail) | view | ||
view.activity_debug |
Activity: show Debug | view | ctrl+shift+d |
ctrl+shift+d |
view.activity_explorer |
Activity: show Explorer | view | ||
view.activity_findings |
Activity: show Findings (.mnml/findings/*.md tester + review reports) | view | ||
view.activity_git |
Activity: open git graph | view | ctrl+shift+g |
ctrl+shift+g |
view.activity_http |
Activity: show HTTP (.http files + recent requests) | view | ||
view.activity_integrations |
Activity: show Integrations | view | ctrl+shift+x |
ctrl+shift+x |
view.activity_notes |
Activity: show Notes (workspace scratch notes) | view | ||
view.activity_scripts |
Activity: show Scripts (what init.lua registered, with file:line) | view | ||
view.activity_search |
Activity: show Search | view | ||
view.activity_sessions |
Activity: show Sessions (vertical session tabs) | view | ctrl+k a |
|
view.activity_todos |
Activity: show TODOs (TODO/FIXME/XXX/HACK/REVIEW markers) | view | ||
view.add_workspace |
Add folder to workspace (runtime — not persisted) | write | ||
view.ai_layout_grid |
AI layout: grid (auto-tile splits, max 8) | view | ||
view.ai_layout_tabs |
AI layout: tabs (append to active leaf) | view | ||
view.api_traffic |
API traffic: who is spending each API's budget — every process's draws on the shared bucket, by program | view | space i a |
ctrl+k i a, space i a |
view.api_traffic_throttled |
API traffic: open on the service the last 429 toast named | view | ||
view.api_traffic_window_day |
API traffic: show the last 24 hours | view | ||
view.api_traffic_window_hour |
API traffic: show the last hour | view | ||
view.api_traffic_window_week |
API traffic: show the last 7 days | view | ||
view.cheatsheet |
Open the cheatsheet pane (every chord → command) | view | space c h, space ? |
ctrl+k ctrl+s, space ? |
view.claude_mark_custom |
Claude icon: bake a custom SVG… | view | ||
view.close_others |
Close all other panes (keep active; respects unsaved guards) | view | space s o |
ctrl+k w, space s o |
view.close_split |
Close split / buffer | view | space s c |
space s c |
view.cluster_mode_auto |
Top-bar cluster mode: Auto | view | ||
view.cluster_mode_compact |
Top-bar cluster mode: Compact | view | ||
view.cluster_mode_expanded |
Top-bar cluster mode: Expanded | view | ||
view.cmdline_history |
Open cmdline-history pane (vim q:) | view | ||
view.commands_reference |
Commands reference — every mnml command, grouped, in a scratch buffer | view | ||
view.context_menu_at_focus |
Open the context menu for the focused element (Shift+F10) | view | shift+f10 |
shift+f10 |
view.cursor_to_bottom |
Scroll cursor to viewport bottom (vim zb) |
view | ||
view.cursor_to_center |
Scroll cursor to viewport center (vim zz) |
view | ||
view.cursor_to_top |
Scroll cursor to viewport top (vim zt) |
view | ||
view.discovery |
Click-discovery overlay (highlight what's clickable) | view | ||
view.dock_cycle_mode |
Launcher dock: cycle visibility (always → auto-hide → hidden) | view | ||
view.dock_item_move_first |
Launcher dock: move the focused item to the start (Alt+Home in the dock) | view | ||
view.dock_item_move_last |
Launcher dock: move the focused item to the end (Alt+End in the dock) | view | ||
view.dock_item_move_next |
Launcher dock: move the focused item one step towards the end (Alt+→ / Alt+↓ in the dock) | view | ||
view.dock_item_move_prev |
Launcher dock: move the focused item one step towards the start (Alt+← / Alt+↑ in the dock) | view | ||
view.dock_move |
Launcher dock: move to the next edge (bottom → left → right) | view | ||
view.dock_pin |
Launcher dock: pin it open for this session (unpin returns to ui.dock.mode) | view | ||
view.dock_toggle |
Launcher dock: show / hide the strip of integrations, terminals and pins | view | ||
view.dock_unpin_item |
Launcher dock: take the focused pinned command off the dock | view | ||
view.equalize_splits |
Equalize every split so all panes render at equal size (vim Ctrl+W =) |
view | ||
view.flip_sidebar_side |
Sidebar: move it to the other side (ui.sidebar_side) | view | ||
view.focus_bottom |
Focus the bottom split (vim Ctrl-W b) | view | ||
view.focus_dock |
Focus the launcher dock (vim Ctrl-W D; h/l or j/k walk, Enter runs, Esc leaves) |
view | ||
view.focus_down |
Focus split down | view | ctrl+j, space s j |
ctrl+k ctrl+down, space s j |
view.focus_left |
Focus split left | view | ctrl+h, space s h |
ctrl+k ctrl+left, space s h |
view.focus_next_split |
Focus next split | view | space s w, ctrl+w w |
ctrl+alt+shift+right, space s w |
view.focus_pane |
Focus the active pane (reverse of view.focus_tree) | view | ||
view.focus_prev_split |
Focus previous split (the next-split walk backwards) | view | space s W, ctrl+w W |
ctrl+alt+shift+left, space s W |
view.focus_previous |
Focus the previously focused window (vim Ctrl-W p) | view | ||
view.focus_right |
Focus split right | view | ctrl+l, space s l |
ctrl+k ctrl+right, space s l |
view.focus_right_panel |
Focus the right column (opening it when closed) | view | ||
view.focus_tab_1 |
Focus tab 1 | view | ctrl+1 |
ctrl+1 |
view.focus_tab_2 |
Focus tab 2 | view | ctrl+2 |
ctrl+2 |
view.focus_tab_3 |
Focus tab 3 | view | ctrl+3 |
ctrl+3 |
view.focus_tab_4 |
Focus tab 4 | view | ctrl+4 |
ctrl+4 |
view.focus_tab_5 |
Focus tab 5 | view | ctrl+5 |
ctrl+5 |
view.focus_tab_6 |
Focus tab 6 | view | ctrl+6 |
ctrl+6 |
view.focus_tab_7 |
Focus tab 7 | view | ctrl+7 |
ctrl+7 |
view.focus_tab_8 |
Focus tab 8 | view | ctrl+8 |
ctrl+8 |
view.focus_tab_last |
Focus last tab (VS Code Ctrl+9 convention) | view | ctrl+9 |
ctrl+9 |
view.focus_top |
Focus the top split (vim Ctrl-W t) | view | ||
view.focus_tree |
Focus the file tree (opening it when closed) | view | space e, ctrl+shift+e, ctrl+0 |
ctrl+shift+e, ctrl+0 |
view.focus_up |
Focus split up | view | ctrl+k, space s k |
ctrl+k ctrl+up, space s k |
view.fullscreen |
Toggle full screen (hide tree + bufferline + statusline) | view | space t f |
ctrl+k z, space t f |
view.git_commit_focus |
Activity: focus the Git section's commit textarea | view | ||
view.help |
Keybindings & help — help overlay (auto-generated keymap reference) | view | f1 |
ctrl+k ctrl+r, f1 |
view.host_active_in_bottom_panel |
View: dock active pane into bottom panel | view | ||
view.hscroll_left |
Scroll viewport one column left (vim zh) |
view | ||
view.hscroll_left_half |
Scroll viewport a half-screen left (vim zH) |
view | ||
view.hscroll_right |
Scroll viewport one column right (vim zl) |
view | ||
view.hscroll_right_half |
Scroll viewport a half-screen right (vim zL) |
view | ||
view.image_open |
View: open image file (PNG/JPG/GIF/WebP/BMP) | view | ||
view.keep_tab |
Keep this tab (stop the next glance taking the preview over) | view | ctrl+k enter |
|
view.manage_workspaces |
Manage workspaces… (rename / reorder / group) | view | ||
view.maximize_height |
Maximize active split height (vim Ctrl+W _) |
view | ||
view.maximize_width |
Maximize active split width (vim Ctrl+W |) |
view | ||
view.menu_bar_cycle |
Cycle menu bar visibility (always → auto-hide → hidden) | view | ||
view.menu_bar_open |
Menu bar: open the File menu (the words follow under ui.menu_bar = auto) |
view | alt+f10 |
|
view.menu_bar_pin |
Menu bar: pin the revealed bar — keep the words up for this session (again to unpin) | view | ||
view.move_cursor_view_bottom |
Move cursor to bottom of viewport (vim L) |
view | ||
view.move_cursor_view_middle |
Move cursor to middle of viewport (vim M) |
view | ||
view.move_cursor_view_top |
Move cursor to top of viewport (vim H) |
view | ||
view.move_section_left |
Move the focused activity section to the left side (vim Ctrl+W H in a section; :sidebar left) |
view | space s H |
space s H |
view.move_section_right |
Move the focused activity section to the right side (vim Ctrl+W L in a section; :sidebar right) |
view | space s L |
space s L |
view.move_split_down |
Move active split to the bottom of its parent (vim Ctrl+W J) |
view | ctrl+k down |
|
view.move_split_left |
Move active split to the left of its parent (vim Ctrl+W H) |
view | ctrl+k left |
|
view.move_split_right |
Move active split to the right of its parent (vim Ctrl+W L) |
view | ctrl+k right |
|
view.move_split_up |
Move active split to the top of its parent (vim Ctrl+W K) |
view | ctrl+k up |
|
view.move_to_new_tab |
Move active split to a new tab page (vim Ctrl+W T) |
view | ||
view.only |
Close every other split, keep this window (vim :only / Ctrl+W o; buffers stay open) |
view | ||
view.open_default_workspace |
Open the configured default workspace | view | ||
view.rail_hide_section |
Activity bar: hide the marked section from the bar (its command and keys still open it) | view | ||
view.rail_show_on_dock |
Activity bar: move the marked section to the launcher dock (hidden here, its command pinned there) | view | ||
view.rail_show_sections |
Activity bar: show every hidden section again | view | ||
view.redraw |
Force a full redraw (clears the terminal) | view | ||
view.remove_workspace |
Remove an extra workspace (runtime) | write | ||
view.reset_layout |
Reset view to default (leave full screen and zoom, show the tree, menu bar, statusline and bufferline, tree width to default) | view | space t 0 |
space t 0 |
view.reset_tree_width |
Reset file tree width to the config default | view | ||
view.reveal_active |
Reveal active file in OS Finder / Explorer | view | ctrl+k r |
|
view.reveal_in_tree |
Reveal active file in the file tree | view | ||
view.right_panel_close_tab |
Right column: close it | view | ctrl+alt+w, space t x |
ctrl+alt+w, space t x |
view.right_panel_next_tab |
Right column: the next section on the right side | view | space t ] |
space t ] |
view.right_panel_prev_tab |
Right column: the previous section on the right side | view | space t [ |
space t [ |
view.rotate_splits |
Rotate the active split with its integration (vim Ctrl+W r) |
view | ||
view.scroll_buffer_down |
Scroll buffer one line down (vim Ctrl+E) |
view | ||
view.scroll_buffer_up |
Scroll buffer one line up (vim Ctrl+Y) |
view | ||
view.search_history |
Open the search-history pane; Enter searches forward (vim q/) | view | ||
view.search_history_backward |
Open the search-history pane; Enter searches backward (vim q?) | view | ||
view.set_tree_width |
Sidebar: set the width — cells, or a share of the window like 25% (prompt) | view | ||
view.settings |
Settings overlay (keyboard-driven schema editor) | view | ctrl+, |
ctrl+, |
view.settings_search |
Settings: search… (open the settings overlay with the filter focused) | view | ||
view.sidebar_mode_always |
Sidebar: always docked (ui.sidebar = always) | view | ||
view.sidebar_mode_auto |
Sidebar: auto-hide — the pointer at the column's screen edge reveals it over the editor (ui.sidebar = auto) | view | ||
view.sidebar_mode_hidden |
Sidebar: hidden — never on hover; a keyboard command still gives a one-shot overlay (ui.sidebar = hidden) | view | ||
view.sidebar_pin |
Sidebar: pin the revealed column — dock it for this session (again to unpin) | view | space E |
ctrl+k ctrl+b |
view.split_down |
Split editor down (stacked) | view | ctrl+shift+\, space s s |
ctrl+k ctrl+\, ctrl+shift+\, space s s |
view.split_goto_definition |
Split + jump to definition (vim Ctrl+W d) |
view | ctrl+k f12 |
|
view.split_grow_height |
Grow active split's height (vim Ctrl+W +) |
view | ||
view.split_grow_width |
Grow active split's width (vim Ctrl+W >) |
view | ||
view.split_new_scratch |
Split + open a fresh scratch buffer (vim Ctrl+W n) |
view | ||
view.split_open_file_under_cursor |
Split + open file under cursor (vim Ctrl+W f) |
view | ||
view.split_right |
Split editor right (side by side) | view | ctrl+\, space s v |
ctrl+\, space s v |
view.split_shrink_height |
Shrink active split's height (vim Ctrl+W -) |
view | ||
view.split_shrink_width |
Shrink active split's width (vim Ctrl+W <) |
view | ||
view.switch_workspace |
Switch workspace (primary ↔ extras) | view | ctrl+k ctrl+o |
|
view.tab_bar_ai_both |
Tab bar AI chips: show Claude + Codex | view | ||
view.tab_bar_ai_claude_only |
Tab bar AI chips: show Claude only | view | ||
view.tab_bar_ai_codex_only |
Tab bar AI chips: show Codex only | view | ||
view.tab_bar_ai_none |
Tab bar AI chips: hide (show none) | view | ||
view.terminal_glyph_custom |
Terminal icon: bake a custom SVG… | view | ||
view.terminal_glyph_ghostty |
Terminal icon: the Ghostty ghost (mnml's own mark) | view | ||
view.terminal_glyph_terminal |
Terminal icon: the plain codicon terminal | view | ||
view.toggle_auto_equalize_splits |
Auto-equalize splits on split / close (toggle) | view | ||
view.toggle_auto_md_preview |
Toggle auto-open markdown preview on file open | view | ||
view.toggle_bottom_panel |
Toggle the bottom panel | view | ctrl+shift+j |
ctrl+shift+j |
view.toggle_bracket_rainbow |
Toggle rainbow brackets (depth-cycling color on ()[]{}) | view | ||
view.toggle_breadcrumb |
Toggle the editor breadcrumb row (path above each pane) | view | ||
view.toggle_click_echo |
Toggle click echo (briefly underline what you clicked) | view | ||
view.toggle_color_column |
Toggle line-length color column (vim :set cc=80) | view | ||
view.toggle_hidden |
Toggle hidden files in focused tree section | view | space t h |
space t h |
view.toggle_hidden_all |
Toggle hidden files across every workspace section | view | space t H |
space t H |
view.toggle_highlight_trailing_ws |
Toggle trailing-whitespace highlight (red bg on trailing space/tab) | view | ||
view.toggle_highlight_word |
Toggle 'highlight other occurrences of word under cursor' | view | ||
view.toggle_hover_help |
Toggle the Ableton-style hover-help info box (bottom of left panel) | view | ||
view.toggle_hover_tooltip |
Toggle the popup hover tooltip (small popup near the cursor) | view | ||
view.toggle_integrations_section |
Toggle the integrations section in the rail (collapse/expand) | view | ||
view.toggle_line_numbers |
Toggle line-number gutter | view | space n, space t n |
space n, space t n |
view.toggle_picker_position |
Picker: toggle position (center ⇄ top) | view | ||
view.toggle_relative_numbers |
Toggle relative line numbers | view | space r n |
|
view.toggle_render_markdown |
Toggle inline-rendered markdown (render-markdown.nvim style) | view | ||
view.toggle_right_panel |
Toggle the right column (the sections on the right side) | view | ctrl+shift+b, space t r |
ctrl+alt+b, ctrl+shift+b, space t r |
view.toggle_scrollbar |
Toggle the editor scrollbar (right-edge thumb) | view | ||
view.toggle_sticky_context |
Toggle sticky scope context (treesitter-context-style header) | view | ||
view.toggle_todo_highlight |
Toggle TODO/FIXME/HACK/XXX keyword highlight | view | ||
view.toggle_tree |
Toggle left panel (file tree · Git · Integrations · Agents · HTTP · Findings) | view | ctrl+n, space t e |
ctrl+b, space t e |
view.toggle_tree_section |
Toggle workspace section (collapse/expand the file list) | view | ||
view.toggle_whitespace |
Toggle visible whitespace markers (· / →) | view | ||
view.toggle_workspace_dots |
Toggle workspace dots (● / ○ dots on workspace-root rows) | view | ||
view.toggle_wrap |
Toggle word wrap (vim :set wrap) | view | space t w |
alt+z, space t w |
view.toggle_zoom |
Zoom the split / restore | view | space s z, ctrl+w z |
ctrl+k ctrl+m |
view.welcome |
Welcome: show the start surface (workspaces, recent files, sessions, the chords to start with) | view | ||
view.workspace_menu |
Open workspace menu | view | ||
whichkey.leader |
Leader menu (which-key) | view | space w K, space |
ctrl+k, space |
integrations
| id | title | effect | vim | standard |
|---|---|---|---|---|
integrations.audit_glyphs |
Integrations: audit glyphs (report drift, no changes) | write | ||
integrations.audit_shadowed_binaries |
Integrations: audit + fix shadowed integration binaries (PATH order) | write | ||
integrations.bake_ai_glyphs |
Integrations: bake AI chip glyphs (Claude + Codex) into MnmlSymbols | write | ||
integrations.bake_all_glyphs |
Integrations: bake ALL mnml glyphs (AI + AWS + Dev) into MnmlSymbols | write | ||
integrations.bake_integration_glyphs |
Integrations: bake integration-shipped SVGs from ~/.config/mnml/glyphs/ into MnmlSymbols | write | ||
integrations.cancel_wait |
Integrations: stop the focused integration pane waiting out a rate-limit pause | write | ||
integrations.check_updates_now |
Integrations: check the Marketplace for updates now | write | ||
integrations.configure_picker |
Configure integration auth… (pick from installed) | write | ||
integrations.copy_id |
Integrations: copy an id to clipboard (picker) | write | ||
integrations.cycle_sort |
Integrations: cycle sort mode (active tab) | write | ||
integrations.dev_build |
Integrations: build the focused Dev folder (zig build, in a task pane) | write | ||
integrations.dev_install |
Integrations: install the focused Dev folder (build if needed, then --install) | write | ||
integrations.dev_rebuild |
Integrations: rebuild + reinstall the focused Dev folder | write | ||
integrations.diag |
Run diagnostics on an integration… (auth + config probe) | write | ||
integrations.dismiss_toml_notice |
Integrations: don't show the mnml 0.2 manifests notice again | write | ||
integrations.edit |
Integrations: edit a chip (picker) | write | ||
integrations.edit_codex_glyph |
Integrations: open glyph builder for Codex (F1E01) | write | ||
integrations.fire_auto_updates_now |
Integrations: fire auto-updates now (opt-in per config) | write | ||
integrations.glyph_builder |
Integrations: add custom glyph (SVG → font with live preview) | write | ||
integrations.icon_picker |
Integrations: browse Nerd Font glyphs (copies to clipboard) | write | ||
integrations.patch_nerd_font_svg |
Integrations: bake an SVG into your Nerd Font as a glyph | write | ||
integrations.pin_to_activity_bar |
Integrations: add the chip to the activity bar (a pinned launcher icon) | write | ||
integrations.pin_to_dock |
Integrations: pin the chip's command onto the launcher dock | write | ||
integrations.poll_now |
Integrations: poll every statusline values source now | write | ||
integrations.rebuild_focused |
Integrations: rebuild the focused integration from its folder | write | ||
integrations.rebuild_stale |
Integrations: rebuild every local integration built on an older SDK | write | ||
integrations.refresh |
Integrations: re-scan manifests in .mnml/integrations/ + ~/.config/mnml/integrations/ | write | ||
integrations.refresh_binary_cache |
Integrations: refresh installed-binary detection | write | ||
integrations.remove |
Integrations: remove a chip (picker) | write | ||
integrations.requests |
Integrations: requests — what every integration asked an API for, and what it cost | write | ||
integrations.retry_refresh |
Integrations: ask the focused integration pane to refresh | write | ||
integrations.show_details |
Integrations: open detail pane for the focused integration | write | space i d |
ctrl+k i d, space i d |
integrations.show_manifest |
Integrations: open a chip's manifest file (picker) | write | ||
integrations.toggle_dry_run |
Integrations: dry run on / off in the focused integration pane (nothing is sent) | write | ||
integrations.toggle_enabled |
Integrations: enable / disable a chip (picker) | write | space i E |
space i E |
integrations.toggle_palette_bar |
Integrations: show / hide the chip on the top bar | write | ||
integrations.unpin_from_activity_bar |
Integrations: remove the chip from the activity bar | write | ||
integrations.unpin_from_dock |
Integrations: take the chip's command off the launcher dock | write | ||
integrations.update |
Integrations: relink the binary — /bin at its current home | write | ||
integrations.update_from_marketplace |
Integrations: update to the newest release — the Marketplace's newer version | write | ||
launcher.add_local |
Launcher: add a local chip (glyph / label / :term |
write | ||
marketplace.add_source |
Marketplace: add a private source (a folder or owner/repo) | write | ||
marketplace.copy_id_focused |
Marketplace: copy id of right-clicked entry | write | ||
marketplace.install_focused |
Marketplace: install right-clicked entry | write | ||
marketplace.open_detail_focused |
Marketplace: open details for right-clicked entry | write | ||
marketplace.refresh |
Marketplace: refresh (fetch published apps + community launchers) | write |
editor
| id | title | effect | vim | standard |
|---|---|---|---|---|
editor.add_cursor_above |
Add cursor on the line above (VSCode Ctrl+Alt+Up) |
edit | ctrl+alt+up, ctrl+alt+k |
ctrl+alt+up, ctrl+alt+k |
editor.add_cursor_at_next_word |
Select word / add cursor at next occurrence (VSCode Ctrl+D) |
edit | ctrl+d |
|
editor.add_cursor_below |
Add cursor on the line below (VSCode Ctrl+Alt+Down) |
edit | ctrl+alt+down, ctrl+alt+j |
ctrl+alt+down, ctrl+alt+j |
editor.bracket_match |
Jump to matching bracket | edit | ctrl+] |
|
editor.char_info |
Toast char info: dec / hex / U+XXXX (vim ga) |
edit | ||
editor.char_utf8 |
Toast UTF-8 byte sequence of char under cursor (vim g8) |
edit | ||
editor.clear_extra_cursors |
Drop all extra cursors (keep the primary) | edit | ||
editor.close_fold |
Editor: close fold at cursor (zc) | edit | ||
editor.copy |
Copy (Ctrl+C) — selection or current line | edit | ||
editor.cut |
Cut (Ctrl+X) — selection or current line | edit | ||
editor.delete_line |
Delete the current line (VSCode Ctrl+Shift+K) |
edit | ctrl+shift+k |
ctrl+shift+k |
editor.file_info |
Toast file info: Ctrl+G) |
edit | ||
editor.file_stats |
File stats: lines / words / chars / bytes / cursor position (vim g Ctrl+G) |
edit | ||
editor.fold_all_brackets |
Fold every multi-line block — bracket pairs, Python / YAML suites, and do…end, element and section blocks (zM fallback) |
edit | ||
editor.fold_next |
Jump to next fold (zj) |
edit | ||
editor.fold_prev |
Jump to previous fold (zk) |
edit | ||
editor.fold_selection |
Fold the visual selection (zf in Visual) |
edit | ||
editor.format |
Format buffer (LSP if attached, else external formatter) | edit | ||
editor.format_external |
Format buffer with external formatter (prettier / rustfmt / gofmt / ruff / …) | exec | ||
editor.goto_line |
Go to line… (1-based) | edit | ctrl+g |
|
editor.highlight_this_file |
Highlighting: turn it on for this file (over editor.highlight_max_bytes) |
edit | ||
editor.highlight_toggle_file |
Highlighting: toggle it for this file only | edit | ||
editor.indent_line |
Indent the focused editor line (VSCode Ctrl+]) |
edit | ctrl+] |
|
editor.input_mode_menu |
Open mode menu (vim / standard) | edit | ||
editor.insert_alt_filename |
Insert alt-buffer path (vim insert Ctrl+R #) |
edit | ||
editor.insert_bigword_under_cursor |
Insert WORD under cursor (vim insert Ctrl+R Ctrl+A) |
edit | ||
editor.insert_current_filename |
Insert current buffer's path (vim insert Ctrl+R %) |
edit | ||
editor.insert_last_cmdline |
Insert last ex-command (vim insert Ctrl+R :) |
edit | ||
editor.insert_last_inserted |
Insert last inserted text (vim insert Ctrl+R .) |
edit | ||
editor.insert_last_search |
Insert last search query (vim insert Ctrl+R /) |
edit | ||
editor.insert_word_under_cursor |
Insert identifier under cursor (vim insert Ctrl+R Ctrl+W) |
edit | ||
editor.jump_next_edit |
Jump to next edit position (vim g,) |
edit | ||
editor.jump_prev_edit |
Jump to previous edit position (vim g;) |
edit | ctrl+k ctrl+q |
|
editor.keyword_complete |
Keyword completion: scan buffer for matches (vim insert Ctrl+N) |
edit | ||
editor.keyword_complete_back |
Keyword completion (backward, vim insert Ctrl+P) |
edit | ||
editor.lint_external |
Lint buffer with external linter (eslint / tsc / ruff / shellcheck / …) | exec | ||
editor.lsp_this_file |
LSP: start a server for this file (over editor.lsp_max_bytes) |
edit | ||
editor.method_next |
Jump to next method (vim ]m) |
edit | ||
editor.method_prev |
Jump to previous method (vim [m) |
edit | ||
editor.move_line_down |
Move current line / selection down (Alt+J / Alt+Down) | edit | alt+down, alt+j |
alt+down, alt+j |
editor.move_line_up |
Move current line / selection up (Alt+K / Alt+Up) | edit | alt+up, alt+k |
alt+up, alt+k |
editor.open_at_cursor |
Open path under cursor (supports :line:col) — palette / vim gf |
edit | ||
editor.open_fold |
Editor: open fold at cursor (zo) | edit | ||
editor.open_url_at_cursor |
Open URL under cursor in OS browser (vim gx) |
exec | ||
editor.outdent_line |
Outdent the focused editor line (VSCode Ctrl+[) |
edit | ctrl+[ |
|
editor.paste |
Paste (Ctrl+V) | edit | ||
editor.redo |
Redo (Ctrl+Shift+Z / Ctrl+Y) | edit | ctrl+shift+z |
ctrl+shift+z |
editor.reflow_paragraph |
Reflow current paragraph to text_width (vim gqq) |
edit | ||
editor.repeat_last_substitute |
Repeat last :s on current line (vim &) |
edit | ||
editor.repeat_last_substitute_all |
Repeat last :s on every line (vim g&) |
edit | ||
editor.section_next_end |
Jump to end of next section (vim ][) |
edit | ||
editor.section_next_start |
Jump to next section start (vim ]]) |
edit | ||
editor.section_prev_end |
Jump to end of previous section (vim []) |
edit | ||
editor.section_prev_start |
Jump to previous section start (vim [[) |
edit | ||
editor.select_all |
Select all (Ctrl+A) | edit | ||
editor.select_all_occurrences |
Select all occurrences of word at cursor (VSCode Ctrl+Shift+L) |
edit | ctrl+shift+l |
ctrl+f2, ctrl+shift+l |
editor.set_tab_width |
Editing: set the tab width (prompt) | edit | ||
editor.suspend_hint |
Toast: Ctrl+Z suspend not supported — use :q to quit | edit | ||
editor.toggle_auto_pair |
Toggle bracket / quote auto-pairing | edit | ||
editor.toggle_fold |
Toggle fold at cursor (vim za-ish; VS Code Ctrl+Shift+[) |
edit | ctrl+shift+[ |
ctrl+k ctrl+l, ctrl+shift+[ |
editor.toggle_indent_guides |
Toggle indent guides | edit | ||
editor.toggle_keymap |
Editing: toggle vim ⇄ standard keymap | edit | space t k |
space t k |
editor.toggle_line_comment |
Toggle line comment (NvChad <leader>/, VSCode Ctrl+/) |
edit | space / |
|
editor.undo |
Undo (Ctrl+Z) | edit | ||
editor.unfold_all |
Unfold every fold in the active buffer (vim zR-ish; VS Code Ctrl+Shift+]) |
edit | ctrl+shift+] |
ctrl+k ctrl+j, ctrl+shift+] |
editor.use_standard |
Editing: use standard (VSCode) keymap | edit | ||
editor.use_vim |
Editing: use vim keymap | edit |
project
| id | title | effect | vim | standard |
|---|---|---|---|---|
project.next_todo |
Jump to next TODO / FIXME / HACK / XXX (vim ]t) | view | ||
project.prev_todo |
Jump to previous TODO / FIXME / HACK / XXX (vim [t) | view | ||
project.todos |
Project: scan for TODO / FIXME / HACK / XXX comments | view |
browser
| id | title | effect | vim | standard |
|---|---|---|---|---|
browser.add_cookie |
Browser: add a cookie scoped to the current origin (a in cookies panel) | exec | ||
browser.add_storage |
Browser: add a Web Storage entry (a in storage panel) | exec | ||
browser.autocapture_toggle |
Browser: toggle auto-append network entries to captured log | exec | ||
browser.back |
Browser: navigate back (window.history.back) | exec | ||
browser.clear_snapshots |
Browser: clear all captured snapshots | exec | ||
browser.cookies |
Browser: toggle the cookies panel (K) — Network.getCookies | exec | ||
browser.copy_url |
Browser: copy current URL to clipboard | exec | ||
browser.delete_cookie |
Browser: delete the selected cookie (d in cookies panel) | exec | ||
browser.delete_storage |
Browser: delete the selected Web Storage entry (d in storage panel) | exec | ||
browser.device_picker |
Browser: device emulation picker (m) — mobile UA + viewport | exec | ||
browser.devtools |
Browser: open DevTools (chrome://inspect hint) | exec | ||
browser.diff_snapshot |
Browser: diff latest snapshot vs current state | exec | ||
browser.dock_toggle |
Browser: dock Chrome side-by-side (macOS) / restore | exec | ||
browser.dom |
Browser: open the DOM panel (selectable nodes, copy selector) | exec | ||
browser.edit_cookie |
Browser: edit the selected cookie's value (e in cookies panel) | exec | ||
browser.edit_storage |
Browser: edit the selected Web Storage entry (e in storage panel) | exec | ||
browser.forward |
Browser: navigate forward (window.history.forward) | exec | ||
browser.install_cft |
Browser: install Chrome for Testing via npx | exec | ||
browser.navigate |
Browser: navigate to a URL (prompt, seeded with current) | exec | ||
browser.network_throttle |
Browser: network throttle picker (Online/Offline/3G/WiFi) | exec | ||
browser.open |
Browser: open Chrome (CDP) — console / nav / eval | exec | space B |
space B |
browser.open_url |
Browser: open Chrome at a URL (prompt) | exec | ||
browser.perf |
Browser: toggle the performance panel (P) — timings + Core Web Vitals | exec | ||
browser.print_pdf |
Browser: print the page to PDF (p) → .mnml/screenshots/ | exec | ||
browser.reload |
Browser: reload the current page (Page.reload) | exec | ||
browser.screenshot |
Browser: screenshot the page → .mnml/screenshots/ | exec | ||
browser.screenshot_node |
Browser: screenshot the selected DOM node → .mnml/screenshots/ | exec | ||
browser.scroll_node_into_view |
Browser: scroll the selected DOM node into view | exec | ||
browser.snapshot |
Browser: snapshot state (URL + network requests) | exec | ||
browser.storage |
Browser: toggle the Web Storage panel (L) — localStorage + sessionStorage | exec | ||
browser.switch_tab |
Browser: switch to a popup / new tab the page opened (T) | exec | ||
browser.toggle_headless |
Toggle CDP headless launch (takes effect on next browser.open) | exec | ||
browser.url_history |
Browser: fuzzy pick a previously-visited URL (Ctrl+R) | exec | ||
browser.wipe_profile |
Browser: wipe Chrome's user-data-dir (next open starts fresh) | exec |
find
| id | title | effect | vim | standard |
|---|---|---|---|---|
find.clear |
Find: clear highlights | view | ||
find.clear_and_deselect |
Find: clear highlights + drop extra cursors | view | ||
find.find |
Find in buffer | view | space f z |
ctrl+f |
find.find_backward |
Find (reverse — vim ?) | view | ||
find.grep |
Find in files — grep workspace (rg / git grep) → results pane | view | space f w, ctrl+shift+f, space f g |
ctrl+shift+f, space f g |
find.grep_replace |
Replace in files — every grep hit across every file (active grep pane) | write | ctrl+shift+h |
|
find.live_grep |
Find in files — live grep with a preview column (picker) | view | ||
find.next |
Find: next match | view | f3 |
f3 |
find.prev |
Find: previous match | view | shift+f3 |
shift+f3 |
find.replace |
Find and replace in this buffer — the bar's Replace row (vim: every match of the active find) | edit | ctrl+h |
|
find.select_match_backward |
Select previous find match (vim gN) |
view | ||
find.select_match_forward |
Select next find match (vim gn) |
view | ||
find.selection_backward |
Find: selected text (backward) — vim visual # |
view | ||
find.selection_forward |
Find: selected text (forward) — vim visual * |
view | ||
find.toggle_regex |
Find: toggle regex mode (sticky) | view | alt+r |
alt+r |
find.word_backward |
Find: word under cursor (backward) — vim # |
view | ||
find.word_backward_partial |
Find: word under cursor, inside longer words too (backward) — vim g# |
view | ||
find.word_forward |
Find: word under cursor (forward) — vim * |
view | ||
find.word_forward_partial |
Find: word under cursor, inside longer words too (forward) — vim g* |
view |
search
| id | title | effect | vim | standard |
|---|---|---|---|---|
search.copy_line |
Search: copy the matched line | view | ||
search.copy_path |
Search: copy the hit's path:line | view | ||
search.open |
Search: open the hit under the cursor at its line (a file row folds) | view | ||
search.open_pane |
Search: open the query as a grep pane (replace, per-hit toggles) | view | ||
search.open_split |
Search: open the hit to the side | view | ||
search.refresh |
Search: run the section's query again | view | ||
search.toggle_case_sensitive |
Search: toggle case-sensitive (default: smart-case) | view | ||
search.toggle_regex |
Search: toggle regex (default: fixed-strings) | view | ||
search.toggle_whole_word |
Search: toggle whole-word matching | view |
ai
| id | title | effect | vim | standard |
|---|---|---|---|---|
ai.apply |
AI: apply suggested change | exec | ||
ai.apply_accept_all |
AI: accept every hunk of the proposal under review and apply it (Y in the review) | exec | ||
ai.ask |
AI: ask Claude a question | exec | space a a |
ctrl+alt+shift+l, space a a |
ai.cancel |
AI: cancel running job | exec | ||
ai.chat |
AI: Claude chat — prompt + file/selection context | exec | space a C |
space a C |
ai.chip_show_all_accounts |
AI (Claude) chip: cycle multi-account mode (off / compact / ticker) | exec | ||
ai.chip_show_all_compact |
AI (Claude) chip: compact all accounts (P40% · W62% · C12%) | exec | ||
ai.chip_show_all_off |
AI (Claude) chip: show active account only | exec | ||
ai.chip_show_all_ticker |
AI (Claude) chip: ticker — rotate accounts every 4s | exec | ||
ai.chip_show_both |
AI (Claude) chip: show both (session · weekly) | exec | ||
ai.chip_show_session |
AI (Claude) chip: show session % only | exec | ||
ai.chip_show_weekly |
AI (Claude) chip: show weekly % only | exec | ||
ai.chip_toggle_reset |
AI (Claude) chip: toggle reset countdown suffix (⟳) | exec | ||
ai.claude_add_account |
AI: add a Claude account to the usage meter | exec | ||
ai.claude_code |
AI: new Claude Code session | exec | space a c |
ctrl+alt+i, space a c |
ai.claude_code_focus |
AI: toggle the running Claude Code session — the one focused last, then back (start one if none) | exec | ||
ai.claude_code_new |
AI: open a NEW Claude Code session (multi-session) | exec | space a n, ctrl+shift+n |
space a n, ctrl+shift+n |
ai.claude_code_new_bottom |
AI: new Claude Code session in bottom half | exec | ||
ai.claude_code_new_left |
AI: new Claude Code session in left half | exec | ||
ai.claude_code_new_page |
AI: new Claude Code session on a new tab page | exec | ||
ai.claude_code_new_right |
AI: new Claude Code session in right half | exec | ||
ai.claude_code_new_tab |
AI: new Claude Code session in a new tab (beside the current tab, no split) | exec | ||
ai.claude_code_new_top |
AI: new Claude Code session in top half | exec | ||
ai.claude_code_new_x2 |
AI: open 2 new Claude Code sessions | exec | ||
ai.claude_code_new_x3 |
AI: open 3 new Claude Code sessions | exec | ||
ai.claude_code_new_x4 |
AI: open 4 new Claude Code sessions | exec | ||
ai.claude_code_new_x6 |
AI: open 6 new Claude Code sessions | exec | ||
ai.claude_code_new_x8 |
AI: open 8 new Claude Code sessions | exec | ||
ai.claude_reauth |
AI: re-auth a Claude account (claude login, filed under it) | exec | ||
ai.claude_remove_account |
AI: remove a Claude account from the usage meter | exec | ||
ai.claude_rename_account |
AI: rename Claude account (in-config) | exec | ||
ai.claude_usage |
AI: open Claude usage pane (session + weekly + per-model) | exec | ||
ai.codex |
AI: open Codex (focus the running session, or start one) | exec | space a x |
space a x |
ai.codex_new |
AI: open a NEW Codex session (multi-session) | exec | space a X |
space a X |
ai.codex_new_bottom |
AI: new Codex session in bottom half | exec | ||
ai.codex_new_left |
AI: new Codex session in left half | exec | ||
ai.codex_new_page |
AI: new Codex session on a new tab page | exec | ||
ai.codex_new_right |
AI: new Codex session in right half | exec | ||
ai.codex_new_tab |
AI: new Codex session in a new tab (beside the current tab, no split) | exec | ||
ai.codex_new_top |
AI: new Codex session in top half | exec | ||
ai.codex_usage |
AI: open Codex usage pane (tokens + sessions today) | exec | ||
ai.copilot_disable_here |
AI (Copilot): stop sending this workspace's files to Copilot | exec | ||
ai.copilot_enable_here |
AI (Copilot): allow this workspace's files to be sent to Copilot | exec | ||
ai.copilot_sign_in |
AI (Copilot): sign in to GitHub (device code) | exec | ||
ai.copilot_sign_out |
AI (Copilot): sign out of GitHub | exec | ||
ai.copilot_status |
AI (Copilot): what is shared right now, and why or why not | exec | ||
ai.dashboard |
AI: open the sessions table (was the Claude Agents dashboard) | exec | space a d |
space a d |
ai.dashboard.export_markdown |
AI dashboard: export the focused session's transcript as markdown | exec | ||
ai.dashboard.kill |
AI dashboard: kill the focused session (with confirm) | exec | ||
ai.dashboard.open_transcript |
AI dashboard: open the focused session's transcript | exec | ||
ai.dashboard.resume_in_pty |
AI dashboard: resume the focused session in a new mnml pty pane | exec | ||
ai.dashboard.yank_cwd |
AI dashboard: yank the focused session's cwd | exec | ||
ai.dashboard.yank_session_id |
AI dashboard: yank the focused session's id | exec | ||
ai.explain |
AI: explain the selection (or this file) | exec | space a e |
space a e |
ai.explain_diff |
AI: explain the staged diff (or working-tree diff) — Claude walks through it | exec | ||
ai.fix |
AI: find & fix bugs in the selection (or this file) | exec | space a f |
space a f |
ai.focus_next_session |
Focus next session | exec | ctrl+alt+pagedown, ] a |
ctrl+alt+pagedown |
ai.focus_prev_session |
Focus previous session | exec | ctrl+alt+pageup, [ a |
ctrl+alt+pageup |
ai.link_claude_token |
AI: paste a Claude Code OAuth token for an account (advanced) | exec | ||
ai.new_session_worktree |
AI: open a NEW Claude Code session in a git worktree of its own (prompts for a branch name) | exec | ||
ai.promote |
AI: promote to interactive (claude --resume) | exec | ||
ai.reask |
AI: re-ask (fresh session) | exec | ||
ai.recompose_branch |
AI: draft rewritten commit messages for this branch (does NOT mutate history) | exec | ||
ai.refactor |
AI: refactor the selection (or this file) | exec | space a r |
space a r |
ai.refresh_usage |
AI: refresh usage meter (Claude + Codex) | exec | ||
ai.search_sessions |
Search sessions… (every transcript of this workspace) | exec | ||
ai.send_selection |
AI: point the Claude Code session you looked at last at this selection (or line) | exec | ||
ai.session_picker |
AI: pick from past Claude sessions for this workspace | exec | ||
ai.session_search |
AI: grep every Claude transcript for a substring | exec | ||
ai.session_view |
AI: mirror this Claude session's transcript (live) | exec | space a m |
space a m |
ai.setup_suggestions |
AI: pick inline-suggestion backend (Claude API / local) | exec | ||
ai.show_config |
AI: show current backend / model / tools | exec | ||
ai.show_last_response |
AI: show last Claude quota response (debug) | exec | ||
ai.spend_today |
AI: today's token + cost spend across all sessions (Claude + Codex) | exec | ||
ai.suggestion_stats |
AI: inline-suggestion accept rate | exec | ||
ai.toggle_backend |
AI: toggle backend (cli ↔ api / direct HTTP) | exec | space a b |
space a b |
ai.toggle_inline_suggestions |
AI: toggle inline ghost-text suggestions (Cursor-style) | exec | ||
ai.token_usage |
AI: token usage + cost estimate | exec | ||
ai.write_branch_name |
AI: suggest a branch name from a natural-language description | exec | ||
ai.write_pr_description |
AI: draft a PR description from this branch's commits + diff vs main | exec | ||
ai.write_tests |
AI: write tests for the selection (or this file) | exec | space a w |
space a w |
mixr.copy_track |
Mixr: copy the now-playing track title to clipboard | exec | ||
mixr.play_now |
Mixr: start a random Beatport chart from a favorited genre | exec | ||
mixr.set_preferred_mixr |
Music: prefer mixr (Beatport) | exec | ||
mixr.set_preferred_music |
Music: prefer Apple Music | exec | ||
mixr.set_preferred_spotify |
Music: prefer Spotify | exec | ||
mixr.show |
Mixr: open the TUI DJ in a Pty pane | exec | ||
mixr.show_auth_status |
Mixr: report Beatport auth status | exec | ||
mixr.show_browse |
Mixr: open browse view | exec | ||
mixr.show_history |
Mixr: open history view | exec | ||
mixr.show_log |
Mixr: open log view | exec | ||
mixr.show_queue |
Mixr: open queue view | exec |
lsp
| id | title | effect | vim | standard |
|---|---|---|---|---|
lsp.clear_highlights |
LSP: clear symbol highlights | view | ||
lsp.code_action |
LSP: code actions at cursor (→ picker) | edit | space c a, ctrl+., space l a |
ctrl+., space l a |
lsp.code_lens_run |
LSP: run the code lens above the cursor's line | exec | ||
lsp.completion |
LSP: complete at cursor (→ picker) | view | ctrl+space, space l c |
ctrl+space, space l c |
lsp.diagnostics |
LSP: diagnostics list (project problems) | view | space d s, ctrl+shift+m, space l e |
ctrl+shift+m, space l e |
lsp.diagnostics_filter |
LSP: cycle diagnostics severity filter (All ↔ Warnings ↔ Errors) | view | ||
lsp.fold_all |
LSP: fold all (server-suggested ranges; the editor's own blocks when the server has none) | view | ctrl+k ctrl+0 |
|
lsp.format |
LSP: format document | edit | space f m, ctrl+shift+i |
ctrl+shift+i |
lsp.format_selection |
LSP: format selection (range formatting) | edit | ctrl+k ctrl+f |
|
lsp.goto_declaration |
LSP: go to declaration | view | g D |
|
lsp.goto_definition |
LSP: go to definition | view | g d, f12, space l d |
f12, space l d |
lsp.goto_implementation |
LSP: go to implementation | view | ctrl+f12 |
|
lsp.goto_type_definition |
LSP: go to type definition | view | space D |
|
lsp.highlight_symbol |
LSP: highlight all usages of symbol at cursor | view | ||
lsp.hover |
LSP: hover (docs at cursor) | view | K, space l h |
ctrl+k ctrl+i, space l h |
lsp.incoming_calls |
LSP: incoming calls (who calls this) | view | shift+alt+h |
|
lsp.inlay_hints_toggle |
LSP: toggle inlay hints (type / parameter chips) | view | ||
lsp.next_diagnostic |
LSP: next diagnostic | view | ] d, space l n |
alt+f8, space l n |
lsp.organize_imports |
LSP: organize imports | edit | alt+shift+o |
alt+shift+o |
lsp.outgoing_calls |
LSP: outgoing calls (what this calls) | view | ||
lsp.peek_definition |
LSP: peek definition in a horizontal split below the current pane | view | ||
lsp.peek_definition_overlay |
LSP: peek definition as a floating overlay (cursor doesn't move; VS Code Alt+F12) | view | alt+f12 |
ctrl+shift+f10, alt+f12 |
lsp.prev_diagnostic |
LSP: previous diagnostic | view | [ d, space l p |
shift+alt+f8, space l p |
lsp.quick_fix |
LSP: quick fix (auto-apply first code action) | edit | alt+enter |
alt+enter |
lsp.references |
LSP: find references (→ picker) | view | g r, shift+f12, space l r |
shift+f12, space l r |
lsp.rename |
LSP: rename symbol (F2 in an editor; the tree's F2 renames the file) | edit | space r a, f2, space l R |
f2, space l R |
lsp.selection_expand |
LSP: expand selection to next semantic range | view | ||
lsp.selection_shrink |
LSP: shrink selection to previous semantic range | view | ||
lsp.signature_help |
LSP: signature help (param info popup at cursor) | view | ctrl+shift+space |
ctrl+shift+space |
lsp.signature_next |
LSP: next signature (overload) | view | ||
lsp.signature_prev |
LSP: previous signature (overload) | view | ||
lsp.status |
LSP: report the running servers (the statusline chip's click) | view | ||
lsp.subtypes |
LSP: subtypes of type at cursor | view | ||
lsp.supertypes |
LSP: supertypes of type at cursor | view | ||
lsp.symbols |
LSP: symbols in this file (→ picker) | view | ctrl+shift+o, space l s |
ctrl+shift+o, space l s |
lsp.workspace_symbols |
LSP: workspace symbols — search across the project | view | space l S |
space l S |
outline.show |
LSP: outline pane (symbols sidebar for this file) | view | space l o |
space l o |
qf.from_diagnostics |
Quickfix: every LSP diagnostic in the workspace | view |
buffer
| id | title | effect | vim | standard |
|---|---|---|---|---|
buffer.clear_mru |
Clear the buffer MRU (nav back/forward history) | edit | ||
buffer.close |
Close tab (close active buffer) | edit | space x, space q |
ctrl+w, space q |
buffer.close_others |
Close the other tabs of this split | edit | ||
buffer.close_right |
Close the tabs to the right of this one | edit | ||
buffer.last |
Switch to previously-active buffer (vim Ctrl+^) |
edit | ctrl+tab |
ctrl+tab |
buffer.next |
Next buffer (positional) | edit | tab, ctrl+pagedown, ctrl+alt+right, ] b |
ctrl+k ctrl+pagedown, ctrl+pagedown, ctrl+alt+right |
buffer.next_dirty |
Jump to next unsaved buffer | edit | ||
buffer.pin_toggle |
Pin / Unpin the active tab (sticks to front of strip) | edit | ctrl+k shift+enter |
|
buffer.prev |
Previous buffer (positional) | edit | shift+tab, ctrl+pageup, ctrl+alt+left, ctrl+shift+tab, [ b |
ctrl+k ctrl+pageup, ctrl+pageup, ctrl+alt+left, ctrl+shift+tab |
buffer.prev_dirty |
Jump to previous unsaved buffer | edit | ||
buffer.reopen |
Re-open the most-recently-closed buffer | edit | ctrl+shift+t |
ctrl+shift+t |
scratch.from_clipboard |
New scratch buffer from clipboard | edit | ||
scratch.new |
New scratch buffer (empty, no file) | edit | space b |
go
| id | title | effect | vim | standard |
|---|---|---|---|---|
nav.back |
Go back (previous cursor / file; in Browser pane: history.back) | view | ctrl+minus |
ctrl+alt+minus, ctrl+minus |
nav.forward |
Go forward (undo a nav.back; in Browser pane: history.forward) | view | ctrl+shift+minus, ctrl+underscore |
ctrl+shift+minus, ctrl+underscore |
nav.jump_toggle_prev |
Vim: toggle to previous jump position (` `) |
view | ||
palette |
Command palette | view | ctrl+shift+p, space p |
ctrl+shift+p, space p |
picker.buffers |
Switch buffer… | view | space f b |
ctrl+k ctrl+p, space f b |
picker.files |
Open file… | view | ctrl+p, space f f |
ctrl+o, ctrl+p, space f f |
picker.marks |
Pick a mark to jump to (local + global) | view | ||
picker.recent_commands |
Pick a recently-run command | view | ||
qf.close |
Quickfix: close the list (:cclose) |
view | ||
qf.first |
Quickfix: first entry (:cfirst) |
view | ||
qf.last |
Quickfix: last entry (:clast) |
view | ||
qf.next |
Quickfix: next entry — grep hit, test failure, diagnostic (:cnext) |
view | ||
qf.open |
Quickfix: open the list (:copen) |
view | ||
qf.prev |
Quickfix: previous entry (:cprev) |
view |
picker
| id | title | effect | vim | standard |
|---|---|---|---|---|
picker.recent |
Recent files | view | space f o, space f r |
ctrl+r, space f r |
picker.recent_items |
Recent tickets and pull requests | view | space f i |
ctrl+k ctrl+e |
picker.workspace_symbol |
Go to Symbol in Workspace (VS Code Ctrl+T) | view | ctrl+t |
vim
| id | title | effect | vim | standard |
|---|---|---|---|---|
vim.dot_repeat |
Vim: repeat last change (.) | edit | ||
vim.go_to_last_insert |
Vim: jump to last edit + enter Insert (gi) | edit | ||
vim.macro_replay |
Vim: replay last recorded macro (@) | edit | ||
vim.macro_toggle |
Vim: start / stop macro recording (q) | edit | ||
vim.replay_last_ex |
Vim: replay last :cmdline command (@:) | exec |
git
| id | title | effect | vim | standard |
|---|---|---|---|---|
git.ai_commit |
Git: write a commit message with Claude (from the staged diff) | write | space g m |
space g m |
git.ai_recompose |
Git: rewrite HEAD's message with Claude (--amend) | write | space g M |
space g M |
git.amend |
Git: amend HEAD with the staged changes (commit --amend --no-edit) | write | ||
git.amend_to |
Graph: amend the selected commit with the staged changes (fixup + autosquash) | write | ||
git.blame_toggle |
Git: toggle blame gutter | write | space g b |
ctrl+k b, space g b |
git.branch_menu |
Open branch menu | write | ||
git.branch_rail_toggle |
Git: show / hide the branch rail (branches · worktrees · open PRs) | write | ||
git.branch_rename |
Git: rename the selected / current branch… (branch -m) | write | ||
git.browse |
Git: open file at cursor on remote (GitHub / GitLab / Bitbucket) | write | ||
git.browse_commit |
Git: open the selected commit (or HEAD) on the remote | write | ||
git.browse_file |
Git: open the current file on the remote | write | ||
git.checkout |
Git: checkout a branch (local or remote) | write | space g o |
space g o |
git.checkout_commit |
Git: checkout the selected graph commit on no branch (detached HEAD; confirm) | write | ||
git.checkout_force |
Git: force checkout a branch, discarding the tree's changes (checkout -f; confirm) | write | ||
git.cherry_pick |
Git: cherry-pick the selected graph commit onto HEAD | write | ||
git.codex_commit |
Git: write a commit message with Codex (from the staged diff) | write | space g x |
space g x |
git.command_log |
Git: the command log — every git the worker ran, its cwd, exit, duration and first stderr line (newest first; y copies, Enter re-runs a read-only one) | write | ||
git.command_log_rerun |
Git: re-run the selected command-log entry (read-only commands only) | write | ||
git.commit |
Git: commit staged changes | write | space g c |
ctrl+k g c, space g c |
git.compare_base |
Graph: mark the selected commit as the compare base (W; again clears) | write | ||
git.conflict_ai |
Git: resolve the conflict block at the cursor with AI (base, ours and theirs; the answer previews before it applies) | write | ||
git.conflict_both |
Git: resolve the conflict block at the cursor with both sides, ours first (vim cb, standard alt+3 inside the block) |
write | ||
git.conflict_next |
Git: jump to the next conflict block in this buffer (vim ]x) |
write | f8 |
f8 |
git.conflict_ours |
Git: resolve the conflict block at the cursor with ours (vim co, standard alt+1 inside the block) |
write | ||
git.conflict_prev |
Git: jump to the previous conflict block in this buffer (vim [x) |
write | shift+f8 |
shift+f8 |
git.conflict_split |
Git: show ours against theirs for this conflicted file in the diff pane's Split view | write | ||
git.conflict_theirs |
Git: resolve the conflict block at the cursor with theirs (vim ct, standard alt+2 inside the block) |
write | ||
git.copy_current_branch |
Git: copy current branch name to clipboard | write | ||
git.copy_head_sha |
Git: copy HEAD SHA (full hex) to clipboard | write | ||
git.delete_branch |
Git: delete a local branch (picker, force -D, confirm prompt) | write | ||
git.delete_remote_branch |
Git: delete a branch on the remote (push --delete; confirm) | write | ||
git.diff |
Git: diff the worktree | write | space g D, space g d |
space g D, space g d |
git.diff_against_base |
Graph: diff the selected commit against the compare base (base..row) | write | ||
git.diff_against_current |
Git: diff a branch against the current one (current..branch) | write | ||
git.diff_all |
Git: diff everything vs HEAD (staged + unstaged) | write | space g A |
space g A |
git.diff_commit_lines |
Diff: commit the selected lines (else the hunk) — the rest stays as it is | write | ||
git.diff_discard_lines |
Diff: discard the selected lines (else the hunk) from the worktree (x, confirm) | write | ||
git.diff_file |
Git: diff this file (split) | write | space g f |
space g f |
git.diff_filter |
Diff: filter to the hunks containing a string (/) | write | ||
git.diff_next_file |
Git: jump to next file in the diff pane (]f) | write | f7 |
f7 |
git.diff_open_line |
Diff: open the file at the cursor's line (enter) | write | ||
git.diff_orig |
Git: diff active buffer against on-disk version (vim :DiffOrig) | write | ||
git.diff_prev_file |
Git: jump to previous file in the diff pane ([f) | write | shift+f7 |
shift+f7 |
git.diff_select |
Diff: anchor a line selection at the cursor, or drop it (v) | write | ||
git.diff_stage_lines |
Diff: stage the selected lines (else the hunk) (s) | write | ||
git.diff_stash_lines |
Diff: stash the selected lines (else the hunk) — a stash of just those lines, dropped from the worktree | write | ||
git.diff_toggle_view |
Diff: cycle the view (Hunk → Inline → Split) | write | ||
git.diff_unstage_lines |
Diff: unstage the selected lines (else the hunk) (u) | write | ||
git.discard |
Git: discard changes to the selected file (confirm) | write | ||
git.drop |
Graph: drop the selected commit(s) | write | ||
git.explain_branch |
Git: explain a branch's changes with Claude — the commits it has that the checked-out branch does not, in a read-only pane | write | space g e |
|
git.fast_forward |
Git: fast-forward the selected / current branch to its upstream (merge --ff-only, or fetch ref:branch when not checked out) | write | ||
git.fetch |
Git: fetch --all --prune (refresh remote refs) | write | ||
git.file_history |
Git: file history (commits touching this file) | write | ||
git.fixup |
Graph: fixup the selected commit(s) into the commit before | write | ||
git.graph |
Git: commit graph (DAG browser) | write | space c m, space g l |
space g l |
git.graph_detail |
Graph: open the detail panel for the selected commit (tab focuses it) | write | ||
git.graph_detail_open |
Graph: open the detail column's file — its diff in the commit, or the working tree's (Enter) | write | ||
git.graph_diff |
Graph: the selected commit's own diff | write | ||
git.graph_file_at_rev |
Graph: open the detail column's file as the selected commit had it (a scratch copy) | write | ||
git.graph_filter_author |
Graph: filter by author… | write | ||
git.graph_filter_branch |
Graph: filter by branch… | write | ||
git.graph_filter_clear |
Graph: clear branch filter (show all) | write | ||
git.graph_filter_date |
Graph: filter by date range… | write | ||
git.graph_filter_reset_all |
Graph: clear ALL filters (branch / date / author / subject) | write | ||
git.graph_filter_subject |
Graph: filter by subject (grep)… | write | ||
git.graph_jump_hash |
Graph: jump to a commit by hash prefix… | write | ||
git.graph_sort |
Graph: sort by the next column (graph → date → author → subject) | write | ||
git.jump_next_change |
Git: jump to next changed hunk in this buffer (vim ]c) |
write | space g n |
space g n |
git.jump_prev_change |
Git: jump to previous changed hunk in this buffer (vim [c) |
write | space g p |
space g p |
git.merge |
Git: merge a branch into the current (--no-edit) | write | ||
git.new_branch |
Git: create a new branch | write | ||
git.new_branch_from |
Git: new branch from the selected commit / tag / branch… | write | ||
git.next_repo |
Git: cycle to next repo (multi-repo workspace) | write | alt+] |
alt+] |
git.op_abort |
Git: abort the operation in progress (rebase / merge / cherry-pick / revert / bisect) | write | ||
git.op_continue |
Git: continue the rebase / merge / cherry-pick / revert in progress | write | ||
git.op_skip |
Git: skip the current step of the rebase / cherry-pick / revert in progress | write | ||
git.open_file |
Git: open the selected file in an editor | write | ||
git.palette_all |
Git: list every repo in the branches panel (All repos), or one again | write | ||
git.peek_change |
Git: peek change at cursor (popup of HEAD diff) | write | ||
git.prev_repo |
Git: cycle to previous repo (multi-repo workspace) | write | alt+[ |
alt+[ |
git.pull |
Git: pull --ff-only (fail on non-fast-forward) | write | ||
git.push |
Git: push (auto --set-upstream on first push) | write | ||
git.push_force |
Git: push --force-with-lease (confirm names the risk) | write | ||
git.push_start_pr |
Git: push the branch (push -u, never a force) and open the forge's new-pull-request page | write | space g r |
|
git.push_tags |
Git: push --tags (publish all local tags to origin) | write | ||
git.rebase |
Git: rebase the current branch onto another (local or remote) | write | ||
git.rebase_interactive_onto |
Git: interactive rebase onto the panel's branch row / the graph's commit — the plan modal over everything HEAD has that it does not | write | space g i |
|
git.rebase_plan |
Graph: rebase plan for the selected commits (pick / reword / edit / squash / fixup / drop, reorder) | write | ||
git.recent_branches |
Git: recent branches (sorted by last commit date) | write | ||
git.redo |
Git: redo the last undone commit | write | ||
git.reflog |
Git: reflog (HEAD history; pick to open commit diff) | write | ||
git.refresh |
Git: refresh status now | write | ||
git.refresh_repos |
Git: rediscover repos under workspace | write | ||
git.reopen_repo |
Git: reopen a closed repo tab | write | ||
git.repo_next |
Git: the next repo in the branches panel (its right chevron, ]) |
write | ||
git.repo_prev |
Git: the previous repo in the branches panel (its left chevron, [) |
write | ||
git.reset_hard |
Git: reset --hard to the selected commit / branch (confirm; undo restores) | write | ||
git.reset_mixed |
Git: reset --mixed to the selected commit / branch (or a rev) | write | ||
git.reset_soft |
Git: reset --soft to the selected commit / branch (or a rev) | write | ||
git.revert |
Git: revert the selected graph commit (creates a new commit) | write | ||
git.reword |
Graph: reword the selected commit (prompt) | write | ||
git.select_branch |
Graph: select the current branch's commits since its upstream (*) | write | ||
git.set_upstream |
Git: set the selected / current branch's upstream… (branch -u) | write | ||
git.squash |
Graph: squash the selected commit(s) into the commit before | write | ||
git.stage |
Git: stage the selected file (or the active buffer) | write | ||
git.stage_all |
Git: stage everything (add -A) | write | ||
git.stash |
Git: stash (push -u, optional message) | write | space g S |
space g S |
git.stash_branch |
Git: branch from a stash… (stash branch) | write | ||
git.stash_drop |
Git: stash drop (pick a stash to delete) | write | ||
git.stash_file |
Git: stash the selected file (or the active buffer's) only | write | ||
git.stash_keep_index |
Git: stash the tree but keep the index (stash push --keep-index) | write | ||
git.stash_list |
Git: stash list (pick to apply — keeps the stash) | write | ||
git.stash_pop |
Git: stash pop (apply + drop most recent) | write | space g P |
space g P |
git.stash_rename |
Git: rename a stash… (drop + stash store -m) | write | ||
git.stash_show |
Git: show a stash's files (the panel's row, or a picker); Enter diffs one | write | ||
git.stash_show_diff |
Git: diff the selected stash file against the stash's parent | write | ||
git.stash_staged |
Git: stash the staged changes only (stash push --staged) | write | ||
git.status_pane |
Git: status / staging view | write | space g t, space g s |
space g s |
git.switch_repo |
Git: switch active repo (multi-repo workspace) | write | ||
git.tag |
Git: create tag (annotated; on HEAD or selected graph commit) | write | ||
git.tag_delete |
Git: delete tag (picker) | write | ||
git.toggle_line_blame |
Git: toggle the current line's blame | write | ||
git.undo |
Git: undo last commit (reset --soft HEAD~1) | write | ||
git.unstage |
Git: unstage the selected file (or the active buffer) | write | ||
git.unstage_all |
Git: unstage everything | write | ||
git.worktree_add |
Git: add a linked worktree (prompt for path + branch) | write | ||
git.worktree_add_from |
Git: new worktree from the selected commit / tag / branch… | write | ||
git.worktree_list |
Git: open another worktree as a workspace | write | ||
git.worktree_lock |
Git: lock the branches panel's worktree row… (worktree lock, with an optional reason — a locked tree refuses remove and prune) | write | ||
git.worktree_open_tab |
Git: open the branches panel's worktree row on a tab page of its own (the tree's files, and the panels follow it) | write | space g W |
|
git.worktree_remove |
Git: remove a linked worktree (confirm prompt) | write | ||
git.worktree_remove_delete_branch |
Git: remove the branches panel's worktree row and delete its branch… (confirm; Force takes a dirty tree or an unmerged branch) | write | ||
git.worktree_unlock |
Git: unlock the branches panel's worktree row (worktree unlock) | write | ||
git.worktrees |
Git: worktrees → open a shell in one | write | space g w |
space g w |
pr
| id | title | effect | vim | standard |
|---|---|---|---|---|
pr.picker |
PRs: cross-host fuzzy picker (Enter ⇒ URL · Tab ⇒ pipeline) | write | ||
pr.refresh |
PRs: refresh cross-host cache (background) | write |
markdown
| id | title | effect | vim | standard |
|---|---|---|---|---|
markdown.cycle_engine |
Markdown preview engine — cycle builtin / glow (external ANSI renderer) | view |
term
| id | title | effect | vim | standard |
|---|---|---|---|---|
task.run |
Tasks: run a configured task in a terminal pane | exec | space o |
space o |
term.btop |
Term: open btop (alias of tools.btop) | exec | ||
term.focus_or_open_shell |
Terminal: focus existing shell or open one | exec | ||
term.htop |
Term: open htop (alias of tools.htop) | exec | ||
term.iftop |
Term: open iftop (alias of tools.iftop) | exec | ||
term.rename |
Terminal: rename this session (shown in the tab) | exec | ||
term.scratch_toggle |
Terminal: quick scratch strip at the bottom (Ctrl+`) | exec | alt+h, `ctrl+`` |
`ctrl+`` |
term.shell |
Terminal: open a NEW shell (split beside) | exec | ctrl+shift+``, space a t` |
ctrl+shift+``, space a t` |
term.shell_bottom |
Terminal: new shell in bottom half | exec | space h |
|
term.shell_left |
Terminal: new shell in left half | exec | ||
term.shell_right |
Terminal: new shell in right half | exec | space v |
|
term.shell_top |
Terminal: new shell in top half | exec | ||
tools.btop |
Tools: open btop (or hint brew install) | exec | space i r |
space i r |
tools.dust |
Tools: open dust (or hint brew install) | exec | ||
tools.gh |
Tools: open gh (GitHub CLI, or hint brew install) | exec | ||
tools.htop |
Tools: open htop (or hint brew install) | exec | space i h |
space i h |
tools.iftop |
Tools: open iftop (or hint brew install) | exec | space i I |
space i I |
tools.lazygit |
Tools: open lazygit (or hint brew install) | exec | ||
tools.ncdu |
Tools: open ncdu (or hint brew install) | exec |
debug
| id | title | effect | vim | standard |
|---|---|---|---|---|
debug.toggle_click_inspector |
Debug: toggle click inspector (toast rect names on each click) | view |
file
| id | title | effect | vim | standard |
|---|---|---|---|---|
file.clear_recent |
Clear recent files list | write | ||
file.copy |
Copy selected tree file (Ctrl+C, tree focus · paste = duplicate) | write | ||
file.copy_path |
Copy the path of the tree row (tree focused) or the active file | write | ctrl+k p, ctrl+alt+c, ctrl+k ctrl+alt+c |
|
file.cut |
Cut selected tree file (Ctrl+X, tree focus · paste = move) | write | ||
file.delete |
Delete the selected tree file (Delete) | write | delete |
delete |
file.duplicate |
Duplicate the selected tree file in place (Ctrl+D, tree focus · name-copy.ext) | write | ||
file.move_to |
Move the selected tree file to a chosen folder… | write | ||
file.new |
New file… (workspace-relative path) | write | ctrl+n |
|
file.new_folder |
New folder… (workspace-relative path) | write | ||
file.open_recent_0 |
Open recent file #1 | write | ||
file.open_recent_1 |
Open recent file #2 | write | ||
file.open_recent_2 |
Open recent file #3 | write | ||
file.open_recent_3 |
Open recent file #4 | write | ||
file.open_recent_4 |
Open recent file #5 | write | ||
file.open_recent_5 |
Open recent file #6 | write | ||
file.open_recent_6 |
Open recent file #7 | write | ||
file.open_recent_7 |
Open recent file #8 | write | ||
file.open_recent_8 |
Open recent file #9 | write | ||
file.open_recent_9 |
Open recent file #10 | write | ||
file.open_settings |
Open mnml config TOML in an editor pane (escape hatch — schema overlay is Ctrl+,) | write | ||
file.paste |
Paste the file clipboard into the tree row's dir (Ctrl+V, tree focus) | write | ||
file.reload |
Reload active buffer from disk (refuses if dirty) | write | ||
file.rename |
Rename the selected tree file (F2, when tree focused) | write | ||
file.save |
Save file | write | ctrl+s |
ctrl+s |
file.save_all |
Save all files | write | ctrl+k s |
|
file.save_as |
Save as… (workspace-relative path) | write | ctrl+shift+s |
|
keys.edit |
Customize keybindings (opens [keys.standard] in config.toml) | write | ||
noop |
(no-op — placeholder for disabled menu items) | write |
perf
| id | title | effect | vim | standard |
|---|---|---|---|---|
perf.copy_stress |
Perf: copy the stress summary (p50 / p95 / max / n) to the clipboard | view | ||
perf.hide_stress |
Perf: hide the stress meter chip | view | ||
perf.reset_stress |
Perf: reset the stress meter's frame-time window | view | ||
perf.toast_stress |
Perf: toast the current stress numbers | view | ||
perf.toggle_stress |
Perf: toggle the stress meter chip | view |
misc
| id | title | effect | vim | standard |
|---|---|---|---|---|
noop.info |
(info row · no action) | view |
files
| id | title | effect | vim | standard |
|---|---|---|---|---|
files.activate |
Files: enter the selected directory / open the selected file (Enter) | write | ||
files.copy_path |
Files: copy the selected row's path | write | ||
files.cycle_sort |
Files: cycle the sort (name → size → modified) | write | ||
files.destinations |
Files: go to… (home, workspace, trash, open browsers) | write | ||
files.empty_trash |
Files: empty the workspace trash… | write | ||
files.mark_all |
Files: mark every listed row (a) | write | ||
files.mark_clear |
Files: clear the marks (Esc) | write | ||
files.mark_invert |
Files: invert the marks (*) | write | ||
files.mark_toggle |
Files: mark / unmark the selected row (Space) | write | ||
files.new_file |
Files: new file in this directory… | write | ||
files.new_folder |
Files: new folder in this directory… | write | ||
files.preview |
Files: preview the selected file beside the listing (p) | write | ||
files.refresh |
Files: re-read the listing | write | ||
files.restore_from_trash |
Files: restore the selected trash entry | write | ||
files.sort_modified |
Files: sort by modified, newest first | write | ||
files.sort_name |
Files: sort by name (directories first) | write | ||
files.sort_size |
Files: sort by size, largest first | write | ||
files.toggle_hidden |
Files: show / hide dot files in the listing | write | ||
files.trash |
Files: open the workspace trash | write | ||
files.up |
Files: go to the parent directory | write |
transfer
| id | title | effect | vim | standard |
|---|---|---|---|---|
transfer.cancel_all |
Transfers: cancel all running | exec |
toast
| id | title | effect | vim | standard |
|---|---|---|---|---|
toast.copy_clicked |
Toast: copy the text of the toast the menu was opened on | view | ||
toast.dismiss_all |
Toast: dismiss every ephemeral toast | view | ||
toast.dismiss_clicked |
Toast: dismiss the toast the menu was opened on | view | ||
toast.dismiss_current |
Toast: dismiss the right-clicked toast | view | ||
toast.run_action |
Toast: take up the newest message's offer (the Install button) |
exec | ctrl+shift+a |
ctrl+shift+a |
tab
| id | title | effect | vim | standard |
|---|---|---|---|---|
tab.close |
Close active tab page | view | ||
tab.first |
First tab page | view | ||
tab.goto_1 |
Jump to tab page 1 | view | alt+1 |
alt+1 |
tab.goto_2 |
Jump to tab page 2 | view | alt+2 |
alt+2 |
tab.goto_3 |
Jump to tab page 3 | view | alt+3 |
alt+3 |
tab.goto_4 |
Jump to tab page 4 | view | alt+4 |
alt+4 |
tab.goto_5 |
Jump to tab page 5 | view | alt+5 |
alt+5 |
tab.goto_6 |
Jump to tab page 6 | view | alt+6 |
alt+6 |
tab.goto_7 |
Jump to tab page 7 | view | alt+7 |
alt+7 |
tab.goto_8 |
Jump to tab page 8 | view | alt+8 |
alt+8 |
tab.goto_9 |
Jump to tab page 9 | view | alt+9 |
alt+9 |
tab.last |
Last tab page | view | ||
tab.list |
List tab pages | view | ||
tab.move_left |
Move active tab page one position left | view | ||
tab.move_right |
Move active tab page one position right | view | ||
tab.new |
New tab page | view | ctrl+k n |
|
tab.next |
Next tab page (vim gt) | view | ||
tab.only |
Close all other tab pages | view | ||
tab.picker |
Fuzzy picker over tab pages | view | ||
tab.prev |
Previous tab page (vim gT) | view | ||
tab.reopen |
Reopen last closed tab page | view |
harpoon
| id | title | effect | vim | standard |
|---|---|---|---|---|
harpoon.add |
Harpoon: pin the active file into the next free slot | view | space H a |
space H a |
harpoon.clear |
Harpoon: unpin every slot | view | ||
harpoon.goto_1 |
Harpoon: jump to slot 1 | view | space 1 |
space 1 |
harpoon.goto_2 |
Harpoon: jump to slot 2 | view | space 2 |
space 2 |
harpoon.goto_3 |
Harpoon: jump to slot 3 | view | space 3 |
space 3 |
harpoon.goto_4 |
Harpoon: jump to slot 4 | view | space 4 |
space 4 |
harpoon.goto_5 |
Harpoon: jump to slot 5 | view | space 5 |
space 5 |
harpoon.goto_6 |
Harpoon: jump to slot 6 | view | space 6 |
space 6 |
harpoon.goto_7 |
Harpoon: jump to slot 7 | view | space 7 |
space 7 |
harpoon.goto_8 |
Harpoon: jump to slot 8 | view | space 8 |
space 8 |
harpoon.goto_9 |
Harpoon: jump to slot 9 | view | space 9 |
space 9 |
harpoon.menu |
Harpoon: open the pinned-files picker | view | space H m |
space H m |
clock
| id | title | effect | vim | standard |
|---|---|---|---|---|
clock.hide |
Clock: hide statusline clock chip | view | ||
clock.local |
Clock: show local time | view | ||
clock.menu |
Open clock menu (local ⇄ UTC) | view | ||
clock.utc |
Clock: show UTC | view |
sonos
| id | title | effect | vim | standard |
|---|---|---|---|---|
sonos.copy_track |
Sonos: copy what's playing to the clipboard | write | ||
sonos.favorites |
Sonos: play a favorite… | write | ||
sonos.group_all |
Sonos: group every room onto this one | write | ||
sonos.hide |
Sonos: hide the statusline speaker chip | write | ||
sonos.mute |
Sonos: toggle mute | write | ||
sonos.next |
Sonos: next track | write | ||
sonos.play_pause |
Sonos: play / pause the active room | write | ||
sonos.previous |
Sonos: previous track | write | ||
sonos.refresh |
Sonos: re-scan the network for speakers | write | ||
sonos.reload_favorites |
Sonos: reload the favorites list | write | ||
sonos.rooms |
Sonos: pick room… | write | ||
sonos.status |
Sonos: report room / track / volume | write | ||
sonos.stream_mac_audio |
Sonos: send this Mac's audio to the speaker (toggle) | write | ||
sonos.ungroup |
Sonos: drop this room out of its group | write | ||
sonos.volume_down |
Sonos: volume −5 | write | ||
sonos.volume_up |
Sonos: volume +5 | write |
audio
| id | title | effect | vim | standard |
|---|---|---|---|---|
audio.airplay_music |
Audio: send Music.app to an AirPlay destination… | exec | ||
audio.restore_output |
Audio: put this Mac's output back on its own speakers | exec |
notes
| id | title | effect | vim | standard |
|---|---|---|---|---|
notes.copy_path |
Notes: copy the selected note's path | view | ||
notes.delete |
Notes: delete the selected note (confirm) | write | ||
notes.new |
Notes: create a new note in .mnml/notes/ | write | ||
notes.open |
Notes: open the selected note | view | ||
notes.refresh |
Notes: rescan .mnml/notes/ | view | ||
notes.sort |
Notes: cycle sort order | view |
todos
| id | title | effect | vim | standard |
|---|---|---|---|---|
todos.copy_path |
TODOs: copy the selected marker's path:line | view | ||
todos.fix_with_agent |
TODOs: hand the selected marker to Claude Code (.claude/ or PATH) or Codex | exec | ||
todos.ignore_file |
TODOs: hide the selected marker's file this session | write | ||
todos.mark_done |
TODOs: retire the selected marker (DONE / un-quarantine the test) | write | ||
todos.new |
TODOs: add a TODO to the workspace TODO.md | write | ||
todos.open |
TODOs: open the selected marker at its line | view | ||
todos.open_claude |
TODOs: open the selected marker in a Claude Code session | exec | ||
todos.open_codex |
TODOs: open the selected marker in a Codex session | exec | ||
todos.refresh |
TODOs: rescan the workspace | view | ||
todos.sort |
TODOs: cycle sort order | view |
findings
| id | title | effect | vim | standard |
|---|---|---|---|---|
findings.copy_path |
Findings: copy the selected finding's path | view | ||
findings.delete |
Findings: delete the selected finding (confirm) | write | ||
findings.new |
Findings: create a new finding in .mnml/findings/ | write | ||
findings.open |
Findings: open the selected finding | view | ||
findings.refresh |
Findings: rescan .mnml/findings/ | view | ||
findings.resolve |
Findings: mark the selected finding resolved (status: resolved) | write | ||
findings.sort |
Findings: cycle sort order | view |
sessions
| id | title | effect | vim | standard |
|---|---|---|---|---|
sessions.all_workspaces |
Sessions: toggle every workspace's sessions / this one's | exec | ||
sessions.ask_external |
Sessions: ask the selected session another terminal runs what it is doing (a cross-session message; the reply toasts) | exec | ||
sessions.changes |
Sessions: what did this session change — its files since it started (uncommitted / committed), stage, diff, commit | exec | ||
sessions.clear_ended |
Sessions: clear the ended sessions from the list (the history chip's menu) | exec | ||
sessions.cloud_cancel |
Sessions: cancel the selected cloud run (confirm) | exec | ||
sessions.cloud_open |
Sessions: open the selected cloud run (its task, in a terminal) | exec | ||
sessions.cloud_tail |
Sessions: tail the selected cloud run's log | exec | ||
sessions.column_next |
Sessions: next session stacked in the focused column (Ctrl+Tab in the sessions mode) | exec | ||
sessions.column_prev |
Sessions: previous session stacked in the focused column (Ctrl+Shift+Tab in the sessions mode) | exec | ||
sessions.columns_1 |
Sessions: the sessions mode shows one session maximised (ai.session_columns = 1) | exec | ||
sessions.columns_2 |
Sessions: the sessions mode shows 2 sessions side by side (ai.session_columns = 2) | exec | ||
sessions.columns_3 |
Sessions: the sessions mode shows 3 sessions side by side (ai.session_columns = 3) | exec | ||
sessions.columns_4 |
Sessions: the sessions mode shows 4 sessions side by side (ai.session_columns = 4) | exec | ||
sessions.copy_cwd |
Sessions: copy the selected session's working directory | exec | ||
sessions.copy_id |
Sessions: copy the selected session id | exec | ||
sessions.cycle_state |
Sessions: cycle the state filter (every / waiting / live / tool / idle / failed / done) | exec | ||
sessions.delete |
Sessions: delete the selected session's transcript (confirm) | exec | ||
sessions.export |
Sessions: export the selected transcript as markdown | exec | ||
sessions.focus_1 |
Sessions: focus session 1 as SESSIONS lists it (the 1 on its card; Ctrl+1 in the sessions view) | exec | space a 1 |
ctrl+alt+1 |
sessions.focus_2 |
Sessions: focus session 2 as SESSIONS lists it (the 2 on its card; Ctrl+2 in the sessions view) | exec | space a 2 |
ctrl+alt+2 |
sessions.focus_3 |
Sessions: focus session 3 as SESSIONS lists it (the 3 on its card; Ctrl+3 in the sessions view) | exec | space a 3 |
ctrl+alt+3 |
sessions.focus_4 |
Sessions: focus session 4 as SESSIONS lists it (the 4 on its card; Ctrl+4 in the sessions view) | exec | space a 4 |
ctrl+alt+4 |
sessions.focus_5 |
Sessions: focus session 5 as SESSIONS lists it (the 5 on its card; Ctrl+5 in the sessions view) | exec | space a 5 |
ctrl+alt+5 |
sessions.focus_6 |
Sessions: focus session 6 as SESSIONS lists it (the 6 on its card; Ctrl+6 in the sessions view) | exec | space a 6 |
ctrl+alt+6 |
sessions.focus_7 |
Sessions: focus session 7 as SESSIONS lists it (the 7 on its card; Ctrl+7 in the sessions view) | exec | space a 7 |
ctrl+alt+7 |
sessions.focus_8 |
Sessions: focus session 8 as SESSIONS lists it (the 8 on its card; Ctrl+8 in the sessions view) | exec | space a 8 |
ctrl+alt+8 |
sessions.focus_9 |
Sessions: focus session 9 as SESSIONS lists it (the 9 on its card; Ctrl+9 in the sessions view) | exec | space a 9 |
ctrl+alt+9 |
sessions.kill |
Sessions: SIGTERM the selected session (or every ticked one) after a confirm | exec | ||
sessions.merge_worktree |
Sessions: merge the selected session's worktree branch into the main tree (confirm) | exec | ||
sessions.mode |
Sessions: the sessions mode — every Claude Code / Codex session side by side, the layout put aside (again to leave) | exec | ||
sessions.mode_new |
Sessions: new Claude Code session in the focused column (Ctrl+N in the sessions mode) | exec | ||
sessions.move_bottom |
Sessions: move the selected session to the bottom (manual order) | exec | ||
sessions.move_down |
Sessions: move the selected session down (manual order) | exec | ||
sessions.move_top |
Sessions: move the selected session to the top (manual order) | exec | ||
sessions.move_up |
Sessions: move the selected session up (manual order) | exec | ||
sessions.new_menu |
Sessions: the + New session choices (local / cloud) | exec | ||
sessions.next_waiting |
Sessions: focus the next session that is ready for you (wraps) | exec | space a j |
ctrl+alt+n |
sessions.open |
Sessions: resume the selected session in a terminal | exec | ||
sessions.open_transcript |
Sessions: open the selected session's transcript | exec | ||
sessions.open_worktree_in_tree |
Sessions: open the selected session's worktree in the file tree (an extra workspace root) | exec | ||
sessions.pause |
Sessions table: pause / resume the live tail | exec | ||
sessions.pin |
Sessions: pin / unpin the selected session (pinned lead the list) | exec | ||
sessions.prev_waiting |
Sessions: focus the previous session that is ready for you (wraps) | exec | space a k |
ctrl+alt+shift+n |
sessions.refresh |
Sessions: re-read session transcripts + ports | exec | ||
sessions.remove_worktree |
Sessions: remove the selected session's worktree and its branch (confirm) | exec | ||
sessions.rename |
Sessions: rename the selected session (empty = reset) | exec | ||
sessions.select |
Sessions table: tick the row for a batch action | exec | ||
sessions.select_clear |
Sessions table: clear the ticks | exec | ||
sessions.show_ended |
Sessions table: show / hide ended sessions older than a day | exec | ||
sessions.sort |
Sessions: cycle the sort axis (State / Manual / Waiting) | exec | ||
sessions.sort_auto |
Sessions: sort by state (approval → running → rest) | exec | ||
sessions.sort_manual |
Sessions: sort by manual order | exec | ||
sessions.sort_waiting |
Sessions: sort the sessions that need you first (manual order under them) | exec | ||
sessions.table |
Sessions: open every session on this machine as a table (grouped by workspace) | exec | ||
sessions.table_sort |
Sessions table: cycle the sort within a group (state / tokens / cost / recent) | exec | ||
sessions.take_over |
Sessions: end the selected idle session in its own terminal and resume it here (confirm) | exec | ||
sessions.toggle_ended |
Sessions: show / hide the ended sessions (the history chip, E) | exec | ||
sessions.toggle_group |
Sessions table: collapse / expand the workspace group | exec | ||
sessions.where |
Sessions table: cycle where (all / local / cloud) | exec |
test
| id | title | effect | vim | standard |
|---|---|---|---|---|
cargo.build |
Cargo: run cargo build in a pty pane |
exec | space L c b |
space L c b |
cargo.check |
Cargo: run cargo check in a pty pane |
exec | space L c c |
space L c c |
cargo.clippy |
Cargo: run cargo clippy --all-targets in a pty pane |
exec | space L c l |
space L c l |
cargo.fmt |
Cargo: run cargo fmt in a pty pane |
exec | space L c f |
space L c f |
cargo.test |
Cargo: run cargo test in a pty pane |
exec | space L c t |
space L c t |
dotnet.build |
.NET: run dotnet build at the nearest .sln / .csproj in a pty pane |
exec | ||
dotnet.restore |
.NET: run dotnet restore at the nearest .sln / .csproj in a pty pane |
exec | ||
dotnet.run |
.NET: run dotnet run at the nearest .csproj in a pty pane |
exec | ||
dotnet.test |
.NET: run dotnet test at the nearest .sln / .csproj (results pane) |
exec | ||
dotnet.watch |
.NET: run dotnet watch run at the nearest .csproj in a pty pane |
exec | ||
flaky.show |
Test: flaky-test dashboard (wobbly tests from history) | exec | space T w |
space T w |
go.build |
Go: run go build ./... in a pty pane |
exec | space L g b |
space L g b |
go.run |
Go: run go run . in a pty pane |
exec | space L g r |
space L g r |
go.run_path |
go: prompt for a package path → run go run <path> |
exec | space L g p |
space L g p |
go.test |
Go: run go test ./... in a pty pane |
exec | space L g t |
space L g t |
go.vet |
Go: run go vet ./... in a pty pane |
exec | space L g v |
space L g v |
npm.build |
npm: run npm run build in a pty pane |
exec | space L n b |
space L n b |
npm.install |
npm: run npm install in a pty pane |
exec | space L n i |
space L n i |
npm.lint |
npm: run npm run lint in a pty pane |
exec | space L n l |
space L n l |
npm.run |
npm: run npm run dev (use npm.run_script for a different script) |
exec | space L n r |
space L n r |
npm.run_script |
npm: prompt for a script name → run npm run <script> |
exec | space L n x |
space L n x |
npm.start |
npm: run npm start in a pty pane |
exec | space L n s |
space L n s |
npm.test |
npm: run npm test in a pty pane |
exec | space L n t |
space L n t |
pytest.failed |
pytest: re-run the last run's failures by node id (--lf before a run) |
exec | space L p l |
space L p l |
pytest.run |
pytest: run the suite (results pane) | exec | space L p t |
space L p t |
test.heal |
Tests: ask Claude to fix the highlighted failing test | exec | space T h |
space T h |
test.open_trace |
Playwright: open the selected test's trace (show-trace) | exec | ||
test.rerun_failed |
Tests: re-run only the last run's failures, by name from the results pane (vitest / pytest / dotnet) | exec | space T l |
space T l |
test.rerun_playwright_failed |
Playwright: re-run last-failed (--last-failed) | exec | ||
test.run_all |
Tests: run the whole suite with the project's runner (vitest / pytest / dotnet in the results pane) | exec | space T a |
space T a |
test.run_at_cursor |
Tests: run the test at the cursor | exec | space T t |
space T t |
test.run_file |
Tests: run this spec file | exec | space T f |
space T f |
test.run_playwright |
Playwright: run the whole suite (results pane) | exec | ||
test.run_playwright_at_cursor |
Playwright: run the test at the cursor (file:line) | exec | ||
test.run_playwright_file |
Playwright: run this spec file (results pane) | exec | ||
test.sort |
Playwright: cycle the results sort (file:line / slowest) | exec |
tools
| id | title | effect | vim | standard |
|---|---|---|---|---|
tools.installer |
Browse external tools (Mason-style — LSPs / formatters / linters) | exec |
dap
| id | title | effect | vim | standard |
|---|---|---|---|---|
dap.add_watch |
DAP: add a watch expression | exec | space d w |
|
dap.attach |
DAP: attach to a running process (→ picker) | exec | ||
dap.clear_all_breakpoints |
DAP: clear all breakpoints in this buffer | exec | ||
dap.clear_console |
DAP: clear the debug console | exec | ||
dap.clear_watches |
DAP: clear all watch expressions | exec | ||
dap.continue |
DAP: continue (resume from breakpoint; starts a session when there is none) | exec | space d c, f5 |
f5 |
dap.copy_value |
DAP: copy the value under the cursor | exec | ||
dap.disable_all_breakpoints |
DAP: disable every breakpoint | exec | ||
dap.edit_selected |
DAP: edit the row under the cursor (a value, a watch, a condition) | exec | ||
dap.enable_all_breakpoints |
DAP: enable every breakpoint | exec | ||
dap.evaluate_hover |
DAP: evaluate the word under the cursor into the hover box | exec | space d h |
|
dap.exceptions |
DAP: toggle exception breakpoints (→ picker) | exec | space d e |
|
dap.list_breakpoints |
DAP: list all breakpoints across open buffers | exec | ||
dap.next |
DAP: step over | exec | space d o, f10 |
f10 |
dap.open_selected |
DAP: jump to the frame / breakpoint / thread under the cursor | exec | ||
dap.pause |
DAP: pause running thread | exec | space d p |
|
dap.pick_thread |
DAP: switch to a different thread (→ picker) | exec | ||
dap.remove_breakpoint |
DAP: remove the breakpoint (cursor line, or the row under the cursor) | exec | ||
dap.remove_selected |
DAP: remove the watch or breakpoint under the cursor | exec | ||
dap.remove_watch |
DAP: remove a watch expression (→ picker) | exec | ||
dap.repl |
DAP: focus the debug console (evaluate expressions) | exec | space d r |
|
dap.restart |
DAP: restart the session (stop, then start again on the same file) | exec | space d R, ctrl+shift+f5 |
ctrl+shift+f5 |
dap.reverse_continue |
DAP: reverse-continue to previous breakpoint | exec | ||
dap.run |
DAP: start debug session for active buffer's filetype | exec | ||
dap.set_breakpoint_hit_count |
DAP: set hit-count on breakpoint (e.g. >= 5, % 10) | exec | ||
dap.set_breakpoint_log_message |
DAP: set a log message on the breakpoint (a logpoint) | exec | space d l |
|
dap.set_variable |
DAP: set the value of the selected variable | exec | ||
dap.show |
DAP: show the DEBUG section and the debug console | exec | ||
dap.step_back |
DAP: step backward (reverse — requires record-replay adapter) | exec | ||
dap.step_in |
DAP: step into | exec | space d i, f11 |
f11 |
dap.step_out |
DAP: step out | exec | space d O, shift+f11 |
shift+f11 |
dap.terminate |
DAP: terminate session | exec | space d t, shift+f5 |
shift+f5 |
dap.toggle_breakpoint |
DAP: toggle breakpoint at cursor line | exec | space d b, f9 |
f9 |
dap.toggle_breakpoint_conditional |
DAP: toggle conditional breakpoint at cursor | exec | space d B, shift+f9 |
shift+f9 |
dap.toggle_breakpoint_enabled |
DAP: enable / disable the breakpoint (cursor line, or the row under the cursor) | exec | ||
dap.toggle_panel |
DAP: toggle the DEBUG section (variables · watch · call stack · breakpoints) | exec | space d u |
|
dap.toggle_section |
DAP: fold / unfold the section or variable under the cursor | exec | ||
dap.toggle_selected |
DAP: flip the checkbox / fold under the cursor (Space) | exec | ||
dap.watch_selected |
DAP: watch the variable under the cursor | exec | ||
dotnet.debug |
.NET: dotnet build, then debug the active .cs file's project (netcoredbg) |
exec |
edit
| id | title | effect | vim | standard |
|---|---|---|---|---|
picker.clipboard |
Clipboard: pick from register history and paste at cursor | edit | ||
snippet.expand |
Snippet: expand trigger word at cursor | edit | space I x |
ctrl+j, space I x |
snippet.next_placeholder |
Snippet: jump to next placeholder | edit | ||
snippet.pick |
Snippet: insert from picker | edit | space I s |
space I s |
snippet.pick_all |
Snippets: list ALL (every scope)… | edit | ||
snippet.prev_placeholder |
Snippet: jump to previous placeholder | edit |
http
| id | title | effect | vim | standard |
|---|---|---|---|---|
auth.apply_preset |
Auth: apply a saved preset → active Request Authorization header | write | ||
auth.extract_bearer |
Auth: extract bearer token from clipboard text | write | ||
auth.save_preset |
Auth: save current Authorization header as a named preset | write | ||
cookies.clear |
Cookies: clear every cookie in the jar | write | ||
cookies.delete |
Cookies: remove one cookie (picker) | write | ||
cookies.normalize_clipboard |
Cookies: normalize clipboard text → canonical name=v; name=v form |
write | ||
cookies.persist |
Cookies: write the jar to .mnml/cookies.json | write | ||
cookies.show |
Cookies: open picker over the persistent jar | write | ||
http.abort |
HTTP: cancel any in-flight bench / sync work | write | ||
http.ai_build |
HTTP: build a request from a natural-language description (Claude) | write | ||
http.ai_debug |
HTTP: ask Claude why this request is failing | write | space R d |
space R d |
http.bench |
HTTP: bench active request 10× (concurrent) | write | ||
http.body_type_form |
HTTP: body mode = form-urlencoded (name = value rows) | write | ||
http.body_type_json |
HTTP: body mode = JSON (formatted on send, application/json) | write | ||
http.body_type_multipart |
HTTP: body mode = multipart/form-data (name = value rows, name = @file parts) | write | ||
http.body_type_raw |
HTTP: body mode = raw (as typed) | write | ||
http.cancel |
HTTP: cancel the active pane's send — stops a stream where it is | write | ||
http.capture_now |
HTTP: append browser pane network entries → captured log | write | ||
http.capture_start |
HTTP: launch browser + start capturing (or dump current if browser is open) | write | ||
http.clear_captured |
HTTP: clear the CAPTURED log (truncates captured.jsonl) | write | ||
http.clear_recent |
HTTP: clear the RECENT history (truncates history.jsonl) | write | ||
http.complete_var |
HTTP: complete a {{variable}} at the caret (env names, $ built-ins, @capture names) | write | ||
http.copy_ai_prompt |
HTTP: copy AI-ready "debug this failure" prompt to clipboard | write | ||
http.copy_as |
HTTP: copy request as code (curl / Python / JS / Go / wget / HTTPie) | write | ||
http.copy_curl |
HTTP: copy the request as a curl command | write | space R y |
space R y |
http.copy_response_body |
HTTP: copy the response body | write | ||
http.copy_response_cookies |
HTTP: copy the response Set-Cookie headers | write | ||
http.copy_response_headers |
HTTP: copy the response headers | write | ||
http.copy_response_tests |
HTTP: copy the response assertions summary | write | ||
http.copy_response_timeline |
HTTP: copy the response timeline (wait / receive / total) | write | ||
http.copy_var_name |
HTTP: copy the name of the {{VAR}} under the caret | write | ||
http.cycle_body_type |
HTTP: cycle the Body tab's mode (raw → JSON → form-urlencoded → multipart) | write | ||
http.cycle_method |
HTTP: cycle method (GET→POST→PUT→DELETE→PATCH→…) | write | ||
http.define_var |
HTTP: define the {{VAR}} under the caret in the active env | write | ||
http.delete_env_key |
HTTP: delete env var (from active .env) | write | ||
http.delete_request |
HTTP: delete the selected request (block or file)… | write | ||
http.diff_last_two |
HTTP: diff the active Request pane's last two responses | write | ||
http.duplicate_request |
HTTP: duplicate the selected request as name-copy (block or file) | write | ||
http.edit_env |
HTTP: structured editor for the active env file (.rqst/env/ |
write | ||
http.fan_envs |
HTTP: fan the active request out against every env file in parallel | write | ||
http.field_copy |
HTTP: copy focused Request field to clipboard | write | ||
http.field_cut |
HTTP: cut focused Request field to clipboard | write | ||
http.field_paste |
HTTP: paste clipboard at Request field cursor | write | ||
http.field_select_all |
HTTP: snap cursor to end + copy field | write | ||
http.find_request |
HTTP: find a request — every ### block of every collection file (fuzzy) | write | space R r |
ctrl+shift+r |
http.format_body |
HTTP: pretty-print JSON Body field of the active Request pane | write | ||
http.generate_code |
HTTP: copy request as code (alias for http.copy_as) | write | ||
http.history |
HTTP: open .rqst/history.jsonl (one-line-per-send log) | write | ||
http.history_global |
HTTP: history picker across all workspaces (~/.config/mnml/history-global.jsonl) | write | ||
http.import_har |
HTTP: import a .har file from clipboard or path | write | ||
http.import_postman |
HTTP: import a Postman Collection from clipboard | write | ||
http.inline_var |
HTTP: replace the {{VAR}} under the caret with its resolved value | write | ||
http.insert_header |
HTTP: insert a common header (Accept, Content-Type, Authorization, …) | write | ||
http.jump_to_env_var |
HTTP: jump to env var definition at cursor / active request pane | write | ||
http.lookup |
HTTP: lookup — fill an env var from a live API response | write | ||
http.move_request |
HTTP: move the selected request to another collection… | write | ||
http.new |
HTTP: new blank request pane (Postman-style scratch) | write | ||
http.new_chain |
HTTP: create a new .chain.json in .mnml/chains/ | write | ||
http.new_collection |
HTTP: create a new request collection under .mnml/collections/ | write | ||
http.new_env |
HTTP: create a new .env in .mnml/env/ | write | ||
http.new_request |
HTTP: create a new blank .http request | write | ||
http.next_block |
HTTP: move cursor to the next ### block in a multi-block file | write | space R ] |
space R ] |
http.panel_copy_path |
HTTP panel: copy the selected row's path / name / value | write | ||
http.panel_open |
HTTP panel: open / apply / run the selected row | write | ||
http.panel_toggle_section |
HTTP panel: collapse / expand the selected section | write | ||
http.params_add |
HTTP: add a query parameter (?key=value) to the active Request URL | write | ||
http.params_clear |
HTTP: clear all query parameters from the active Request URL | write | ||
http.paste_curl |
HTTP: paste curl from clipboard — populate active Request pane | write | ||
http.paste_source |
HTTP: parse Source tab buffer into Method/URL/Headers/Body | write | ||
http.pick_env |
HTTP: pick .env file (session override) | write | ||
http.prev_block |
HTTP: move cursor to the previous ### block | write | space R [ |
space R [ |
http.quick_fix |
HTTP: quick-fix menu for the {{VAR}} under the caret (define / pick env / inline) | write | ||
http.refresh |
HTTP: rescan collections / files / envs / captured log | write | ||
http.regenerate_body |
HTTP: regenerate body dynamic values (fresh timestamps + UUIDs) | write | ||
http.rename_request |
HTTP: rename the selected request — its ### line, or the file… | write | ||
http.replay_mock |
HTTP: replay integration .mock.json into the active request pane | write | ||
http.reset_env |
HTTP: reset .env override (fall back to MNML_ENV) | write | ||
http.revalidate_schema |
HTTP: re-run schema validation on the active Request pane's last response | write | ||
http.run_chain |
HTTP: run a .chain.json from .mnml/chains (multi-step request chain) | write | ||
http.save |
HTTP: save request (Save-As if new) | write | ||
http.save_mock |
HTTP: save current response as a integration .mock.json | write | ||
http.save_response |
HTTP: save active Response body to a file (prompt for path) | write | ||
http.send |
HTTP: send request (.http/.curl) — or re-fire a request pane | write | space R s |
space R s |
http.send_streaming |
HTTP: send active request as a Server-Sent Events stream | write | ||
http.set_description |
HTTP: set the active request's description (# @description …)… | write | ||
http.set_env_var_value |
HTTP: set value for env var at cursor / active request pane | write | ||
http.set_max_redirects |
HTTP: set the active request's redirect cap (# @max-redirects N)… | write | ||
http.set_method.delete |
HTTP: set method = DELETE | write | ||
http.set_method.get |
HTTP: set method = GET | write | ||
http.set_method.head |
HTTP: set method = HEAD | write | ||
http.set_method.options |
HTTP: set method = OPTIONS | write | ||
http.set_method.patch |
HTTP: set method = PATCH | write | ||
http.set_method.post |
HTTP: set method = POST | write | ||
http.set_method.put |
HTTP: set method = PUT | write | ||
http.set_path_param |
HTTP: set a :name path segment's value for the active request (# @path name=value)… | write | ||
http.set_proxy |
HTTP: set the active request's proxy (# @proxy host:port)… | write | ||
http.set_tags |
HTTP: set the active request's tags (# @tags a b c)… | write | ||
http.set_timeout |
HTTP: set the active request's timeout (# @timeout 5s)… | write | ||
http.show_schema_errors |
HTTP: open scratch buffer with response schema validation errors | write | ||
http.sync |
HTTP: sync swagger sources → .curl stub files | write | ||
http.sync_check |
HTTP: check for drift between swagger sources + on-disk stubs (dry run) | write | ||
http.toggle_auto_format_body |
HTTP: toggle auto-format request body (paste/send/load) | write | ||
http.toggle_collapse_all |
HTTP: collapse / expand all sidebar sections | write | ||
http.toggle_edit_split |
HTTP: split the Request edit area side-by-side (Body | Vars) | write | ||
http.toggle_follow_redirects |
HTTP: toggle Follow redirects for the active request (# @no-redirect) | write | ||
http.toggle_insecure |
HTTP: toggle Verify TLS for the active request (# @insecure) | write | ||
http.toggle_response_wrap |
HTTP: toggle response body wrap | write | ||
http.toggle_split_orientation |
HTTP: cycle Request/Response split orientation (Auto → Vertical → Horizontal) | write | ||
http.toggle_sync_normalize |
HTTP: toggle sync normalization ({{$isoTimestamp}} / {{$uuid}} substitution) | write | ||
http.toggle_view |
HTTP: toggle Request pane between Edit ⇄ Response | write | ||
http.view_captured |
HTTP: open .rqst/captured/log.jsonl (captured browser traffic) | write | ||
http.view_source |
HTTP: open the active request's source file as text | write | ||
jwt.decode |
JWT: decode clipboard token (claims only, no signature) | write | ||
sse.parse_active_response |
SSE: parse active Response pane body as Server-Sent Events | write | ||
ws.connect |
WebSocket: connect to a URL (native, persistent) | write | ||
ws.disconnect |
WebSocket: close the active connection | write | ||
ws.history |
WebSocket: picker over past URLs (~/.mnml/ws-history) | write | ||
ws.send |
WebSocket: send the active .ws file via websocat | write | ||
ws.send_message |
WebSocket: send a message on the active connection | write |
mount
| id | title | effect | vim | standard |
|---|---|---|---|---|
mount.open |
Mount: open a hosted integration pane (prompts for binary) | exec | ||
mounts.refresh |
Mounts: re-scan manifests in .mnml/mounts/ + ~/.config/mnml/mounts/ | exec |
workspace
| id | title | effect | vim | standard |
|---|---|---|---|---|
workspace.review_trust |
Workspace: review what this workspace is allowed to run | write |
trusted
| id | title | effect | vim | standard |
|---|---|---|---|---|
trusted.forget |
Workspace: forget this workspace's trust decision (asks again next launch) | write |
terminal
| id | title | effect | vim | standard |
|---|---|---|---|---|
term.clear |
Terminal: clear screen (Ctrl+L in the child) |
exec | ||
term.copy |
Terminal: copy the mouse selection in the active Pty pane | exec | ||
term.next_prompt |
Terminal: scroll to the next shell prompt (OSC 133 marks) | exec | ||
term.paste |
Terminal: paste clipboard into the active Pty pane | exec | ||
term.prev_prompt |
Terminal: scroll to the previous shell prompt (OSC 133 marks) | exec | ||
term.restart |
Terminal: restart the child process in this pane | exec | ||
term.search |
Terminal: search the scrollback (/ down and ? up in terminal-normal, Ctrl+F) | exec | ||
term.search_next |
Terminal: next scrollback match, down toward newer output | exec | ||
term.search_prev |
Terminal: previous scrollback match, up toward older output | exec |
dock
| id | title | effect | vim | standard |
|---|---|---|---|---|
dock.add_preset |
Dock: add a preset widget (clock, git branch, log tail, note) | write | ||
dock.close_all |
Dock: close all widgets | view | ||
dock.edit |
Dock: edit the focused widget's text or file | write | ||
dock.move_corner_next |
Dock: move focused widget to next corner | view | ||
dock.new_log_tail |
Dock: tail a file (bottom-left) | view | ||
dock.new_text |
Dock: new text widget (bottom-left) | view | ||
dock.new_text_br |
Dock: new text widget (bottom-right) | view | ||
dock.new_text_tl |
Dock: new text widget (top-left) | view | ||
dock.new_text_tr |
Dock: new text widget (top-right) | view | ||
dock.remove |
Dock: close the focused widget | write | ||
dock.rename |
Dock: rename the focused widget | write | ||
dock.toggle |
Dock: hide / show every widget | view |
grep
| id | title | effect | vim | standard |
|---|---|---|---|---|
grep.collapse_all |
Search: collapse every file | view | ||
grep.copy |
Search: copy the hit's path:line and text | view | ||
grep.disable_all |
Search: disable every hit for replace | view | ||
grep.enable_all |
Search: enable every hit for replace | view | ||
grep.expand_all |
Search: expand every file | view | ||
grep.open |
Search: open the hit under the cursor (a file row folds) | view | ||
grep.refresh |
Search: run the search again | view | ||
grep.toggle_hit |
Search: enable / disable the hit for replace | view |
coverage
| id | title | effect | vim | standard |
|---|---|---|---|---|
coverage.toast |
Coverage: toast the feature and code numbers | view |
script
| id | title | effect | vim | standard |
|---|---|---|---|---|
script.disable |
Scripts: disable the focused script (its state is dropped; nothing else is touched) | exec | ||
script.doctor |
Scripts: the doctor pane — every script's api, source, state, budget overruns, hooks and namespaces | exec | ||
script.edit_init |
Lua: open the data root's init.lua | exec | ||
script.enable |
Scripts: enable the focused script | exec | ||
script.install |
Scripts: install a script from a git URL, an archive or a folder (asks trust first) | exec | ||
script.marketplace_install |
Scripts: install the focused Marketplace row | exec | ||
script.new_init |
Lua: create the workspace's .mnml/init.lua from the commented template and open it | exec | ||
script.open_folder |
Scripts: reveal the focused script's folder | exec | ||
script.open_readme |
Scripts: open the focused script's README | exec | ||
script.reload |
Lua: reload init.lua (drops every script command, hook, pane and segment first) | exec | ||
script.reload_one |
Scripts: reload the focused script alone | exec | ||
script.remove |
Scripts: remove the focused script and delete its folder | exec | ||
script.rescan |
Scripts: re-scan the installed, private and dev folders | exec | ||
script.run_selection |
Lua: run the selected lines (or the cursor line) in the script state — the result is a toast | exec | space L l |
ctrl+alt+enter |
script.toggle_enabled |
Scripts: enable / disable the focused script | exec | ||
script.update |
Scripts: re-install the focused script from where it came (asks trust again) | exec |
session
| id | title | effect | vim | standard |
|---|---|---|---|---|
session.clear |
Session: delete .mnml/session.zon (the next launch starts clean) | write | ||
session.restore |
Session: restore .mnml/session.zon | write | ||
session.save |
Session: save the open panes, layout and history to .mnml/session.zon now | write |
zon
| id | title | effect | vim | standard |
|---|---|---|---|---|
zon.source |
ZON: back to the raw source of the tree | write | ||
zon.view |
ZON: view the file as a tree of fields (edit in place) | write |
help
| id | title | effect | vim | standard |
|---|---|---|---|---|
help.focus |
Info panel: take the keys — Tab walks its shortcut and link rows, Enter runs one, Esc goes back | view | space K |
shift+f1 |
help.pin_toggle |
Info panel: pin the entry it shows, so the pointer can go anywhere (again to unpin) | view | space t p |
ctrl+k shift+h |