get is a compact command-line binary tool that calls a Large Language Model (LLM) via natural language to generate shell commands, then executes them on your device to retrieve any information you need.
get is open-sourced under the AGPL-3.0 license on GitHub.
Usage examples:
get "IP address of this device"
get "code structure in the current directory"
get "latest get version at https://github.com/Water-Run/get"Download from GitHub Release. After extracting, run the bundled Python installation script get_ready.py to automatically complete installation and PATH configuration:
python get_ready.pyFollow the on-screen instructions. Once done, run get version to verify the installation.
After installation, run
get_ready.pyagain to uninstall.
Before use, you must configure at least the LLM-related parameters. get is compatible with the OpenAI API specification. Use the following commands to configure:
get set model your-model-name
get set url your-api-endpoint
get set key your-api-keyAfter configuration, run get isok to verify.
To clear a configuration value, leave the value empty. For example, to clear the key:
get set keyUsage is straightforward:
get "your question"
getis designed to perform read-only operations only. Every generated command goes through multiple layers of security validation before execution (built-in dangerous command regex blocking, plus optional double-check and manual confirmation).
Integer options accept false to disable the feature entirely (equivalent to 0).
| Option | Description | Value Type | Default |
|---|---|---|---|
key |
LLM API key | String | Empty |
url |
LLM API endpoint URL | String (URL) | https://api.poe.com/v1 |
model |
LLM model name | String | gpt-5.3-codex |
manual-confirm |
Require manual confirmation before execution | true / false |
false |
double-check |
Enable secondary safety review of commands | true / false |
true |
instance |
Use single-call fast mode | true / false |
false |
timeout |
Timeout per API request | Positive integer (s) / false |
300 |
max-token |
Maximum token consumption per request | Positive integer / false |
20480 |
max-rounds |
Maximum loop rounds in agent mode | Positive integer / false |
3 |
command-pattern |
Regex pattern to block commands | Regex string | Built-in blocklist (omit value to restore; "" to disable) |
system-prompt |
Custom system prompt | String | Empty |
shell |
Shell used to execute commands | String | Windows: powershell; Linux: bash |
log |
Log each request and execution | true / false |
true |
hide-process |
Hide intermediate steps | true / false |
false |
cache |
Enable response caching | true / false |
true |
cache-expiry |
Cache entry expiry in days | Positive integer (days) / false |
30 |
cache-max-entries |
Maximum number of cache entries to retain | Positive integer / false |
1000 |
log-max-entries |
Maximum number of log entries to retain | Positive integer / false |
1000 |
vivid |
Enable vivid output mode (colors & animations) | true / false |
true |
external-display |
Use bat/mdcat for rendering | true / false |
true |
Examples of disabling integer options:
get set timeout false
get set cache-expiry false
get set log-max-entries falseThe following flags can override persistent configuration for a single query, placed after the query string:
| Flag | Description |
|---|---|
--no-cache |
Bypass cache for this query |
--cache |
Force cache use for this query |
--manual-confirm |
Require confirmation before execution |
--no-manual-confirm |
Skip confirmation prompt |
--double-check |
Enable secondary safety review |
--no-double-check |
Skip secondary safety review |
--instance |
Fast single-call mode |
--no-instance |
Multi-round agent mode |
--hide-process |
Hide intermediate process output |
--no-hide-process |
Show intermediate process output |
--vivid |
Enable vivid output mode |
--no-vivid |
Use plain text output mode |
--model <name> |
Override the LLM model for this query |
--timeout <seconds> |
Override the request timeout this query |
Examples:
get "disk usage" --no-cache
get "list files" --model gpt-5.3-codex --vividThe config command is used to inspect the current configuration.
get config # Show all current configuration
get config --reset # Reset all configuration to defaults
get config --<option> # Show the current value of a single option--<option> accepts all option names from the set table above. get config --key shows whether a key is configured. The stored value is encrypted and cannot be retrieved. Disabled integer options display false.
get config --command-pattern # View active pattern (full regex when default)
get set command-pattern # Restore built-in default
get set command-pattern "" # Disable pattern filteringget uses a deferred-decision caching mechanism. Queries are not cached on first execution. Only when a query is repeated (or --cache is explicitly passed) does get invoke the LLM to determine the optimal caching strategy. During this decision step, get shows checking whether to cache... as progress text (when process output is not hidden). Five strategies are supported: GLOBAL_COMMAND (cache the command globally, re-execute on hit), GLOBAL_RESULT (cache the output globally, return directly), CONTEXT_COMMAND (cache the command for the current directory context, re-execute on hit), CONTEXT_RESULT (cache the output for the current directory context, return directly), or NOCACHE (do not cache).
Global entries work across any working directory; context entries are tied to the directory where the query was originally executed.
When hide-process is enabled, get suppresses its own intermediate progress and warning text (including cache checks and external-display checks), and only prints the final result or required errors.
When config cache is false, get emits a warning in normal process mode: warning: cache is disabled in config; all cache logic is bypassed.
get cache # Show cache status
get cache --clean # Clear all cache entries and seen records
get cache --unset "system version" # Remove cache entries matching the query
get set cache false # Disable caching (disables all cache logic)get records each query execution to a local file. When the number of entries exceeds the log-max-entries limit, the oldest entries are automatically removed.
get log # Show log status
get log --clean # Clear all log entries
get set log false # Disable loggingget get # Show basic information about get (name, version, author, ...)
get get --intro # Show introduction
get get --version # Show version (equivalent to get version)
get get --license # Show license identifier
get get --github # Show GitHub link
get isok # Verify that the current configuration is usable
get help # Show usage help- Config file: Linux
~/.config/get/config.json/ Windows%APPDATA%/get/config.json - API key: Linux
~/.config/get/key(permissions 0600) / Windows%APPDATA%/get/key(DPAPI encrypted) - Execution log: Linux
~/.config/get/get.log/ Windows%APPDATA%/get/get.log - Response cache: Linux
~/.config/get/cache.json/ Windows%APPDATA%/get/cache.json - Built-in tools:
<executable>/bin/or<executable>/src/bin/
0: Completed successfully1: Configuration error, LLM communication failure, security check rejection, or general error130: Interrupted by Ctrl+C (SIGINT)N: When a generated command exits with a non-zero code, that exit code is passed through asget's exit code