Skip to main content

A CLI tool that converts natural language to CLI commands using LLMs

Project description

DoForMe

A CLI tool that converts natural language into CLI commands using AI. No more remembering complex command syntax!

Features

  • 🤖 Supports multiple LLM providers (OpenAI, Anthropic/Claude, Groq, OpenRouter)
  • 🔍 Automatically checks if required tools are installed
  • ⚡ Fast and easy to use
  • 🔐 Secure API key management
  • ✅ Confirmation before executing commands
  • 🎯 Dry-run mode to preview commands

Installation

From PyPI

pip install doforme

From source

git clone https://github.com/yourusername/doforme.git
cd doforme
pip install -e .

No external dependencies required! DoForMe uses Python's built-in libraries to communicate with all LLM provider APIs.

Setup

1. Get an API Key

Choose your preferred LLM provider and get an API key:

2. Configure the API Key

You have three options:

Option A: Environment Variable (Recommended)

# For OpenAI
export OPENAI_API_KEY=your_key_here

# For Anthropic/Claude
export ANTHROPIC_API_KEY=your_key_here

# For Groq
export GROQ_API_KEY=your_key_here

# For OpenRouter
export OPENROUTER_API_KEY=your_key_here

Add this to your ~/.bashrc or ~/.zshrc to make it permanent.

Option B: Interactive Setup

Just run doforme without an API key and it will prompt you to:

  1. Select your LLM provider
  2. Enter your API key
doforme "list files"

Option C: Using DoForMe itself

doforme "set the api key to sk-..."
# This will prompt you to select a provider

Usage

Basic Usage

Simply describe what you want to do in natural language:

doforme "downsize with ffmpeg to max 1024 on each side"

This will:

  1. Query the AI to generate the appropriate command
  2. Show you the command
  3. Ask for confirmation
  4. Execute it (if you confirm)

More Examples

# File operations
doforme "find all python files in this directory"
doforme "compress this folder into a zip file"
doforme "count lines of code in all js files"

# Media processing
doforme "convert all png images to jpg"
doforme "extract audio from video.mp4"
doforme "create a gif from images"

# System operations
doforme "show disk usage"
doforme "find the largest files in current directory"
doforme "check my internet speed"

# Git operations
doforme "show git log for the last 5 commits"
doforme "undo last commit but keep changes"

Options

Dry Run Mode

Preview the command without executing:

doforme --dry-run "delete all log files"

Auto-Execute Mode

Skip confirmation (use with caution!):

doforme --yes "show current date"
doforme -y "list files"

How It Works

  1. Input: You provide a natural language description
  2. AI Processing: DoForMe sends your request to your chosen LLM provider's API
  3. Command Generation: The AI generates the appropriate CLI command
  4. Validation: Checks if required tools are installed
  5. Confirmation: Shows you the command and asks for confirmation
  6. Execution: Runs the command in your shell

Safety Features

  • ✅ Shows you the command before execution
  • ✅ Checks if required tools exist on your system
  • ✅ Secure API key storage (600 permissions)
  • ✅ Confirmation prompts (can be disabled with -y)
  • ✅ Dry-run mode for testing

Error Handling

If a required tool is not installed, DoForMe will tell you:

$ doforme "convert video with ffmpeg"
🤔 Thinking about: convert video with ffmpeg

📋 Command: ffmpeg -i input.mp4 output.avi

❌ Error: Required tool 'ffmpeg' is not installed on your system.
   Please install it and try again.

Configuration

API key and provider selection are stored in ~/.config/doforme/config.json with secure permissions (600).

To change your API key:

doforme "set the api key to sk-new-key-here"
# This will prompt you to select a provider

Or manually edit ~/.config/doforme/config.json:

{
  "api_key": "your-api-key-here",
  "provider": "openai"
}

Valid provider values: openai, anthropic, groq, openrouter

Requirements

  • Python 3.8 or higher
  • API key from one of the supported providers (OpenAI, Anthropic, Groq, or OpenRouter)
  • Internet connection (for API calls)
  • No external dependencies required!

Privacy & Security

  • Your prompts are sent to your chosen LLM provider's API
  • API keys are stored locally with restricted permissions (600)
  • Commands are shown before execution
  • No telemetry or tracking by DoForMe

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details

Troubleshooting

"No API key found"

Make sure you've either:

  • Set the appropriate environment variable for your provider (OPENAI_API_KEY, ANTHROPIC_API_KEY, GROQ_API_KEY, or OPENROUTER_API_KEY)
  • Run the interactive setup when prompted

"Required tool not installed"

Install the missing tool using your package manager:

# Ubuntu/Debian
sudo apt install <tool-name>

# macOS
brew install <tool-name>

# Fedora
sudo dnf install <tool-name>

Command doesn't work as expected

Use --dry-run to see the generated command and adjust your prompt for better results.

Acknowledgments

Support

For issues and questions, please open an issue on GitHub.

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

doforme-0.1.2.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

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

doforme-0.1.2-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: doforme-0.1.2.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for doforme-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3282c0b0775f79257e92b159de9aeda4be54c9e544a71c97d4b18557a362cd5a
MD5 bfd0188caa15acbf1155ae2014a6a5fc
BLAKE2b-256 d13171fcb9e706858835881a2dde74be0266e96e8f5a08c2946692048a0ea8f2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: doforme-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for doforme-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0bfec13d31281e43d6e1857c3d409520c01f83e0218c019f4c7da808c5fc217b
MD5 74994fb24122b2c373284346cd12204a
BLAKE2b-256 70a6a066c7374e8fa3621b1d05617de279ea0ee2b7bc34ec3746a8c627eb1b47

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