{"id":40003067,"url":"https://github.com/deltik/shell-ai","last_synced_at":"2026-01-19T02:02:37.507Z","repository":{"id":329259170,"uuid":"1116779003","full_name":"Deltik/shell-ai","owner":"Deltik","description":"Describe tasks. Get shell commands. Explain confusing ones. Rust CLI, multiple AI providers, any language.","archived":false,"fork":false,"pushed_at":"2026-01-11T01:54:55.000Z","size":1480,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-11T06:36:13.055Z","etag":null,"topics":["automation","cli","gpt","llm","openai","shell"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/shell-ai","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Deltik.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2025-12-15T11:18:15.000Z","updated_at":"2026-01-11T01:54:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Deltik/shell-ai","commit_stats":null,"previous_names":["deltik/shell-ai"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/Deltik/shell-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deltik%2Fshell-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deltik%2Fshell-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deltik%2Fshell-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deltik%2Fshell-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Deltik","download_url":"https://codeload.github.com/Deltik/shell-ai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Deltik%2Fshell-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28557784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T00:46:33.223Z","status":"online","status_checked_at":"2026-01-19T02:00:08.049Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["automation","cli","gpt","llm","openai","shell"],"created_at":"2026-01-19T02:02:26.737Z","updated_at":"2026-01-19T02:02:37.502Z","avatar_url":"https://github.com/Deltik.png","language":"Rust","funding_links":["https://ko-fi.com/Deltik"],"categories":[],"sub_categories":[],"readme":"# Shell-AI\n\n[![GitHub release](https://img.shields.io/github/v/release/Deltik/shell-ai?logo=github\u0026label=GitHub)](https://github.com/Deltik/shell-ai/releases)\n[![Crates.io](https://img.shields.io/crates/v/shell-ai?logo=rust\u0026label=crates.io)](https://crates.io/crates/shell-ai)\n[![GitHub downloads](https://img.shields.io/github/downloads/Deltik/shell-ai/total?logo=github\u0026label=downloads)](https://github.com/Deltik/shell-ai/releases)\n[![Crates.io downloads](https://img.shields.io/crates/d/shell-ai?logo=rust\u0026label=downloads)](https://crates.io/crates/shell-ai)\n[![Build status](https://img.shields.io/github/actions/workflow/status/Deltik/shell-ai/build.yaml?logo=github\u0026label=build)](https://github.com/Deltik/shell-ai/actions/workflows/build.yaml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-FF5E5B?logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/Deltik)\n\nDescribe what you want. Get shell commands. Or explain commands you don't understand.\n\n## What It Does\n\n**Suggest** (**`shell-ai suggest`** or **`shai`**) turns natural language into executable shell commands. Describe what you want in any language, and Shell-AI generates options you can run, copy, or refine.\n\n**Explain** (**`shell-ai explain`**) breaks down shell commands into understandable parts, citing relevant man pages where possible. Useful for understanding unfamiliar commands or documenting scripts.\n\n## Quick Start\n\n```bash\n# Install\ncargo install shell-ai\nln -v -s shell-ai ~/.cargo/bin/shai  # Optional: shorthand alias for `shell-ai suggest`\n\n# Configure\nexport SHAI_API_PROVIDER=openai\nexport OPENAI_API_KEY=sk-...\n\n# Generate commands from natural language\nshai \"ファイルを日付順に並べる\"  # Japanese: sort files by date\n\n# Explain an existing command\nshell-ai explain \"tar -czvf archive.tar.gz /path/to/dir\"\n```\n\nFor guided configuration, run `shell-ai config init` to generate a documented config file.\n\n## Installation\n\n_After installing, [configure](#configuration) your AI provider. Then, consider adding [shell integrations](#shell-integration) for optional workflow enhancements._\n\n### From GitHub Releases\n\nDownload prebuilt binaries from the [Releases page](https://github.com/Deltik/shell-ai/releases).\n\n### From crates.io\n\n```bash\ncargo install shell-ai\nln -v -s shell-ai ~/.cargo/bin/shai\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/Deltik/shell-ai\ncd shell-ai\ncargo install --path .\n# Installs to ~/.cargo/bin/shell-ai\nln -v -s shell-ai ~/.cargo/bin/shai\n```\n\n## Features\n\n- **Single binary**: No Python, no runtime dependencies. Just one executable.\n- **Shell integration**: Tab completions, aliases, and Ctrl+G keybinding via `shell-ai integration generate`.\n- **Multilingual**: Describe tasks in any language the AI model understands. Responses adapt to your system locale.\n- **Explain from `man`**: `shell-ai explain` includes grounding from man pages, not just AI knowledge.\n- **Multiple providers**: OpenAI, Azure OpenAI, Groq, Ollama (local), and Mistral.\n- **Interactive workflow**: Select a suggestion, then explain it, execute it, copy it, or revise it.\n- **Vim-style navigation**: j/k keys, number shortcuts (1-9), arrow keys.\n- **Scriptable**: `--frontend=noninteractive` and `--output-format=json` for automation. Pipe commands to `shell-ai explain` via stdin.\n- **Configuration introspection**: `shell-ai config` shows current settings and their sources.\n\nRun `shell-ai --help` for all options, or `shell-ai config schema` for the full configuration reference.\n\n## Showcase\n\n### Suggest: XKCD #1168 (tar)\n\n| [![I don't know what's worse--the fact that after 15 years of using tar I still can't keep the flags straight, or that after 15 years of technological advancement I'm still mucking with tar flags that were 15 years old when I started.](https://imgs.xkcd.com/comics/tar.png)](https://xkcd.com/1168/) |\n|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|\n|                                                                                        [![shell-ai suggest -- any valid tar command to disarm the bomb](docs/images/suggest-tar.gif)](docs/images/suggest-tar.gif)                                                                                         |\n\n### Explain: XKCD #1654 (Universal Install Script)\n\n|                                                                                        [![The failures usually don't hurt anything, and if it installs several versions, it increases the chance that one of them is right. (Note: The 'yes' command and '2\u003e/dev/null' are recommended additions.)](https://imgs.xkcd.com/comics/universal_install_script.png)](https://xkcd.com/1654/)                                                                                        |\n|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|\n| [![printf '#!/bin/bash\\n\\npip install \"$1\" \u0026\\neasy_install \"$1\" \u0026\\nbrew install \"$1\" \u0026\\nnpm install \"$1\" \u0026\\nyum install \"$1\" \u0026 dnf install \"$1\" \u0026\\ndocker run \"$1\" \u0026\\npkg install \"$1\" \u0026\\napt-get install \"$1\" \u0026\\nsudo apt-get install \"$1\" \u0026\\nsteamcmd +app_update \"$1\" validate \u0026\\ngit clone https://github.com/\"$1\"/\"$1\" \u0026\\ncd \"$1\";./configure;make;make install \u0026\\ncurl \"$1\" \\| bash \u0026' \\| shell-ai explain](docs/images/explain-1654.png)](docs/images/explain-1654.png) |\n\n### Multilingual\n\n| Suggest in Danish (Foreslå på dansk)                                                                                                                     | Explain in French (Expliquer en français)                                                                                                             |\n|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [![shai Oversæt rødgrød med fløde til engelsk med Ollama API og model gemma3:27b-cloud](docs/images/suggest-danish.gif)](docs/images/suggest-danish.gif) | [![shell-ai --locale fr_FR explain -- 'sudo !!'](docs/images/explain-french-sudo-last-command.png)](docs/images/explain-french-sudo-last-command.png) |\n\n### Challenging Tasks\n\n| Suggest                                                                           | Explain                                                                             |\n|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| [![shell-ai suggest](docs/images/suggest-perl.gif)](docs/images/suggest-perl.gif) | [![shell-ai explain](docs/images/explain-rsync.png)](docs/images/explain-rsync.png) |\n\n### JSON Output for Scripting\n\n[![shell-ai --frontend=noninteractive --output-format=json explain -- ls -lhtr | jq '.'](docs/images/explain-ls-lhtr.png)](docs/images/explain-ls-lhtr.png)\n\n### Configuration Introspection\n\n[![SHAI_SKIP_CONFIRM=true shell-ai config](docs/images/config.png)](docs/images/config.png)\n\n## Configuration\n\nShell-AI loads configuration from multiple sources (highest priority first):\n\n1. CLI flags (`--provider`, `--model`, etc.)\n2. Environment variables (`SHAI_API_PROVIDER`, `OPENAI_API_KEY`, etc.)\n3. Config file (see paths below)\n4. Built-in defaults\n\nConfig file locations:\n- **Linux**: `~/.config/shell-ai/config.toml`\n- **macOS**: `~/Library/Application Support/shell-ai/config.toml`\n- **Windows**: `%APPDATA%\\shell-ai\\config.toml`\n\nGenerate a documented config template:\n\n```bash\nshell-ai config init\n```\n\nExample config:\n\n```toml\nprovider = \"openai\"\n\n[openai]\napi_key = \"sk-...\"\nmodel = \"gpt-4o\"\n```\n\n### Providers\n\nSet the provider in your config file (`~/.config/shell-ai/config.toml` on Linux, `~/Library/Application Support/shell-ai/config.toml` on macOS, `%APPDATA%\\shell-ai\\config.toml` on Windows). The provider-specific settings go in a section named after the provider.\n\n```toml\nprovider = \"openai\"  # or: groq, azure, ollama, mistral\n```\n\nShell-AI may alternatively be configured by environment variables, which override the config file:\n\n\u003cdetails\u003e\n\u003csummary\u003eEnvironment variables\u003c/summary\u003e\n\n```bash\nexport SHAI_API_PROVIDER=openai  # or: groq, azure, ollama, mistral\n```\n\n\u003c/details\u003e\n\n#### OpenAI\n\nWorks with OpenAI and any OpenAI-compatible API (e.g., DeepSeek).\n\n\u003cdetails\u003e\n\u003csummary\u003eTOML config\u003c/summary\u003e\n\n```toml\n[openai]\napi_key = \"sk-...\"  # REQUIRED\n# api_base = \"https://api.openai.com\"  # change for compatible APIs\n# model = \"gpt-5\"\n# max_tokens = \"\"\n# organization = \"\"  # for multi-org accounts\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eEnvironment variables\u003c/summary\u003e\n\n```bash\nexport OPENAI_API_KEY=sk-...  # REQUIRED\n# export OPENAI_API_BASE=https://api.openai.com\n# export OPENAI_MODEL=gpt-5\n# export OPENAI_MAX_TOKENS=\n# export OPENAI_ORGANIZATION=\n```\n\n\u003c/details\u003e\n\n#### Groq\n\n\u003cdetails\u003e\n\u003csummary\u003eTOML config\u003c/summary\u003e\n\n```toml\n[groq]\napi_key = \"gsk_...\"  # REQUIRED\n# api_base = \"https://api.groq.com/openai\"\n# model = \"openai/gpt-oss-120b\"\n# max_tokens = \"\"\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eEnvironment variables\u003c/summary\u003e\n\n```bash\nexport GROQ_API_KEY=gsk_...  # REQUIRED\n# export GROQ_MODEL=openai/gpt-oss-120b\n# export GROQ_MAX_TOKENS=\n```\n\n\u003c/details\u003e\n\n#### Azure OpenAI\n\n\u003cdetails\u003e\n\u003csummary\u003eTOML config\u003c/summary\u003e\n\n```toml\n[azure]\napi_key = \"your-key\"  # REQUIRED\napi_base = \"https://your-resource.openai.azure.com\"  # REQUIRED\ndeployment_name = \"your-deployment\"  # REQUIRED\n# api_version = \"2023-05-15\"\n# max_tokens = \"\"\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eEnvironment variables\u003c/summary\u003e\n\n```bash\nexport AZURE_API_KEY=your-key  # REQUIRED\nexport AZURE_API_BASE=https://your-resource.openai.azure.com  # REQUIRED\nexport AZURE_DEPLOYMENT_NAME=your-deployment  # REQUIRED\n# export OPENAI_API_VERSION=2023-05-15\n# export AZURE_MAX_TOKENS=\n```\n\n\u003c/details\u003e\n\n#### Ollama\n\nNo API key required for local Ollama.\n\n\u003cdetails\u003e\n\u003csummary\u003eTOML config\u003c/summary\u003e\n\n```toml\n[ollama]\n# api_base = \"http://localhost:11434\"\n# model = \"gpt-oss:120b-cloud\"\n# max_tokens = \"\"\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eEnvironment variables\u003c/summary\u003e\n\n```bash\n# export OLLAMA_API_BASE=http://localhost:11434\n# export OLLAMA_MODEL=gpt-oss:120b-cloud\n# export OLLAMA_MAX_TOKENS=\n```\n\n\u003c/details\u003e\n\n#### Mistral\n\n\u003cdetails\u003e\n\u003csummary\u003eTOML config\u003c/summary\u003e\n\n```toml\n[mistral]\napi_key = \"your-key\"  # REQUIRED\n# api_base = \"https://api.mistral.ai\"\n# model = \"codestral-2508\"\n# max_tokens = \"\"\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eEnvironment variables\u003c/summary\u003e\n\n```bash\nexport MISTRAL_API_KEY=your-key  # REQUIRED\n# export MISTRAL_API_BASE=https://api.mistral.ai\n# export MISTRAL_MODEL=codestral-2508\n# export MISTRAL_MAX_TOKENS=\n```\n\n\u003c/details\u003e\n\n## Shell Integration\n\nShell-AI works well standalone, but integrating it into your shell enables any or all of these streamlined workflows:\n\n- **Tab completion** for shell-ai commands\n- **Aliases** as shorthands for shell-ai commands:\n  - **`??`** alias for `shell-ai suggest --`\n  - **`explain`** alias for `shell-ai explain --`\n- **Ctrl+G** keybinding to transform the current line into a shell command\n\n### Setup\n\nGenerate an integration file for your shell:\n\n```bash\n# Generate with default features (completions + aliases)\nshell-ai integration generate bash\n\n# Or with all features including Ctrl+G keybinding\nshell-ai integration generate bash --preset full\n```\n\nThen add the source line to your shell config as instructed.\n\n**Available presets:**\n\n| Feature                         | `minimal` | `standard` | `full` |\n|---------------------------------|:---------:|:----------:|:------:|\n| Tab completions                 |     ✓     |     ✓      |   ✓    |\n| Aliases (`??`, `explain`)       |           |     ✓      |   ✓    |\n| Ctrl+G keybinding for `suggest` |           |            |   ✓    |\n\nDefault: `standard`\n\n**Customization examples:**\n\n```bash\n# Standard preset plus keybinding\nshell-ai integration generate zsh --preset standard --add keybinding\n\n# Full preset without aliases\nshell-ai integration generate fish --preset full --remove aliases\n\n# Update all installed integrations after upgrading shell-ai\nshell-ai integration update\n\n# View available features and installed integrations\nshell-ai integration list\n```\n\n**Alternative: eval on startup (not recommended)**\n\nInstead of generating a static file, you can eval the integration directly in your shell config:\n\n```bash\n# Bash/Zsh\neval \"$(shell-ai integration generate bash --preset=full --stdout)\"\neval \"$(shell-ai integration generate zsh --preset=full --stdout)\"\n\n# Fish\nshell-ai integration generate fish --preset=full --stdout | source\n\n# PowerShell\nInvoke-Expression (shell-ai integration generate powershell --preset=full --stdout | Out-String)\n```\n\nThis approach doesn't write files to your config directory and is always up to date after upgrading Shell-AI, but adds several milliseconds to shell startup (the time to spawn Shell-AI and generate the integration). The file-based approach above is recommended for faster startup.\n\n### Performance\n\nThe shell integration file is pre-compiled to minimize shell startup overhead. Here are benchmark results comparing the overhead of each preset.\n\n\u003cdetails\u003e\n\u003csummary\u003eBenchmark Results\u003c/summary\u003e\n\nThis is how much slower Shell-AI v0.5.1's shell integration makes shell startup:\n\n#### Baseline: Sourcing an Empty File\n\n| Shell      |    N |     Min |      Q1 |  Median |      Q3 |     Max |    Mean | Std Dev |\n|------------|-----:|--------:|--------:|--------:|--------:|--------:|--------:|--------:|\n| Bash       | 1000 |  1.06ms |  1.18ms |  1.21ms |  1.31ms |  2.95ms |  1.27ms |  0.16ms |\n| Zsh        | 1000 |  1.17ms |  1.33ms |  1.37ms |  1.45ms |  4.87ms |  1.42ms |  0.23ms |\n| Fish       | 1000 |  0.78ms |  0.88ms |  0.91ms |  0.96ms |  2.69ms |  0.94ms |  0.12ms |\n| PowerShell |  100 | 79.03ms | 81.09ms | 82.48ms | 84.91ms | 98.50ms | 83.32ms |  3.31ms |\n\n#### Incremental Overhead (Above Baseline)\n\n| Shell      | Preset   | Overhead (Mean) |\n|------------|----------|----------------:|\n| Bash       | minimal  |         +1.56ms |\n| Bash       | standard |         +1.64ms |\n| Bash       | full     |         +2.11ms |\n| Zsh        | minimal  |         +1.98ms |\n| Zsh        | standard |         +2.05ms |\n| Zsh        | full     |         +2.43ms |\n| Fish       | minimal  |         +2.42ms |\n| Fish       | standard |         +2.56ms |\n| Fish       | full     |         +2.69ms |\n| PowerShell | minimal  |        +20.30ms |\n| PowerShell | standard |        +21.67ms |\n| PowerShell | full     |       +125.24ms |\n\n#### Total Overhead (What Users Experience)\n\n##### Bash\n\n| Preset           |    N |    Min |     Q1 | Median |     Q3 |    Max |   Mean | Std Dev |\n|------------------|-----:|-------:|-------:|-------:|-------:|-------:|-------:|--------:|\n| blank (baseline) | 1000 | 1.06ms | 1.18ms | 1.21ms | 1.31ms | 2.95ms | 1.27ms |  0.16ms |\n| minimal          | 1000 | 2.55ms | 2.71ms | 2.78ms | 2.89ms | 3.85ms | 2.82ms |  0.17ms |\n| standard         | 1000 | 2.62ms | 2.76ms | 2.85ms | 2.98ms | 6.08ms | 2.91ms |  0.25ms |\n| full             | 1000 | 2.97ms | 3.22ms | 3.32ms | 3.47ms | 6.55ms | 3.38ms |  0.26ms |\n\n##### Zsh\n\n| Preset           |    N |    Min |     Q1 | Median |     Q3 |    Max |   Mean | Std Dev |\n|------------------|-----:|-------:|-------:|-------:|-------:|-------:|-------:|--------:|\n| blank (baseline) | 1000 | 1.17ms | 1.33ms | 1.37ms | 1.45ms | 4.87ms | 1.42ms |  0.23ms |\n| minimal          | 1000 | 3.03ms | 3.27ms | 3.35ms | 3.47ms | 5.07ms | 3.40ms |  0.20ms |\n| standard         | 1000 | 3.07ms | 3.32ms | 3.41ms | 3.55ms | 5.86ms | 3.47ms |  0.25ms |\n| full             | 1000 | 3.40ms | 3.69ms | 3.80ms | 3.94ms | 6.20ms | 3.85ms |  0.27ms |\n\n##### Fish\n\n| Preset           |    N |    Min |     Q1 | Median |     Q3 |    Max |   Mean | Std Dev |\n|------------------|-----:|-------:|-------:|-------:|-------:|-------:|-------:|--------:|\n| blank (baseline) | 1000 | 0.78ms | 0.88ms | 0.91ms | 0.96ms | 2.69ms | 0.94ms |  0.12ms |\n| minimal          | 1000 | 3.03ms | 3.19ms | 3.27ms | 3.44ms | 4.64ms | 3.36ms |  0.26ms |\n| standard         | 1000 | 3.15ms | 3.29ms | 3.40ms | 3.64ms | 5.50ms | 3.50ms |  0.29ms |\n| full             | 1000 | 3.30ms | 3.45ms | 3.53ms | 3.70ms | 5.58ms | 3.63ms |  0.27ms |\n\n##### PowerShell\n\n| Preset           |   N |      Min |       Q1 |   Median |       Q3 |      Max |     Mean | Std Dev |\n|------------------|----:|---------:|---------:|---------:|---------:|---------:|---------:|--------:|\n| blank (baseline) | 100 |  79.03ms |  81.09ms |  82.48ms |  84.91ms |  98.50ms |  83.32ms |  3.31ms |\n| minimal          | 100 |  96.98ms | 101.39ms | 103.04ms | 105.27ms | 118.27ms | 103.62ms |  3.95ms |\n| standard         | 100 |  99.77ms | 103.34ms | 104.47ms | 106.13ms | 115.67ms | 104.98ms |  3.12ms |\n| full             | 100 | 200.65ms | 205.15ms | 207.09ms | 209.94ms | 241.00ms | 208.55ms |  5.94ms |\n\n#### Methodology\n\nTo reproduce these benchmarks, run `cargo run --package xtask -- bench-integration [sample_count]` from this repository.\n\n\u003c/details\u003e\n\n## Migrating from Python Shell-AI\n\nIf you're coming from [ricklamers/shell-ai](https://github.com/ricklamers/shell-ai):\n\n- **The provider is required.** Set `SHAI_API_PROVIDER` explicitly, as the default is no longer Groq.\n- **`SHAI_SKIP_HISTORY` is removed.** Writing to shell history is no longer supported. The previous implementation made assumptions about the shell's history configuration. Shells don't expose history hooks to child processes, making this feature infeasible.\n- **`SHAI_SKIP_CONFIRM` is deprecated.** Use `--frontend=noninteractive` or `SHAI_FRONTEND=noninteractive` as a more flexible alternative.\n- **Context mode is deprecated.** The `--ctx` flag and `CTX` environment variable still work but are not recommended. The extra context from shell output tends to confuse the completion model rather than help it.\n- **Model defaults differ.** Set `model` explicitly if you prefer a specific model.\n\n## Contributing\n\nContributions welcome! Open an [issue](https://github.com/Deltik/shell-ai/issues) or [pull request](https://github.com/Deltik/shell-ai/pulls) at [Deltik/shell-ai](https://github.com/Deltik/shell-ai).\n\nFor changes to the original Python Shell-AI, head upstream to [ricklamers/shell-ai](https://github.com/ricklamers/shell-ai).\n\n## Acknowledgments\n\nThis project began as a fork of [ricklamers/shell-ai](https://github.com/ricklamers/shell-ai) at [v0.4.4](https://github.com/Deltik/shell-ai/releases/tag/v0.4.4). Since [v0.5.0](https://github.com/Deltik/shell-ai/releases/tag/v0.5.0), it shares no code with the original—a complete [Ship of Theseus](https://en.wikipedia.org/wiki/Ship_of_Theseus) rebuild in Rust. The hull is new, but the spirit remains.\n\n## License\n\nShell-AI is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeltik%2Fshell-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeltik%2Fshell-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeltik%2Fshell-ai/lists"}