Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/javierpr0/Notchly/llms.txt

Use this file to discover all available pages before exploring further.

The command palette (Cmd+P) is a per-directory command launcher. Every command you type in the terminal is recorded automatically, and you can search and re-run any of them from a floating overlay without retyping. The palette is scoped to the project root of the current tab — not the shell’s current working directory after a cd — so your full command history for a project is always reachable regardless of which subdirectory you are in.

Opening the palette

Press Cmd+P anywhere inside the Notchly panel to open the command palette overlay. A search field gets focus immediately and the full command list for the current project directory is shown below it. Press Escape at any time to dismiss without running anything.
The palette is scoped to the current tab’s project root, not the shell’s active directory. Commands recorded in any subdirectory of ~/projects/my-app are all stored and shown under the my-app root entry.

How commands are stored

Notchly maintains a separate command list for every directory you work in. The store is backed by JSON files on disk, so commands survive app restarts and are ready the moment you open a project.
Commands are written to ~/.notchly/commands/ — one JSON file per directory. The filename is the SHA-256 hash of the directory’s canonical path, which prevents collisions from symlinks or path aliases. Each file is created with 0600 permissions so only your user account can read it. The parent directory is created with 0700 permissions on first use.
Every command you run in the terminal is recorded automatically with a run count and a last-used timestamp. If you run the same command again, its count increments and its timestamp updates — so frequently-used commands naturally float to the top.
Each directory stores up to 500 commands. When that limit is reached, the least-used (lowest count, oldest last-used) entries are trimmed first. Up to 32 directories are held in memory at once using LRU eviction — accessing a directory promotes it to the front of the cache.
When you open a project directory for the first time, Notchly reads ~/.zsh_history and imports up to 500 unique, non-trivial commands as starting suggestions. The import runs at most once per process (the result is cached in memory), and it happens on a background thread so it never blocks the UI.Trivial single-word commands (ls, cd, pwd, clear, exit) are skipped during import.
If a directory has no saved commands yet, approximately 450 built-in defaults are seeded as a starting set. These cover git, npm, yarn, pnpm, bun, Python, Docker, Kubernetes, Terraform, AWS CLI, Homebrew, and the full suite of claude CLI flags — so autocomplete and the palette are useful from the very first keystroke even in a brand-new project.

Searching and running

Type any substring to filter the list. The palette combines prefix matching and fuzzy matching, then ranks results by a combination of run count (frequency) and last-used date (recency). Prefix matches always appear above fuzzy matches; within each group, the most-used command wins ties.
1

Open the palette

Press Cmd+P. The overlay appears with focus in the search field.
2

Search

Start typing. Matched characters are highlighted in blue. Use the Up and Down arrow keys to move the selection — the list scrolls to keep the selected row visible.
3

Run

Press Enter to send the selected command to the active terminal pane. The command is also recorded (or its count incremented) at that moment.
4

Type a new command

If your search text doesn’t match anything, pressing Enter runs the literal text you typed and adds it to the store as a new command.
You can also single-click any row in the list to select it, then press Enter, or double-click a row to run it immediately.

Deleting a command

Right-click any row in the list and choose Delete Command to remove it from the store for that directory. The deletion takes effect immediately and is written to disk.

Persistence

The command store is written to disk synchronously on the serial queue every time a command is recorded or deleted — not debounced or deferred. This means commands are never lost even if Notchly quits unexpectedly. The store is additionally flushed on app quit (NSApplication.willTerminateNotification) and when Notchly loses focus (NSApplication.willResignActiveNotification) as a belt-and-braces measure.

Relationship to autocomplete

The command palette and the inline ghost-text autocomplete share the same CommandStore backing store. A command recorded from the terminal appears in both the palette and as an autocomplete suggestion on the very next keystroke. There is no separate history to manage.

Build docs developers (and LLMs) love