{"id":48834863,"url":"https://github.com/water-run/get","last_synced_at":"2026-06-07T05:01:02.950Z","repository":{"id":351024272,"uuid":"1206757204","full_name":"Water-Run/get","owner":"Water-Run","description":"get -- get anything from your computer","archived":false,"fork":false,"pushed_at":"2026-04-14T08:07:00.000Z","size":38902,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T23:03:08.465Z","etag":null,"topics":["ai","automation","cli","code-search","command-line-tool","developer-tools","local-tools","natural-language","nim","openai-compatible","productivity","read-only"],"latest_commit_sha":null,"homepage":"","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Water-Run.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-10T08:19:11.000Z","updated_at":"2026-04-15T22:28:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"7f3059a2-b01d-4ac0-9567-9644998954bb","html_url":"https://github.com/Water-Run/get","commit_stats":null,"previous_names":["water-run/get"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Water-Run/get","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Water-Run%2Fget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Water-Run%2Fget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Water-Run%2Fget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Water-Run%2Fget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Water-Run","download_url":"https://codeload.github.com/Water-Run/get/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Water-Run%2Fget/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31909235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","automation","cli","code-search","command-line-tool","developer-tools","local-tools","natural-language","nim","openai-compatible","productivity","read-only"],"created_at":"2026-04-14T22:30:42.786Z","updated_at":"2026-04-17T00:01:19.314Z","avatar_url":"https://github.com/Water-Run.png","language":"Nim","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `get` -- get anything from your computer\n\n`get` is a small, simple binary tool that allows you to use natural language to invoke a large language model to generate commands, and attempt to retrieve any information you need from your device.\n`get` is open-sourced on [GitHub](https://github.com/Water-Run/get) under the `AGPL-3.0` license.\n\nExamples:\n\n```bash\nget \"system version\"\nget \"code in the directory\"\nget \"the latest get version at https://github.com/Water-Run/get\"\n```\n\nDownload: [GitHub Release](https://github.com/Water-Run/get/releases)\n\nAfter downloading, place the `get` executable alongside the bundled `bin/` directory (which contains `rg`, `fd`, `sg`, `pmc`, `tree`/`treepp`, `tokei`, `lua`, and others). You can then use `get version` to verify the installation and `get help` to get help.\n\n\u003e A lightweight edition of `get` is also available without the bundled `bin/` directory. In that case only system-installed tools are available to generated commands.\n\n## Prerequisites\n\nBefore getting started, you need to configure at least your large language model settings. `get` is compatible with the OpenAI API specification.\nUse the following commands to configure:\n\n```bash\nget set model your-model-name\nget set url your-url\nget set key your-key\n```\n\nOnce done, you can run `get isok` to verify.\nTo unset a configuration item, simply leave the value empty (i.e., omit the \"your-\" part above). For example, the following command unsets the Key:\n\n```bash\nget set key\n```\n\n### Model Strength Requirement\n\n`get` executes shell commands generated by the LLM on your device. A sufficiently capable model is the foundation of safety. At startup, `get` checks the configured model name against a built-in whitelist of known high-performance models and displays a warning if the model is not recognized.\n\nKnown strong models include: GPT 5+ (including CodeX variants), Claude Opus/Sonnet 3.5+, Claude 3.7+ (by version), Gemini 3+, Grok 4+, GLM 4.7+, MiniMax 2.7+, DeepSeek (full versions), and OpenAI o-series 3+. Reduced-capability variants (Mini, Nano, Lite, Haiku, Flash, etc.) and unsupported families trigger the warning. The warning is advisory and does not block execution.\n\nModel names are normalised before comparison — case differences and underscores vs hyphens are handled transparently (`Claude_Opus_4.6` and `claude-opus-4.6` are equivalent).\n\n### System Requirements\n\n`get` requires a 64-bit platform running Windows 10+ or Linux with kernel 6.0+. A startup warning is shown if the runtime environment does not meet these requirements.\n\n### Static Builds\n\nTo produce a fully statically linked binary (no dynamic library dependencies), build with the `staticBuild` flag. This requires static OpenSSL libraries to be available on the system:\n\n```bash\nnim c -d:release -d:staticBuild src/get.nim\n```\n\n## Getting Started\n\nUsage is very straightforward:\n\n```bash\nget \"your query\"\n```\n\n`get` is designed to perform read-only operations only. The LLM is prompted with strict read-only constraints, and every generated command undergoes:\n\n1. **Dangerous-command check** — a built-in safety check rejects commands containing known destructive operations (rm, del, mv, cp, mkdir, kill, shutdown, etc.) before they can execute.\n2. **Double-check** (default: enabled) — a second LLM safety review of the generated command.\n3. **Command-pattern validation** — optional regex matching via `command-pattern`.\n4. **Manual confirmation** — optional interactive y/N prompt via `manual-confirm`.\n\n### Output Mode\n\nBy default, `get` instructs the LLM to indicate whether the command output is self-explanatory (`DIRECT`) or requires interpretation (`INTERPRET`). Most queries produce direct output — the raw command result is shown without an additional LLM call. Only when the output needs summarisation or analysis does `get` invoke the LLM again. In `instance` mode, output is always shown directly.\n\n### Bundled Tools\n\n`get` ships with several high-performance command-line tools in the `bin/` directory. These tools are automatically available to generated commands:\n\n| Tool                            | Description                                              |\n|---------------------------------|----------------------------------------------------------|\n| `rg`                            | ripgrep — ultra-fast regex search in files               |\n| `fd`                            | Fast file/directory finder                               |\n| `sg`                            | ast-grep — AST-level structural code search              |\n| `pmc`                           | pack-my-code — code context packaging for LLM prompts    |\n| `treepp` (Win) / `tree` (Linux) | tree++ (Win) / classic Unix tree (Linux) — directory tree |\n| `tokei`                         | Code statistics (lines of code by language)              |\n| `lua`                           | Lua 5.x interpreter for calculations and text processing |\n\nThe LLM is made aware of these tools and will prefer them when they fit the task. Write-mode flags on bundled tools (e.g. `pmc -o`, `treepp /O`) are explicitly forbidden in the prompt.\n\n### Output Style\n\n`get` supports three output styles, configured via `get set style \u003cmode\u003e`:\n\n| Style   | Description                                                    |\n|---------|----------------------------------------------------------------|\n| `simp`  | Plain text, no formatting. Sections separated by blank lines.  |\n| `std`   | Dividers and basic ANSI colours (default).                     |\n| `vivid` | Animated spinners, bold colours, Markdown rendering via mdcat. |\n\n**vivid** mode is experimental. It requires the bundled `mdcat` binary for Markdown rendering; if unavailable, a warning is shown suggesting `get set style std`. An experimental notice is displayed on each invocation.\n\n### Skipping the Cache\n\nBy default, `get` caches results so that repeated identical queries in the same context return instantly without making any API calls. Before caching a result, `get` asks the LLM whether the output is stable enough to cache; volatile results (e.g. live metrics, current time) are not cached. To bypass the cache for a single query, use the `--no-cache` flag:\n\n```bash\nget \"your query\" --no-cache\n```\n\n## `set` Options Reference\n\nThe full list of `set` options is shown in the table below. Integer options accept `false` to disable the feature entirely (equivalent to setting the value to 0).\n\n| Option              | Description                                                                                      | Value                                | Default                              |\n|---------------------|--------------------------------------------------------------------------------------------------|--------------------------------------|--------------------------------------|\n| `key`               | LLM API key                                                                                      | String                               | Empty                                |\n| `url`               | LLM API endpoint URL                                                                             | String (URL)                         | `https://api.poe.com/v1`             |\n| `model`             | LLM model name                                                                                   | String                               | `gpt-5.3-codex`                      |\n| `manual-confirm`    | Whether to require manual confirmation before executing generated commands                       | `true` / `false`                     | `false`                              |\n| `double-check`      | Whether to invoke the model for a second safety review of the generated command                  | `true` / `false`                     | `true`                               |\n| `instance`          | Whether to ask the model to reply as quickly as possible                                         | `true` / `false`                     | `false`                              |\n| `timeout`           | Timeout for a single API request                                                                 | Positive integer (seconds) / `false` | `300`                                |\n| `max-token`         | Maximum token consumption per request                                                            | Positive integer / `false`           | `20480`                              |\n| `command-pattern`   | Regex pattern to match against the generated command; execution is rejected if it does not match | Regex string                         | Empty (no matching)                  |\n| `system-prompt`     | System prompt used to constrain model behavior, declare available tool calls, etc.               | String                               | Empty                                |\n| `shell`             | The shell used to execute commands                                                               | String (shell path or name)          | Windows: `powershell`; Linux: `bash` |\n| `log`               | Whether to log each request and execution                                                        | `true` / `false`                     | `true`                               |\n| `hide-process`      | Whether to hide intermediate steps and only output the final result                              | `true` / `false`                     | `false`                              |\n| `cache`             | Whether to enable response caching                                                               | `true` / `false`                     | `true`                               |\n| `cache-expiry`      | Number of days before a cache entry expires                                                      | Positive integer (days) / `false`    | `30`                                 |\n| `cache-max-entries` | Maximum number of entries retained in the cache                                                  | Positive integer / `false`           | `1000`                               |\n| `log-max-entries`   | Maximum number of entries retained in the log                                                    | Positive integer / `false`           | `1000`                               |\n| `style`             | Output style                                                                                     | `simp` / `std` / `vivid`            | `std`                                |\n\nExamples of disabling integer options:\n\n```bash\nget set timeout false        # no request timeout\nget set max-token false      # let the API decide token limit\nget set cache-expiry false   # cached entries never expire\nget set cache-max-entries false  # no limit on cache size\nget set log-max-entries false    # no limit on log entries\n```\n\n### Dangerous Command Safety Check\n\n`get` includes a built-in safety check that rejects commands containing known destructive operations before execution. This check runs independently of any `command-pattern` configuration.\n\nBlocked commands include: `rm`, `rmdir`, `del`, `mv`, `move`, `cp`, `copy`, `mkdir`, `touch`, `chmod`, `chown`, `mkfs`, `dd`, `format`, `fdisk`, `kill`, `killall`, `pkill`, `shutdown`, `reboot`, `halt`, `poweroff`, `passwd`, `useradd`, `userdel`, `Set-Content`, `New-Item`, `Remove-Item`, `Move-Item`, and others.\n\nWhen setting a custom `command-pattern`, `get` checks whether the pattern would allow any of these dangerous commands and displays a warning if so.\n\n## Cache Management\n\n`get` caches the final output of each query keyed by a hash of the query text and execution context (working directory, shell, model, instance mode, system prompt, and command pattern). When the same query is run under the same context, the cached result is returned immediately.\n\nBefore storing a new cache entry, `get` sends a lightweight LLM request to determine whether the result is stable (cacheable) or volatile (not cacheable). Volatile results — such as current time, CPU usage, or running processes — are not cached even when caching is enabled.\n\n### Viewing Cache Status\n\n```bash\nget cache\n```\n\nDisplays whether caching is enabled, the number of cached entries, configured limits, and the cache file location.\n\n### Clearing All Cache\n\n```bash\nget cache --clean\n```\n\nRemoves every entry from the cache.\n\n### Removing a Specific Cached Query\n\n```bash\nget cache --unset \"system version\"\n```\n\nRemoves all cache entries whose query text matches the given string (case-insensitive).\n\n### Disabling the Cache\n\n```bash\nget set cache false\n```\n\nWhen disabled, no cache lookups or writes are performed. Existing cache entries are preserved on disk until explicitly cleaned.\n\n### Tuning Cache Parameters\n\n```bash\nget set cache-expiry 7\nget set cache-max-entries 500\nget set cache-expiry false      # entries never expire\nget set cache-max-entries false  # unlimited entries\n```\n\n## Log Management\n\n`get` logs each query execution (query text, generated command, exit code, and output preview) to a local file. When the entry count exceeds the `log-max-entries` limit (unless disabled with `false`), the oldest entries are automatically removed.\n\n### Viewing Log Status\n\n```bash\nget log\n```\n\nDisplays whether logging is enabled, the configured maximum entries, entry count, file location, and file size.\n\n### Clearing the Log\n\n```bash\nget log --clean\n```\n\nRemoves all entries from the log file.\n\n### Tuning Log Parameters\n\n```bash\nget set log-max-entries 500\nget set log-max-entries false  # unlimited log entries\n```\n\n### Disabling Logging\n\n```bash\nget set log false\n```\n\nWhen disabled, no log writes are performed. Existing log content is preserved until explicitly cleaned.\n\n## `config` Command Reference\n\n- `get config`: Display the current configuration (all options).\n- `get config --reset`: Reset all configuration to default values.\n- `get config --\u003coption\u003e`: Display the current value of a single option.\n\nThe `--\u003coption\u003e` flag accepts every option name from the `set` table above. Examples:\n\n```bash\nget config --key\nget config --url\nget config --model\nget config --manual-confirm\nget config --double-check\nget config --instance\nget config --timeout\nget config --max-token\nget config --command-pattern\nget config --system-prompt\nget config --shell\nget config --log\nget config --hide-process\nget config --cache\nget config --cache-expiry\nget config --cache-max-entries\nget config --log-max-entries\nget config --style\n```\n\nNote: `get config --key` displays the key status (set/not set) with the value masked for security. Disabled integer options display `false`.\n\n## Other Command Reference\n\n- `get get`: Return basic information for `get`\n- `get get --intro`: Return introduction for `get`\n- `get get --version`: Return version for `get` (equivalent to `get version`)\n- `get get --license`: Return the LICENSE for `get`\n- `get get --github`: Return the GitHub link for `get`\n- `get version`: Return version for `get`\n- `get isok`: Verify whether current configuration is ready to use (checks key, url, model, and sends a probe request)\n- `get help`: Display usage help\n- `get log`: Display log status\n- `get log --clean`: Clear all log entries\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwater-run%2Fget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwater-run%2Fget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwater-run%2Fget/lists"}