Metadata-Version: 2.4
Name: adorable-cli
Version: 0.2.16
Summary: A powerful CLI super agent
Author-email: LeonEthan <czlbou2012@gmail.com>
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: agno>=2.2.8
Requires-Dist: fastapi>=0.110.0
Requires-Dist: rich>=13.0.0
Requires-Dist: typer>=0.12.0
Requires-Dist: openai>=1.0.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: ddgs<9.6.0
Requires-Dist: firecrawl-py>=4.3.6
Requires-Dist: httpx[socks]>=0.28.1
Requires-Dist: chonkie>=1.3.1
Requires-Dist: mcp>=1.17.0
Requires-Dist: sqlalchemy>=2.0.44
Requires-Dist: prompt-toolkit>=3.0.0
Requires-Dist: update>=0.0.1
Requires-Dist: uvicorn>=0.30.0
Requires-Dist: lancedb>=0.17.0
Requires-Dist: pandas>=2.0.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Dynamic: license-file

<div align="center">

<img src="assets/adorable-ai-logo.png" alt="adorable logo" width="220" />

# Adorable CLI - Deep Agent built on Agno

<p align="center">
  <img src="https://img.shields.io/badge/python-3.10%2B-blue.svg" alt="Python">
  <img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License">
  <img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome">
</p>

<p align="center">
  <a href="#quick-install">Quick Install</a> •
  <a href="#features">Features</a> •
  <a href="#usage">Usage</a> •
  <a href="#configuration">Configuration</a>
</p>

<p align="center">
  <a href="README.md"><img src="https://img.shields.io/badge/EN-English-blue" alt="English"></a>
  <a href="README.zh-CN.md"><img src="https://img.shields.io/badge/🇨🇳_中文-red" alt="中文"></a>
</p>

</div>

---

**Adorable** is a deep agent for complex, long-horizon tasks, powered by the [Agno](https://github.com/agno-agi/agno) framework. It operates through continuous **interleaved reasoning and action**—thinking before every step, executing with precision, and analyzing results—to handle research, coding, and system automation reliably.

> Built on Agno's agent architecture with persistent memory, tool orchestration, and OpenAI-compatible APIs.

---

<div align="center">

<a id="features"></a>
## 🧩 Features

</div>

- **Deep Agent**: Built on Agno framework for planning, web search, coding, and file operations.
- **Interleaved Thinking**: Continuous **Think → Act → Analyze** loop—reasons before every step, never guesses, verifies all assumptions.
- **Persistent Memory**: Uses SQLite (`~/.adorable/memory.db`) and session summaries to maintain context across long sessions.
- **Multi-Modal Toolset**:
  - **Planning**: Reasoning engine & Todo list management.
  - **File Operations**: File reading, writing, and directory navigation.
  - **Web Search**: Deep web search (DuckDuckGo) & web content fetching (Fetch MCP).
  - **Coding**: Python scripting & Shell commands.
  - **Vision**: Vision capabilities for image analysis.
- **Interactive UI**: Rich terminal interface with history, autocompletion, and shortcuts.

<div align="center">

<a id="quick-install"></a>
## ⚡ Quick Install

We recommend using [uv](https://github.com/astral-sh/uv) to install and manage Adorable CLI.

### Install

```bash
uv tool install --python 3.13 adorable-cli
```

### Upgrade

```bash
uv tool upgrade adorable-cli --no-cache
```

If you run into missing dependencies after upgrading, force a reinstall:

```bash
uv tool upgrade adorable-cli --reinstall --no-cache
```

</div>

> On first run you will be guided to set `API_KEY`, `BASE_URL`, `MODEL_ID` into `~/.adorable/config.json` (and a legacy `~/.adorable/config` is also maintained for compatibility). You can run `ador config` anytime to update.

<div align="center">
  <a id="platform"></a>
  
  ## 🖥 Platform Support
</div>

- OS: macOS, Linux x86_64
- Arch: `x86_64`; Linux `arm64` currently not supported
- Python: `>= 3.10` (recommended `3.11`)
- Linux glibc: `>= 2.28` (e.g., Debian 12, Ubuntu 22.04+, CentOS Stream 9)

<div align="center">

<a id="usage"></a>
## 🚀 Usage

</div>

```bash
# Start interactive session
adorable
# Or use alias
ador

# Configure settings
ador config

# Show help
ador --help
```

### CLI Commands

- `ador` / `adorable`: Start interactive chat
- `ador config`: Configure API keys and models
- `ador version`: Print CLI version
- `ador kb check`: Smoke-check knowledge backend (e.g., pgvector)

### Interactive Shortcuts
- `Enter`: Submit message
- `Alt+Enter` / `Ctrl+J`: Insert newline
- `@`: File path completion
- `/`: Command completion (e.g., `/help`, `/clear`)
- `Ctrl+D` / `exit`: Quit session
- `Ctrl+Q`: Quick exit

### Global Options

- `--model <ID>`: Primary model ID (e.g., `gpt-4o`)
- `--base-url <URL>`: OpenAI-compatible base URL
- `--api-key <KEY>`: API key
- `--debug`: Enable debug logging
- `--plain`: Disable color output

Example:

```bash
ador --api-key sk-xxxx --model gpt-4o chat
```

<div align="center">

## 🔧 Configuration

</div>

- **Config File**: `~/.adorable/config.json` (legacy: `~/.adorable/config`)
- **Environment Variables**:
  - `OPENAI_API_KEY` / `API_KEY`
  - `OPENAI_BASE_URL` / `BASE_URL`
  - `DEEPAGENTS_MODEL_ID` / `MODEL_ID`

### Advanced Configuration

- **Database Path**: set `ADORABLE_DB_PATH` (or `db.path` in `config.json`) to share sessions between CLI and `ador serve`.
- **Knowledge Backend**: set `knowledge.backend` to `lancedb` (default) or `pgvector`.
  - For pgvector, set `knowledge.pgvector.dsn` and optional `knowledge.pgvector.table`.
- **Extensions**:
  - `~/.adorable/tools`, `~/.adorable/skills`, `~/.adorable/commands`
  - Optional: `~/.claude/skills`

Example (`~/.adorable/config.json`):

```json
{
  "openai": {
    "api_key": "sk-xxxx",
    "base_url": "https://api.openai.com/v1"
  },
  "models": {
    "default": "gpt-4o",
    "fast": "gpt-4o-mini",
    "vlm": "gpt-4o"
  },
  "confirm_mode": "ask",
  "server": {
    "host": "0.0.0.0",
    "port": 7777
  }
}
```

<div align="center">

## 🧠 Capabilities

</div>

- **Planning**: `ReasoningTools` for strategy; `TodoTools` for task tracking.
- **Research**: `DuckDuckGoTools` for search; Fetch MCP for web content extraction; `FileTools` for local context.
- **Execution**: `PythonTools` for logic/data; `ShellTools` for system ops.
- **Perception**: `ImageUnderstandingTool` for visual inputs.

See `src/adorable_cli/agent/prompts.py` for the full system prompt and guidelines.

<div align="center">

## 🧪 Example Prompts

</div>

- "Research the current state of quantum computing and write a summary markdown file."
- "Clone the 'requests' repo, analyze the directory structure, and create a diagram."
- "Plan and execute a data migration script for these CSV files."
