Skip to main content

CLI tool for translating natural language to shell commands via cmd.xaw.me API

Project description

clixaw

A command-line interface tool that translates natural language queries into executable shell commands using the cmd.xaw.me API.

Installation

From PyPI (when published)

pip install xaw

From source

git clone https://github.com/Bandit-HaxUnit/clixaw
cd clixaw
pip install -e .

Usage

Basic Usage

Translate a natural language query to a shell command:

xaw show me big files
# Output: du -ah . | sort -rh | head -n 10

Quoted Queries

For multi-word queries with special characters, use quotes:

xaw "git push new branch"
# Output: git push -u origin $(git branch --show-current)

Execute Commands

Use the --execute or -e flag to execute the translated command:

xaw --execute list files in current directory
# Executes: ls -la

Configuration

Using config.toml (Recommended)

Create a configuration file at ~/.config/clixaw/config.toml:

[api]
# Optional: Custom API URL (defaults to https://cmd.xaw.me)
url = "https://cmd.xaw.me"

[provider]
# Optional: Provider name (e.g., "openai", "gemini")
# If not specified, uses default (Groq) - no headers needed
name = "openai"

# Optional: API key (required if provider is set)
api_key = "sk-xxx"

# Optional: Model override (e.g., "gemini-pro", "gpt-4")
model = "gemini-pro"

Using Environment Variables

Set configuration using environment variables:

export XAW_API_URL="http://localhost:8000"
export XAW_PROVIDER="openai"
export XAW_API_KEY="sk-xxx"
export XAW_MODEL="gpt-4"
xaw show files

Using Command-Line Flags

Override configuration via command-line flags:

xaw --api-url http://localhost:8000 --provider openai --api-key sk-xxx --model gpt-4 show files

Configuration Priority

Configuration values are resolved in the following order (highest to lowest priority):

  1. Command-line flags (--provider, --api-key, --model, --api-url)
  2. Environment variables (XAW_PROVIDER, XAW_API_KEY, XAW_MODEL, XAW_API_URL)
  3. Config file (~/.config/clixaw/config.toml)
  4. Defaults (Groq provider, no headers needed)

Safety Features

By default, clixaw only prints commands without executing them. When using --execute:

  • Dangerous commands (like rm -rf, format, etc.) require confirmation
  • Use --no-confirm to skip confirmation (use with caution)
xaw --execute remove all files
# Warning: This command may be dangerous!
# Command: rm -rf *
# Do you want to proceed? [y/N]:

Command-Line Options

Usage: xaw [OPTIONS] QUERY...

  Translate natural language queries to shell commands using cmd.xaw.me API.

Options:
  -e, --execute          Execute the translated command instead of just printing it
  --api-url TEXT         API URL (defaults to XAW_API_URL env var, config file, or https://cmd.xaw.me)
  --provider TEXT        Provider name (e.g., openai, gemini). Overrides config file and env var.
  --api-key TEXT         API key for custom provider. Overrides config file and env var.
  --model TEXT           Model override (e.g., gemini-pro, gpt-4). Overrides config file and env var.
  --no-confirm           Skip confirmation for dangerous commands (use with caution)
  --version              Show the version and exit
  --help                 Show this message and exit

Examples

# Find large files
xaw show me big files

# Git operations
xaw "git push new branch"
xaw "create a new git branch"

# File operations
xaw list all python files
xaw find files modified today

# System information
xaw show disk usage
xaw check network connections

# Execute commands
xaw --execute show current directory
xaw -e "list files sorted by size"

API Details

  • Base URL: https://cmd.xaw.me (configurable)
  • Endpoints:
    • GET /?q={query} (query parameter style, preferred)
    • GET /{query} (path-based)
  • Response: Plain text shell command
  • Authentication: None required for default provider (Groq)
  • Custom Providers: Use X-Provider, X-API-Key, and X-Model headers

Provider Examples

# Default (Groq) - no headers needed
xaw "show big files"

# Custom provider with API key (via config.toml or flags)
xaw --provider openai --api-key sk-xxx "show big files"

# With custom model override
xaw --provider gemini --api-key xxx --model gemini-pro "show big files"

Error Handling

The tool handles various error scenarios:

  • Network connection errors
  • API timeouts
  • HTTP errors from the API
  • Invalid or empty responses
  • Command execution errors

Development

Project Structure

clixaw/
├── clixaw/
│   ├── __init__.py
│   ├── cli.py          # Main CLI entry point
│   └── api.py          # API client module
├── pyproject.toml      # Package configuration
├── README.md
└── requirements.txt

Running Tests

pytest

Code Formatting

black clixaw/

License

MIT License

Contributing

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

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

xaw-0.1.1.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

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

xaw-0.1.1-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file xaw-0.1.1.tar.gz.

File metadata

  • Download URL: xaw-0.1.1.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for xaw-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5e3e404b80ec08583712fe732c520000d3453f7345d9755c6c8e3afa1ffedd61
MD5 f5bc032352b4632dc9c7581245a738b5
BLAKE2b-256 767a0feba7c7a9be0b46b13f92b56d6163a71f4e2b4c8a4aa7e44b3cbeb4d713

See more details on using hashes here.

File details

Details for the file xaw-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: xaw-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for xaw-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3b5e1ab6ab3f0f74c2450f0a7042bf0833e44098976745d786619c3f291d5987
MD5 fbdfcde2e884c31f239f5db6107c825d
BLAKE2b-256 26eb8f0f33a270092d6e91bb1550de86bc15512de61ca08bc41bfc619854efd5

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