Skip to main content

AI-powered shell assistant

Project description

py-ai-shell

Python Package PyPI version License: MIT

AI-powered shell assistant that generates and explains shell commands based on natural language prompts.

py-ai-shell transforms your natural language descriptions into shell commands, explains what they do, and helps you fix errors. It's like having a shell expert by your side, making command-line work more accessible and efficient.

Installation

pip install py-ai-shell

Requirements:

  • Python 3.8 or higher
  • OpenAI API key

py-ai-shell works on Linux, macOS, and Windows with support for bash, zsh, fish, and PowerShell.

Quick Start

Basic Usage

# Start py-ai-shell interactive mode
ai

# Run with a one-time prompt
ai "list all files in the current directory"

# Configure py-ai-shell
ai config set OPENAI_KEY=your_api_key

When you run a command, py-ai-shell will:

  1. Generate the appropriate shell command
  2. Show you what it's going to do
  3. Execute the command when you approve
  4. Provide explanations and error analysis if needed

Features

  • Natural Language Command Generation: Convert plain English to shell commands
  • Command Explanations: Understand what commands do before running them
  • Error Analysis: Get explanations and suggestions when commands fail
  • Command History: py-ai-shell remembers context from previous commands
  • Multiple Shell Support: Works with bash, zsh, fish, and PowerShell
  • Interactive Mode: Full interactive shell experience
  • One-off Mode: Quick command generation without entering interactive mode
  • Configurable: Use different OpenAI models and customize behavior
  • Copy to Clipboard: Easily copy generated commands
  • Silent Mode: Less verbose output for experienced users

Configuration

py-ai-shell can be configured using the config command:

# Set your OpenAI API key
ai config set OPENAI_KEY=your_api_key

# Set the model to use (default: gpt-4.1-nano)
ai config set MODEL=gpt-4.1-nano

# Enable silent mode (less verbose output)
ai config set SILENT_MODE=true

# Set API endpoint (useful for proxies or alternative providers)
ai config set OPENAI_API_ENDPOINT=https://api.openai.com/v1

# Set language (default: en)
ai config set LANGUAGE=en

Configuration is stored in ~/.config/py-ai-shell/config.ini and can be edited directly.

Advanced Usage

Command Options

# Run in silent mode (less verbose output)
ai -s "list files by size"

# Provide a custom prompt
ai -p "show disk usage"

Error Analysis

When a command fails, py-ai-shell can analyze the error and suggest fixes:

$ ai "find files modified in the last 24 hours"
# If the command fails, py-ai-shell will offer to analyze the error
Command failed. Would you like an explanation? (?/??/???)

Enter ? for a brief explanation, ?? for a standard explanation, or ??? for a detailed analysis.

Command History

py-ai-shell maintains a history of your recent commands and their results, providing context for future commands. This helps the AI understand your environment and previous actions.

Interactive Options

After a command is generated, you'll see options:

  • a/A: Accept and run the command
  • e/E: Edit the command before running
  • r/R: Revise (ask AI to generate a new command)
  • c/C: Copy the command to clipboard
  • s/S: Stick to your original command
  • q/Q: Quit/cancel

Using with Different Shells

py-ai-shell automatically detects your current shell, but you can generate commands for specific shells by mentioning them in your prompt:

ai "list all processes in PowerShell syntax"

Development

Setting Up Development Environment

  1. Clone the repository:

    git clone https://github.com/cheney-yan/py-ai-shell.git
    cd py-ai-shell
    
  2. Install development dependencies:

    make dev
    
  3. Run tests:

    make test
    

Available Make Commands

  • make help: Show available commands
  • make clean: Remove all build, test, coverage and Python artifacts
  • make lint: Check style with flake8
  • make test: Run tests
  • make coverage: Check code coverage
  • make dist: Package for distribution
  • make install: Install the package locally
  • make dev: Install development dependencies

Contributing

Contributions are welcome! Here's how you can contribute:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure your code passes all tests and linting checks before submitting a pull request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_ai_shell-0.1.2.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_ai_shell-0.1.2-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file py_ai_shell-0.1.2.tar.gz.

File metadata

  • Download URL: py_ai_shell-0.1.2.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.6

File hashes

Hashes for py_ai_shell-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f5418a9fa8ddd045342a24cbc863e26a58741f33084d16c61feb27d204cfd8a5
MD5 c8dbb5cb8439c4dfd3c941922516117f
BLAKE2b-256 a7657b4726a053ca30ffb1499ec2d641974e1bb539321c7fd0e64556672988a3

See more details on using hashes here.

File details

Details for the file py_ai_shell-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: py_ai_shell-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.6

File hashes

Hashes for py_ai_shell-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 56ef4f46ecf63ffcb74a24b87424ee6b67ff51c1ef3aa2f1a41b13cf1f6ac9eb
MD5 4f7a38661391609b428248dee0e4707b
BLAKE2b-256 690b220cf0fa3dfc4a8b47a13cf3dd1b33a0c1cd435398bb53f7f0196f5c8da0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page