A simple Agno-based CLI assistant
Project description
🐱 Adorable CLI
Command-line Super Agents built on Agno
Quick Start • Features • Usage • Build • Contributing
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.
- 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_KEYinto~/.adorable/config(KEY=VALUE). You can runadorable configanytime to update.
# 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_KEYorOPENAI_API_KEY;BASE_URLorOPENAI_BASE_URL;TAVILY_API_KEY;ADORABLE_MODEL_ID
- Interactive:
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(requiresTAVILY_API_KEY) - Web crawling:
Crawl4aiTools(visit URLs and extract content) - File operations:
FileTools(search/read/write; scope limited to the launch directorycwd) - 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
srcdirectory 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
- 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
- Release command:
- Automated versioning:
release-pleasebased on Conventional Commits- Common types:
feat:fix:perf:refactor:docs:
- Common types:
- Local build & install:
python -m build(outputsdist/*.tar.gzanddist/*.whl)python -m pip install dist/*.whl
- PRs and issues welcome; follow Conventional Commits so
release-pleasecan generate changelogs. - Dev tips:
- Use
pipxor virtualenv; - Follow
pyproject.tomlstyle (Ruff/Black, line width100). - Run
adorable --helpto quickly validate CLI behavior.
- Use
💡 FAQ & Troubleshooting
- Auth failure / model unavailable:
- Check
API_KEY/BASE_URL; ensureMODEL_IDis supported
- Check
- Poor search quality:
- Set
TAVILY_API_KEY; be explicit about search goals and scope
- Set
- PEP 668 (system env disallows writes):
- Prefer
pipxto get an isolated, cross-platform CLI environment
- Prefer
🔒 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 width100 - CLI entrypoints:
src/adorable_cli/__main__.py,src/adorable_cli/main.py - System prompt:
src/adorable_cli/prompt.py
📜 License
- MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92a6a94f2368da6cf1ea6129886dd79d100ae1748281aa894f9a7c3dbcf3bbf2
|
|
| MD5 |
ea5fd0f919597ae0c5220a0dac6f936c
|
|
| BLAKE2b-256 |
b4523c200f3d248e6c0ee0e140980d23b9eda518cbdf613a401bb60504b39b29
|
Provenance
The following attestation bundles were made for adorable_cli-0.1.10.tar.gz:
Publisher:
pypi-publish.yml on LeonEthan/adorable-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adorable_cli-0.1.10.tar.gz -
Subject digest:
92a6a94f2368da6cf1ea6129886dd79d100ae1748281aa894f9a7c3dbcf3bbf2 - Sigstore transparency entry: 612788440
- Sigstore integration time:
-
Permalink:
LeonEthan/adorable-cli@dd66342077c9428e72d6fc7afd1db130ed415599 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/LeonEthan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@dd66342077c9428e72d6fc7afd1db130ed415599 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1ffc9f2ec26080b660866fcbddf048428a47f44bb8392d8af741ba3bd041c67
|
|
| MD5 |
0eb7b4203b1a6a0dcd9147a4af72ac53
|
|
| BLAKE2b-256 |
fdd09b8d25587279700244d78ff705bcc44dd079bc933e9eee17d7a635aa11b0
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adorable_cli-0.1.10-py3-none-any.whl -
Subject digest:
a1ffc9f2ec26080b660866fcbddf048428a47f44bb8392d8af741ba3bd041c67 - Sigstore transparency entry: 612788469
- Sigstore integration time:
-
Permalink:
LeonEthan/adorable-cli@dd66342077c9428e72d6fc7afd1db130ed415599 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/LeonEthan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@dd66342077c9428e72d6fc7afd1db130ed415599 -
Trigger Event:
push
-
Statement type: