Skip to main content

AI-powered CLI tool that converts natural language into Linux shell commands.

Project description

❯_ asksh

PyPI Python License: MIT

AI in your terminal for shell and coding help.

asksh is an AI-powered CLI that lets you describe what you want in plain English and get practical terminal guidance. In its default one-shot mode it replies with a concise Linux command. In explain or chat modes it can also provide short explanations or broader programming help.

You don't need to leave your terminal to get things done. Don't remember the exact tar flags? asksh

$ asksh "compress a directory as tar.gz excluding the .cache directory"
tar -czf archive.tar.gz --exclude=.cache my_directory

Why asksh

  • Stay in the terminal: describe what you need in plain language and get a shell command (or a short explanation) without switching to a browser or another app.
  • Local model, low cost: Ollama with the default qwen2.5-coder is enough for most day-to-day terminal tasks—no API keys or token spend on large cloud providers.
  • No automatic access or execution: asksh does not browse your filesystem, write files, delete anything, or run shell commands on its own. It only sends your prompt to the model, plus text you explicitly provide with -f/--context or by piping stdin. You review and run any command yourself.

Features

  • One-shot command (default): returns just the shell command, no commentary.
  • Explain mode (-e/--explain): returns a command with a short explanation.
  • Interactive chat (-c/--chat, or run with no query): streamed multi-turn chat for broader help.
  • File context (-f/--context PATH): attach a file (logs, configs, code) as context.
  • Stdin support: pipe anything in (cat error.log | asksh ...), works in chat mode too.
  • Local & private: runs against your own Ollama server; no data leaves your machine.
  • Custom model / server: override defaults per call (--model, --base-url) or via a TOML config.

Quick Start

  1. Install Ollama and make sure it's running (ollama serve, or launch the desktop app).
  2. Pull the default model:
ollama pull qwen2.5-coder
  1. Install and run asksh:
pipx install asksh
asksh "find files larger than 500MB in this directory"

Safety

AI-generated shell commands can be destructive. Always review commands before running them, especially commands that remove files, rewrite git history, or modify system configuration.

Installation

Install the CLI

From PyPI:

pipx install asksh
# or: uv tool install asksh

From a clone (development):

git clone https://github.com/srgsol/asksh.git
cd asksh
uv sync
uv run asksh --help

Requires Python 3.10+ and a reachable Ollama server (see Quick Start).

Configuration (optional defaults)

CLI flags always win. To avoid retyping --model/--base-url on every run, drop a TOML file at:

  • $XDG_CONFIG_HOME/asksh/config.toml (or ~/.config/asksh/config.toml if XDG_CONFIG_HOME is unset).

Only model and base_url are read from the config file. See config.example.toml.

Setting Default
model qwen2.5-coder
base_url http://localhost:11434

Usage

Flags

Flag Description
-c, --chat Start interactive chat (also the default when no query).
-e, --explain Return a command with a short explanation.
-f, --context PATH Use a file as additional context.
--model NAME Ollama model (default qwen2.5-coder).
--base-url URL Ollama server (default http://localhost:11434).
-V, --version Print version and exit.

Run asksh --help to see the full list.

One-shot query

asksh "compress this folder as tar.gz excluding .cache"

Interactive chat

asksh enters chat mode if no query is provided, or when -c/--chat is set.

asksh
# or:
asksh -c

Explain mode

Return a command with a short explanation:

asksh -e "show open tcp ports"

Context file

Pass a file as additional context:

asksh -f error.log "what is failing here?"

Pipe stdin

Use piped input as context:

cat data.json | asksh "use jq to count items"

You can combine stdin with chat mode — stdin becomes the first message and the chat then continues interactively from your terminal:

cat error.log | asksh -c "what went wrong?"

Troubleshooting

  • Cannot connect to Ollama: ensure Ollama is running and reachable at http://localhost:11434 (or pass --base-url).
  • Model not found: run ollama pull qwen2.5-coder or pass another available model with --model.
  • Config not being used: verify config path ($XDG_CONFIG_HOME/asksh/config.toml or ~/.config/asksh/config.toml).

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

asksh-1.0.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

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

asksh-1.0.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file asksh-1.0.0.tar.gz.

File metadata

  • Download URL: asksh-1.0.0.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for asksh-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5b3f99498f56e9c1e16ffeb3b02f93ec07915950bd28adc4e8cfbdca9152aaa0
MD5 f744017d725cddd71a241366b2941ac7
BLAKE2b-256 414e45c5b0cc8e972d4c637ab9697389aa14aab0c734b1bf3360d812a3e2510f

See more details on using hashes here.

Provenance

The following attestation bundles were made for asksh-1.0.0.tar.gz:

Publisher: publish.yml on srgsol/asksh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file asksh-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: asksh-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for asksh-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99633a4cc2768067105be881215a2e9f98131e8e4f7634430d08337144cc7d0d
MD5 91dc48abb24b77474a6d5cdc5aeacde3
BLAKE2b-256 76fd71f865a63e762025195e4291ceaaf977be3bcc18eff83de94637e607b2a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for asksh-1.0.0-py3-none-any.whl:

Publisher: publish.yml on srgsol/asksh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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