Install qh and configure quick commands
Install the bundled CLI, edit shortcuts, and choose CLI updates.
Install and quick commands
Qesh 0.4.0 includes the Node.js qh command. The managed macOS installer bundles both Node and Bun:
curl -fsSL https://qentrah.com/qesh/install.sh -o /tmp/qesh-install.sh
sh /tmp/qesh-install.sh
~/.local/bin/qh help
~/.local/bin/qhThe installer downloads the native Apple Silicon or Intel release from GitHub, verifies SHA-256 and the app signature, and installs into a versioned local folder. It creates qh and qesh launchers in ~/.local/bin; add that folder to your shell PATH if necessary. It refuses to replace unrelated commands. QESH_BIN_DIR and QESH_INSTALL_DIR choose other destinations. The app is locally signed and not notarized.
qh config # Open the global configuration
qh config path # Print its path
qh config validate # Validate JSON and settings
qh update --check # Check Qesh releases
qh update # Update a managed install if a newer version exists
qh update-all --dry-run
qh update-all # Run only the updates you configured
qh workspace list # List saved workspace records
qh workspace Research # Open a named CLI workspacegh remains GitHub CLI. Qesh uses qh. For a source checkout, run ./bin/qh; update the checkout with Git rather than the managed installer. Node.js 22.13+ and Bun 1.3.5+ are required for source development. Packaged downloads supply their runtimes.
Custom commands and CLI updates
Add command objects to your global configuration. No CLI updates are enabled by default.
{
"commands": {
"dev": {
"command": "npm run dev",
"cwd": "~/Documents/my-project",
"description": "Start the development server"
}
},
"updates": {
"codex": { "command": "npm install -g @openai/codex" },
"claude": { "command": "npm install -g @anthropic-ai/claude-code" },
"opencode": { "command": "opencode upgrade" }
}
}Run qh dev to execute a configured command with your shell and permissions. Desktop Commands lists these shortcuts and starts the selected command in a new tab. Command names use lowercase letters, digits, and hyphens; built-in names are reserved. Custom command arguments belong in the JSON command string. qh update-all runs the configured list in order and stops on the first failure. It does not discover or change other installed CLIs. updateChannel accepts preview (default) or stable.
Source captured: 2026-10-13