- π€ LLM usage: $68.9556 (34 commits)
- π€ Human dev: ~$1390 (13.9h @ $100/h, 30min dedup)
Generated on 2026-07-07 using openrouter/qwen/qwen3-coder-next
LLM-powered shell error fixing β Your AI assistant for debugging and fixing command-line errors instantly, with built-in privacy protection.
pip install heal
# With full privacy protection (detect-secrets, presidio, faker, etc.)
pip install heal[privacy]python broken_script.py heal
# Or pipe errors directly
make build 2>&1 | heal
# With privacy protection (anonymize sensitive data)
production_script.py 2>&1 | heal -a
# or long form:
production_script.py 2>&1 | heal --anonymize
your_failing_command heal
## Features
- π€ **LLM-powered error analysis** - Uses GPT models to understand and fix shell errors
- π **Automatic command capture** - Shell hook captures last command and output
- π₯ **Multiple input methods** - Works with stdin, files, or shell hooks
- βοΈ **Configurable models** - Support for various LLM providers via litellm
- π **Privacy protection** - 6 anonymization backends (regex, detect-secrets, presidio, priv-masker, datafog, faker)
- π³ **Docker-ready** - Full e2e test suite in Docker
- π **Zero-config start** - Just run `heal` after any error
## Privacy Protection
Mask sensitive data **before** it leaves your machine:
```bash
# Anonymize secrets, PII, tokens before sending to LLM
production_script.py 2>&1 | heal --anonymize
# or use the short flag:
production_script.py 2>&1 | heal -a
# Check which backends are active
heal fix --privacy-check
### Privacy Flags
| Flag | Description |
|------|-------------|
| `-a`, `--anonymize` | Force anonymization (overrides default) |
| `--no-anonymize` | Disable anonymization (overrides default) |
| `--privacy-check` | Show available privacy backends |
### Default Behavior
During first configuration (`heal config`), you'll be asked whether to enable anonymization by default. This setting can be overridden with flags:
```bash
# Disables anonymization regardless of default
heal fix --no-anonymize
| Backend | What it masks | Install |
|---|---|---|
| builtin_regex | Emails, phones, IPs, API keys, JWT, PEM, DB passwords | included |
| detect-secrets | High-entropy strings, cloud keys | pip install detect-secrets |
| presidio | Names, addresses, dates (NLP, multilingual) | pip install presidio-analyzer |
| priv-masker | Polish NLP (PESEL, names, addresses) | pip install priv-masker spacy |
| datafog | Lightweight PII | pip install datafog |
| faker | Generate realistic fake replacements | pip install faker |
Install all at once:
pip install heal[privacy]
| Guide | Description |
|---|---|
| Quick Start | Get running in 5 minutes |
| Getting Started | Full setup walkthrough |
| Configuration Guide | Provider & model setup |
| Multi-Provider Usage | Switch between LLM providers |
| Privacy Protection | Anonymization deep-dive |
| Privacy Quick Start | Privacy in 2 minutes |
| Error Recovery | Interactive error fixing |
| Troubleshooting | Common issues & solutions |
| Category | Guide |
|---|---|
| Python Errors | ModuleNotFoundError, ImportError, venv issues |
| Docker Errors | Build failures, port conflicts, volumes |
| Node.js Errors | npm, webpack, module resolution |
| Git Errors | Merge conflicts, auth, rebase |
| Comparison | What's compared |
|---|---|
| Privacy Libraries | detect-secrets vs presidio vs priv-masker vs datafog vs faker |
| Shell Error Fixers | heal vs thefuck vs shellcheck vs explainshell |
| LLM CLI Tools | heal vs aichat vs sgpt vs llm |
python app.py 2>&1 | heal
python -m pytest 2>&1 | heal
python script.py 2>&1 | heal
npm install 2>&1 | heal
npm run build 2>&1 | heal
node app.js 2>&1 | heal
docker build . 2>&1 | heal
docker-compose up 2>&1 | heal
docker run myimage 2>&1 | heal
git merge feature-branch 2>&1 | heal
git push origin main 2>&1 | heal
git rebase main 2>&1 | heal
make build 2>&1 | heal
./gradlew build 2>&1 | heal
psql -U user -d database 2>&1 | heal
mysql < dump.sql 2>&1 | heal
mongosh mongodb://localhost:27017 2>&1 | heal
./script.sh 2>&1 | heal
python -m http.server 8000 2>&1 | heal
cp large-file.zip /destination 2>&1 | heal
sudo apt install package 2>&1 | heal
brew install tool 2>&1 | heal
pip install package 2>&1 | heal
Fix shell errors using LLM. Reads from stdin or captured output.
heal [--model MODEL] [--api-key KEY]Initialize bash integration for automatic command and output capture.
heal initThis will:
- Create
~/.heal/heal.bashwith command capture hooks - Optionally add to your
~/.bashrcautomatically - Enable helper commands:
heal-last,heal-output
Test your configuration with a simulated error.
heal testThis will:
- Verify your provider and API key are configured
- Send a test request to the LLM
- Show you a sample response
Configure or reconfigure heal settings (provider, API key, model).
heal configExplicit fix command (same as default heal).
heal fix [--model MODEL] [--api-key KEY]Legacy command (use heal init instead).
heal installRemove shell hook and configuration.
heal uninstallShow help message and available commands.
heal --helpOn first run, heal will guide you through an interactive setup:
$ heal
π§ First-time setup - Let's configure your LLM provider
Available providers:
1. OpenRouter (recommended)
2. OpenAI
3. Anthropic
4. Google AI
π‘ Tip: OpenRouter gives you access to all models with one API key
Select provider [1]: 1
π Get your OpenRouter API key here:
https://openrouter.ai/keys
Enter your API key: sk-or-...
π€ Select a model from OpenRouter:
1. openai/gpt-5.4-mini
GPT-4o Mini (fast, cheap, recommended)
2. openai/gpt-4o
GPT-4o (most capable)
3. anthropic/claude-3.5-sonnet
Claude 3.5 Sonnet (excellent reasoning)
4. google/gemini-pro-1.5
Gemini Pro 1.5 (long context)
5. meta-llama/llama-3.1-70b-instruct
Llama 3.1 70B (open source)
6. qwen/qwen-2.5-72b-instruct
Qwen 2.5 72B (multilingual)
7. Custom (enter model name manually)
Select model [1]: 1Change your provider, API key, or model anytime:
heal config- Why? Access to all models with one API key
- Get API key: openrouter.ai/keys
- Models: GPT-4, Claude, Gemini, Llama, Qwen, and 100+ more
- Get API key: platform.openai.com/api-keys
- Models: GPT-4o, GPT-4o-mini, GPT-4-turbo, GPT-3.5-turbo
- Get API key: console.anthropic.com/settings/keys
- Models: Claude 3.5 Sonnet, Claude 3 Opus, Claude 3 Haiku
- Get API key: aistudio.google.com/app/apikey
- Models: Gemini Pro, Gemini Pro Vision
Edit ~/.heal/.env:
HEAL_PROVIDER=openrouter
HEAL_API_KEY=your-api-key-here
HEAL_MODEL=openai/gpt-5.4-mini
HEAL_BASE_URL=https://openrouter.ai/api/v1Configuration is stored in ~/.heal/.env.
pip install -e ".[dev]"
python -m pytest -vpython -m pytest tests/test_privacy.py -vdocker compose run unit-tests
docker compose run privacy-tests
docker compose run e2e-tests
docker compose run privacy-full
# Install in development mode
pip install -e ".[dev]"
# Run with coverage
python -m pytest --cov=heal -v
Command fails β heal captures output β anonymizes (optional) β LLM analyzes β suggests fix
- Command capture β Gets last command from bash hook buffer or history
- Error collection β Reads error output from stdin or captured file
- Privacy masking β Optionally anonymizes sensitive data (6 backends)
- LLM analysis β Sends sanitized command + error to LLM for analysis
- Solution proposal β Returns concrete fix suggestions
- Shell processes cannot access previous process stderr without pipes
- Shell hook required for fully automatic operation
- Requires API key for LLM service (free-tier models available)
Licensed under Apache-2.0.
Tom Sapletta
Contributions are welcome! Please feel free to submit a Pull Request.
- PyPI: pypi.org/project/heal
- Changelog: CHANGELOG.md
- TODO: TODO.md
- Comparisons: comparisons/
Last updated by taskill at 2026-04-25 13:38 UTC
| Metric | Value |
|---|---|
| HEAD | 72de64a |
| Coverage | β |
| Failing tests | β |
| Commits in last cycle | 26 |
Work focused on CLI-related documentation and interface polish, plus a broad refactor of the configuration and test modules. Additional chores introduce a deep code analysis engine and example/configuration improvements.