Skip to main content

A simple Agno-based CLI assistant

Project description

🐱 Adorable CLI

Command-line Super Agents built on Agno

Python License PRs Welcome

Quick StartFeaturesUsageBuildContributing

English 中文


Command-line agent built on Agno. Task-centric interaction: you set goals, the agent drives a "collect → act → verify" loop, and uses a todo list when tasks get complex.

Supports OpenAI-compatible APIs.


🧩 Features

  • Interactive sessions with Markdown output and streaming
  • Plan → Execute → Verify loop designed for multi-step tasks
  • Multi-tool orchestration: web search, crawl, file I/O, math, memory
  • Local persistent memory (~/.adorable/memory.db) across sessions
  • Simple configuration; supports custom models and compatible API providers

⚡ Quick Start

Method Command Best For
🚗 auto curl -fsSL https://leonethan.github.io/adorable-cli/install.sh | bash ✅ Recommended - Linux/macOS
🐍 pipx pipx install adorable-cli ✅ Recommended - Linux/macOS
📦 pip pip install adorable-cli Traditional Python environments

On first run you will be guided to set API_KEY, BASE_URL, MODEL_ID, TAVILY_API_KEY into ~/.adorable/config (KEY=VALUE). You can run adorable config anytime to update.

🚀 Usage

# Start interactive session
adorable

# Configure required settings (API_KEY/BASE_URL/MODEL_ID/TAVILY_API_KEY)
adorable config

# Show help
adorable --help

Exit keywords: exit / quit / q / bye

🔧 Configuration

  • Default model: gpt-4o-mini
  • Sources:
    • Interactive: adorable config (writes to ~/.adorable/config)
    • Environment: API_KEY or OPENAI_API_KEY; BASE_URL or OPENAI_BASE_URL; TAVILY_API_KEY; ADORABLE_MODEL_ID

Example (~/.adorable/config):

API_KEY=sk-xxxx
BASE_URL=https://api.openai.com/v1
TAVILY_API_KEY=tvly_xxxx
MODEL_ID=gpt-4o-mini

🧠 Capabilities

  • Reasoning & planning: ReasoningTools (structured reasoning and step planning)
  • Calculation & checks: CalculatorTools (numeric operations and validation)
  • Web search: TavilyTools (requires TAVILY_API_KEY)
  • Web crawling: Crawl4aiTools (visit URLs and extract content)
  • File operations: FileTools (search/read/write; scope limited to the launch directory cwd)
  • Memory storage: MemoryTools + SqliteDb (~/.adorable/memory.db)

System prompt and TODO list guidelines: see src/adorable_cli/prompt.py.

🧪 Example Prompts

  • "Summarize the latest Python features and provide example code"
  • "Read code from the project's src directory and generate a detailed README saved to the repo root"

🛠️ Run from Source (uv/venv)

Using uv (recommended):

uv sync
uv run -m adorable_cli.main
# 或:uv run src/adorable_cli/main.py

Note: To pin Python version, use uv sync -p 3.11.

Using venv:

python3 -m venv .venv
. .venv/bin/activate
pip install -U pip setuptools wheel
pip install -r requirements.txt
python -m adorable_cli.main

📦 Build & Release

  • Entry points: see pyproject.toml (adorable, ador)
  • PyPI release: push v* tags or trigger manually; CI builds and publishes
    • Release command: git tag vX.Y.Z && git push origin vX.Y.Z
  • Automated versioning: release-please based on Conventional Commits
    • Common types: feat: fix: perf: refactor: docs:
  • Local build & install:
    • python -m build (outputs dist/*.tar.gz and dist/*.whl)
    • python -m pip install dist/*.whl

🤝 Contributing

  • PRs and issues welcome; follow Conventional Commits so release-please can generate changelogs.
  • Dev tips:
    • Use pipx or virtualenv;
    • Follow pyproject.toml style (Ruff/Black, line width 100).
    • Run adorable --help to quickly validate CLI behavior.

💡 FAQ & Troubleshooting

  • Auth failure / model unavailable:
    • Check API_KEY / BASE_URL; ensure MODEL_ID is supported
  • Poor search quality:
    • Set TAVILY_API_KEY; be explicit about search goals and scope
  • PEP 668 (system env disallows writes):
    • Prefer pipx to get an isolated, cross-platform CLI environment

🔒 Privacy & Security

  • The agent may read/write files under the current working directory; review changes in production
  • Local memory is stored at ~/.adorable/memory.db; remove it if not needed

🧭 Developer Guide

  • Style & config: Ruff/Black in pyproject.toml, line width 100
  • CLI entrypoints: src/adorable_cli/__main__.py, src/adorable_cli/main.py
  • System prompt: src/adorable_cli/prompt.py

📜 License

  • MIT

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

adorable_cli-0.1.10.tar.gz (267.9 kB view details)

Uploaded Source

Built Distribution

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

adorable_cli-0.1.10-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file adorable_cli-0.1.10.tar.gz.

File metadata

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

File hashes

Hashes for adorable_cli-0.1.10.tar.gz
Algorithm Hash digest
SHA256 92a6a94f2368da6cf1ea6129886dd79d100ae1748281aa894f9a7c3dbcf3bbf2
MD5 ea5fd0f919597ae0c5220a0dac6f936c
BLAKE2b-256 b4523c200f3d248e6c0ee0e140980d23b9eda518cbdf613a401bb60504b39b29

See more details on using hashes here.

Provenance

The following attestation bundles were made for adorable_cli-0.1.10.tar.gz:

Publisher: pypi-publish.yml on LeonEthan/adorable-cli

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

File details

Details for the file adorable_cli-0.1.10-py3-none-any.whl.

File metadata

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

File hashes

Hashes for adorable_cli-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 a1ffc9f2ec26080b660866fcbddf048428a47f44bb8392d8af741ba3bd041c67
MD5 0eb7b4203b1a6a0dcd9147a4af72ac53
BLAKE2b-256 fdd09b8d25587279700244d78ff705bcc44dd079bc933e9eee17d7a635aa11b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for adorable_cli-0.1.10-py3-none-any.whl:

Publisher: pypi-publish.yml on LeonEthan/adorable-cli

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