By default sit goes into ~/.local/bin. If you run the installer as root it uses /usr/local/bin,
and on Windows it uses %LOCALAPPDATA%\Programs\sit. Want it somewhere else? Pass -dir <path>.
If that folder isn't on your PATH yet, the installer tells you how to add it.
On Linux, macOS or FreeBSD:
curl -fsSLo sit-install "https://github.com/Panonim/search-in-terminal/releases/latest/download/sit-install_$(uname -s | tr A-Z a-z)_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')"
chmod +x sit-install && ./sit-install && rm sit-installOn Windows, in PowerShell:
$arch = if ($env:PROCESSOR_ARCHITECTURE -eq 'ARM64') { 'arm64' } else { 'amd64' }
Invoke-WebRequest "https://github.com/Panonim/search-in-terminal/releases/latest/download/sit-install_windows_$arch.exe" -OutFile sit-install.exe
.\sit-install.exe; Remove-Item sit-install.exego run github.com/Panonim/search-in-terminal@latestYou'll need Go 1.26 or newer:
go install github.com/Panonim/search-in-terminal/cmd/sit@latestsit can update itself:
sit update --check # see if there's a newer release, without changing anything
sit update # download it, check it and swap in the new binaryIt needs to be able to write to the folder sit lives in. If you installed it somewhere owned by
root, run sudo sit update or just run the installer again.
sit # open the UI
sit bubble tea tutorial # open the UI with the query already running
sit search -n 5 "go generics"
sit search --json "ripgrep" | jq -r '.[].URL'
sit open "go module proxy" # open the first hit in your browser
sit '!gh bubbletea' # open a bang you added in the settings bangs card
sit backends # which backends are configured and ready
sit doctor # config, cache, graphics support and a live probe of each backend
sit search "5 km in mi" # instant answers: calculator, units and your pluginssource <(sit completion bash) # in ~/.bashrc
source <(sit completion zsh) # in ~/.zshrc, after compinit
sit completion fish > ~/.config/fish/completions/sit.fishKey bindings & commands
Defaults. Anything with a setting name can be rebound under [keys] in the config file.
| Key | Action | Setting |
|---|---|---|
| / | focus the search input | keys.focus |
| Enter | search, or open the selected result | keys.open |
| Tab / Shift+Tab | cycle backend and re-run the query | keys.next_backend, keys.prev_backend |
| j k / ↓ ↑ | move the selection | keys.down, keys.up |
| Ctrl+d / Ctrl+u | page through results | - |
| g / G | jump to first / last result | - |
| n / p | next / previous result page | keys.next_page, keys.prev_page |
| y | copy the selected URL to the clipboard | keys.copy |
| Ctrl+e / → | accept the autocomplete suggestion (Degoog) | - |
| r | retry the current search | - |
| , | open the settings panel | keys.settings |
| ? | toggle help | keys.help |
| q / Ctrl+c | quit | keys.quit |
Below the last result sits a load more results button: select it and press Enter, or click it, to append the next page. Results already on screen are skipped, so only new links are added. The next page is fetched in the background while you read, so it appears instantly (general.prefetch; never on the billed Brave and Kagi APIs).
Inside the settings panel:
| Key | Action |
|---|---|
| j k / ↑ ↓ | move between settings |
| h l / ← → | move to the neighbouring column |
| 1–9 | jump to a numbered section |
| Tab / Shift+Tab | jump to the next / previous section |
| Space | cycle a boolean or enum value |
| Enter | edit a text value, or toggle a boolean/enum |
| Ctrl+s or w | save to the config file |
| Ctrl+r | restore defaults (not saved until you save) |
| Esc / , | back to the results |
| Command | What it does |
|---|---|
sit |
open the search UI |
sit <query…> |
open the UI with a query already running |
sit search <query…> |
print results without the UI |
sit open <query…> |
open the first result in your browser |
sit suggest <query…> |
print autocomplete suggestions (Degoog instances) |
sit backends |
list backends and whether they are ready |
sit config <subcommand> |
inspect and change settings |
sit plugin <subcommand> |
add, list, remove and test instant-answer plugins (docs) |
sit completion <shell> |
print a bash, zsh or fish completion script |
sit update [--check] |
update sit to the latest release |
sit cache [info|clear] |
inspect or drop the favicon cache |
sit doctor |
check config, network and terminal support |
sit version |
print version, commit and build date |
sit help |
usage summary |
sit search flags:
| Flag | Meaning |
|---|---|
-b, --backend <name> |
ddg, degoog, searxng, brave, kagi or fanout |
-n, --limit <count> |
maximum results to print |
-p, --page <number> |
result page |
--json |
print JSON instead of text |
sit config subcommands:
| Command | What it does |
|---|---|
sit config show |
print the effective configuration |
sit config path |
print the config file path |
sit config init |
write a config file with the current settings |
sit config edit |
open the config file in $EDITOR |
sit config keys |
list every setting key |
sit config get <key> |
print one setting |
sit config set <key> <value> |
change one setting and save |
See docs/config.md for the config file, backend setup (Degoog, SearXNG, Brave, Kagi, DuckDuckGo, fanout), query syntax, bangs, themes and terminal graphics support, and docs/plugins.md for writing and installing plugins.
