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
    

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.3.tar.gz (26.2 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.3-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: py_ai_shell-0.1.3.tar.gz
  • Upload date:
  • Size: 26.2 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.3.tar.gz
Algorithm Hash digest
SHA256 a493481b72b46a4e9822216496d7df2107fafad566ec3c6703c2440b012e1b51
MD5 f0979c67ab16c92368dd14c0368e8c9a
BLAKE2b-256 79373c081ea5239f8e7b33ad6f74caff360c222fd78a9ca7cd89ee51a07f9ac3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: py_ai_shell-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 28.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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 af7c3286fb26c87c3db51485221ac4f24f2f9ff437db14e9943e855e38758413
MD5 5eeefac0c1bbce142ac014514fd1eabe
BLAKE2b-256 ba286d732f44e8d94bf14e327781cc9bc5697df80239b5998a488cc942f98ca0

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