A powerful CLI super agent
Project description
Adorable is a deep agent for complex, long-horizon tasks, powered by the 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.
- Deep Agent: Built on Agno framework for planning, web search, coding, and file operations.
- Claude Code-Inspired Architecture: Streaming-first async generator loop, parallel tool execution, smart context compression.
- 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. - Smart Context Management: Priority-based context assembly with
normalize_to_sizefor token limit handling. - Multi-Modal Toolset:
- Planning: Reasoning engine & Todo list management.
- File Operations: Read-before-edit safety, batch operations with
MultiEditTool, line number prefix validation. - Web Search: Deep web search (DuckDuckGo) & web content fetching (Fetch MCP).
- Coding: Python scripting & Shell commands.
- Vision: Vision capabilities for image analysis.
- Hierarchical Agents:
AgentToolfor task decomposition with sub-agents.
- Streaming-First UI: Real-time response streaming with Rich terminal interface.
- ANR Detection: Worker thread monitors event loop responsiveness (5000ms threshold) with automatic stack capture.
- Line Number Validation: Detects and warns about line number prefixes in edit operations (e.g., "2\tcontent" → "content").
- Bash Sandbox: macOS
sandbox-execintegration with generated profiles for secure command execution.
⚡ Quick Install
We recommend using uv to install and manage Adorable CLI.
Install
uv tool install --python 3.13 adorable-cli
Upgrade
uv tool upgrade adorable-cli --no-cache
If you run into missing dependencies after upgrading, force a reinstall:
uv tool upgrade adorable-cli --reinstall --no-cache
On first run you will be guided to set
API_KEY,BASE_URL,MODEL_IDinto~/.adorable/config.json(and a legacy~/.adorable/configis also maintained for compatibility). You can runador configanytime to update.
- OS: macOS, Linux x86_64
- Arch:
x86_64; Linuxarm64currently not supported - Python:
>= 3.10(recommended3.11) - Linux glibc:
>= 2.28(e.g., Debian 12, Ubuntu 22.04+, CentOS Stream 9)
# Start interactive session
adorable
# Or use alias
ador
# Configure settings
ador config
# Show help
ador --help
CLI Commands
ador/adorable: Start interactive chatador config: Configure API keys and modelsador version: Print CLI version
Interactive Shortcuts
Enter: Submit messageAlt+Enter/Ctrl+J: Insert newline@: File path completion/: Command completion (e.g.,/help,/clear)Ctrl+D/exit: Quit sessionCtrl+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:
ador --api-key sk-xxxx --model gpt-4o chat
🔧 Configuration
- Config File:
~/.adorable/config.json(legacy:~/.adorable/config) - Environment Variables:
OPENAI_API_KEY/API_KEYOPENAI_BASE_URL/BASE_URLDEEPAGENTS_MODEL_ID/MODEL_ID
Advanced Configuration
- Database Path: set
ADORABLE_DB_PATH(ordb.pathinconfig.json) for persistent memory storage.
Example (~/.adorable/config.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
}
}
🧠 Capabilities
- Planning:
ReasoningToolsfor strategy withthink()/analyze();TodoToolsfor task tracking. - Context Management:
ContextAssemblerwith priority-based truncation;normalize_to_sizefor token limits. - Research:
DuckDuckGoToolsfor search; Fetch MCP for web content;FileToolswith read-before-edit safety. - Execution:
PythonToolsfor logic/data;ShellToolswith confirmation for destructive commands. - Tool Orchestration:
ParallelToolExecutorwith side-effect categorization; batch read-only operations. - Hierarchical Agents:
AgentToolfor task decomposition;ResultSynthesizerfor combining sub-agent outputs. - Memory:
SessionSummarizerfor long-term context;WorkingMemoryfor high-priority items;CompressionManagerfor tool results. - Perception:
ImageUnderstandingToolfor visual inputs. - Prompt Engineering: Aggressive conciseness enforcement; confidence calibration; "never guess" uncertainty handling.
See src/adorable_cli/agent/prompts.py for the full system prompt and guidelines.
🏗 Architecture
Adorable CLI is rebuilt with Claude Code's architectural patterns:
Core Components
| Component | Description | Location |
|---|---|---|
| Agent Loop | Six-phase async generator (tt function) with streaming-first design |
core/loop.py |
| Message Models | Three-stage representation (CliMessage → APIMessage → StreamAccumulator) | models/messages.py |
| Context Management | Priority-based assembly + normalize_to_size for token limits |
context/ |
| Tool Execution | Parallel batch execution with side-effect categorization | tools/executor.py |
| File Safety | Read-before-edit enforcement with MultiEditTool |
tools/file_safety.py |
| Streaming JSON | Progressive parser with recovery strategies | utils/streaming_json.py |
| AgentTool | Hierarchical task decomposition with sub-agents | tools/agent_tool.py |
| Memory | Session summarization + working memory + compression | memory/ |
| Prompts | Aggressive conciseness + psychological techniques | prompts/ |
| ANR Detection | Event loop monitoring with heartbeat and stack capture | core/anr_detector.py |
Key Design Patterns
- Streaming-First: All operations use async generators for real-time UI updates
- Interleaved Reasoning:
think()→ action →analyze()loop prevents tool hallucination - Safety-First: File edits require read-before-edit validation
- Parallel Execution: Read-only tools run in parallel; write operations are serialized
- Smart Compression: Context automatically compresses when approaching token limits
🧪 Example Prompts
- "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."
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.2.18.tar.gz.
File metadata
- Download URL: adorable_cli-0.2.18.tar.gz
- Upload date:
- Size: 958.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c2be828b6d91d171b0cf5cc833b8f92986712531eb9027c99f8b83f3329b191
|
|
| MD5 |
6472dc6d5b558a210e89d2db46dae3d3
|
|
| BLAKE2b-256 |
c7a308de91a3ba7e104e902ae8bfaca3e1adc57695594a7b99232da096d4c66e
|
Provenance
The following attestation bundles were made for adorable_cli-0.2.18.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.2.18.tar.gz -
Subject digest:
3c2be828b6d91d171b0cf5cc833b8f92986712531eb9027c99f8b83f3329b191 - Sigstore transparency entry: 879849494
- Sigstore integration time:
-
Permalink:
LeonEthan/adorable-cli@7f6c6d2a7a02d79e7bd921f8f0b928f05a688dd4 -
Branch / Tag:
refs/tags/v0.2.18 - Owner: https://github.com/LeonEthan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@7f6c6d2a7a02d79e7bd921f8f0b928f05a688dd4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file adorable_cli-0.2.18-py3-none-any.whl.
File metadata
- Download URL: adorable_cli-0.2.18-py3-none-any.whl
- Upload date:
- Size: 133.7 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 |
bd9aa0aa76607070f0ebb350174b191e702dbf5bce8b99e08676c0898edbeb2f
|
|
| MD5 |
dc02589cbc4f6511babd5f35fc0bc7bb
|
|
| BLAKE2b-256 |
3558bb4dbd1fbb0fd258d4e435748f2ac4e67009320386769ec97938682fb659
|
Provenance
The following attestation bundles were made for adorable_cli-0.2.18-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.2.18-py3-none-any.whl -
Subject digest:
bd9aa0aa76607070f0ebb350174b191e702dbf5bce8b99e08676c0898edbeb2f - Sigstore transparency entry: 879849559
- Sigstore integration time:
-
Permalink:
LeonEthan/adorable-cli@7f6c6d2a7a02d79e7bd921f8f0b928f05a688dd4 -
Branch / Tag:
refs/tags/v0.2.18 - Owner: https://github.com/LeonEthan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@7f6c6d2a7a02d79e7bd921f8f0b928f05a688dd4 -
Trigger Event:
push
-
Statement type: