Skip to main content

AI-powered web search CLI with LLM tool-calling capabilities

Project description

asky icon asky title

asky is a command-line AI assistant with web search, local document Q&A, conversation history, and an optional XMPP remote-chat mode.

It runs as asky or ask. You give it a query, it gives you an answer.

What you need to get started

  • Access to an OpenAI compatible LLM provider (OpenRouter, Gemini, OpenAI, Antrophic or a local model via LM Studio, Ollama, etc.)
  • A search provider for web queries, Asky supports:
    • Local SearXNG instance.
    • Tavily (1000 free requests, per month).
    • Serper (2500 free requests, one time).

New here? Start with the Quick Start guide.

Features

  • Multi-model support - define model aliases for any OpenAI-compatible API endpoint and switch between them with -m.
  • Web search and tool calling - the model can search the web, fetch URLs, and use the current date to answer questions. Tool calls are visible in the output.
  • Deep research mode - iterative retrieval across web sources and local documents, with a vector-indexed local corpus for semantic search.
  • Document Q&A - point asky at a PDF, EPUB, or folder of files and ask questions about the content. See Document Q&A.
  • Conversation history and sessions - every query is saved locally. Resume any previous conversation with -c, or use named sticky sessions with -ss.
  • User memory - save facts across sessions. asky injects relevant memories into future queries automatically.
  • Custom tools - expose any local CLI command as a tool the model can call.
  • XMPP daemon mode - run asky --daemon to log into an XMPP account and accept queries over chat from any XMPP client app (phone, desktop, etc.). Includes voice transcription on macOS.
  • Web Admin Console - authenticated browser interface for persona management, web collection review, and background job monitoring.
  • Cross-platform system tray - on macOS, Linux, and Windows, daemon mode adds a tray icon for start/stop control and auto-start at login.
  • Playwright browser plugin - fetches pages using a real browser, useful for sites that block standard HTTP clients.
  • File prompts - load a prompt from a file with file://path/to/prompt.txt.
  • Smart context management - summarizes old conversation turns in the background to stay within model context limits.

Installation

Recommended:

uv tool install asky-cli

With pip:

pip install asky-cli

From source:

uv pip install -e .

Optional extras:

# iTerm2 terminal context integration (macOS)
uv tool install "asky-cli[iterm2]"

# XMPP daemon (text only)
uv pip install "asky-cli[xmpp]"

# Voice transcription (macOS, mlx-whisper)
uv pip install "asky-cli[mlx-whisper]"

# macOS full bundle: iterm2 + mlx-whisper + rumps + slixmpp
uv pip install "asky-cli[mac]"

# System tray icons (Linux/Windows)
uv pip install "asky-cli[tray]"

# Playwright browser plugin
uv pip install "asky-cli[playwright]"

Basic Usage

# Basic query
asky what is the correct temperature for green tea

# Ask about a local document
asky -r path/to/report.pdf "What are the main conclusions?"

# Research mode - web sources
asky -r web "Compare the latest iPhone vs Samsung flagship specs"

# Continue from a previous query
asky -c "~1" explain more

# Persistent named session
asky -ss "Project X" "Let's plan the API structure"

# Use a specific model alias (defined in models.toml)
asky -m gf "Explain quantum entanglement"

# Copy final answer to clipboard
asky -cc "Write a regex to match email addresses"

# Pro-tip: Create a clipboard-first alias for command-only terminal assistance:
# alias al='asky -L -cc -sp "You are a CLI assistant. Answer briefly. When the user asks for a shell command, return only the command text. No markdown, no code fences, no explanation."'

# Run XMPP daemon in the background (menu bar on macOS if supported)
asky --daemon

# Run daemon attached to the terminal
asky --daemon --foreground

# Edit daemon settings interactively
asky --config daemon edit

# Add or edit model aliases
asky --config model add
asky --config model edit gf

# History, sessions, memory
asky history list 20
asky session list
asky memory list

Example output for a query that uses web search:

$ asky "What is the weather in Delft right now?"
Dispatching tool call: web_search with args {'q': 'weather Delft Netherlands'}
Dispatching tool call: get_url_content with args {'urls': [...]}

The weather in Delft, South Holland is currently 45°F, cloudy with showers.

Query completed in 3.88 seconds

Run asky --help for the full list of commands and flags.

Documentation

User guides

Developer / advanced

Maintainer release flow: bump [project].version in pyproject.toml, push to main, and let the Publish package GitHub Actions workflow run the tests, upload dist/* to a GitHub Release, and publish the same artifacts to PyPI.

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

asky_cli-0.4.14.tar.gz (767.5 kB view details)

Uploaded Source

Built Distribution

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

asky_cli-0.4.14-py3-none-any.whl (876.0 kB view details)

Uploaded Python 3

File details

Details for the file asky_cli-0.4.14.tar.gz.

File metadata

  • Download URL: asky_cli-0.4.14.tar.gz
  • Upload date:
  • Size: 767.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for asky_cli-0.4.14.tar.gz
Algorithm Hash digest
SHA256 bf3a45a1b77998aa9d416130dfd8f8873a050edb9ad5f77dad4b8982210ebeb8
MD5 d14f1f40094ba3534354b4cf798854dc
BLAKE2b-256 a5f1fc5c0dad141acc052ab8cde7a8f9ae7b1c9d4001d4f55649342396d63b35

See more details on using hashes here.

Provenance

The following attestation bundles were made for asky_cli-0.4.14.tar.gz:

Publisher: publish-package.yml on evrenesat/asky

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

File details

Details for the file asky_cli-0.4.14-py3-none-any.whl.

File metadata

  • Download URL: asky_cli-0.4.14-py3-none-any.whl
  • Upload date:
  • Size: 876.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for asky_cli-0.4.14-py3-none-any.whl
Algorithm Hash digest
SHA256 9fa1cbe564693e31cee4bce12a8f586427217cdc1121c0f75625711a43c636be
MD5 59b8d33a790d43f9b788d736d05f7408
BLAKE2b-256 1b84cbc43bd185f74117c8dc520bc7c81cf61d9a3acdb3358b45234ea4214d3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for asky_cli-0.4.14-py3-none-any.whl:

Publisher: publish-package.yml on evrenesat/asky

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