Metadata-Version: 2.4
Name: elidia-agent-cli
Version: 2.0.1
Summary: The self-improving AI agent — creates skills from experience, improves them during use, and runs anywhere
Author: AiUtils
License-Expression: MIT
Project-URL: Homepage, https://aiutils.io
Project-URL: Documentation, https://aiutils.io/docs/
Project-URL: Repository, https://github.com/Elidia-Technology/elidia-agent-cli-v2
Project-URL: Bug Tracker, https://github.com/Elidia-Technology/elidia-agent-cli-v2/issues
Project-URL: Discord, https://discord.gg/AiUtils
Requires-Python: <3.14,>=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: openai==2.24.0
Requires-Dist: python-dotenv==1.2.2
Requires-Dist: fire==0.7.1
Requires-Dist: httpx[socks]==0.28.1
Requires-Dist: rich==14.3.3
Requires-Dist: tenacity==9.1.4
Requires-Dist: pyyaml==6.0.3
Requires-Dist: ruamel.yaml==0.18.17
Requires-Dist: requests==2.33.0
Requires-Dist: jinja2==3.1.6
Requires-Dist: pydantic==2.13.4
Requires-Dist: prompt_toolkit==3.0.52
Requires-Dist: croniter==6.0.0
Requires-Dist: PyJWT[crypto]==2.12.1
Requires-Dist: tzdata==2025.3; sys_platform == "win32"
Requires-Dist: psutil==7.2.2
Requires-Dist: pathspec==1.1.1
Requires-Dist: fastapi<1,>=0.104.0
Requires-Dist: uvicorn[standard]<1,>=0.24.0
Requires-Dist: ptyprocess<1,>=0.7.0; sys_platform != "win32"
Requires-Dist: pywinpty<3,>=2.0.0; sys_platform == "win32"
Provides-Extra: anthropic
Requires-Dist: anthropic==0.86.0; extra == "anthropic"
Provides-Extra: exa
Requires-Dist: exa-py==2.10.2; extra == "exa"
Provides-Extra: firecrawl
Requires-Dist: firecrawl-py==4.17.0; extra == "firecrawl"
Provides-Extra: parallel-web
Requires-Dist: parallel-web==0.4.2; extra == "parallel-web"
Provides-Extra: fal
Requires-Dist: fal-client==0.13.1; extra == "fal"
Provides-Extra: edge-tts
Requires-Dist: edge-tts==7.2.7; extra == "edge-tts"
Provides-Extra: modal
Requires-Dist: modal==1.3.4; extra == "modal"
Provides-Extra: daytona
Requires-Dist: daytona==0.155.0; extra == "daytona"
Provides-Extra: hindsight
Requires-Dist: hindsight-client==0.6.1; extra == "hindsight"
Provides-Extra: dev
Requires-Dist: debugpy==1.8.20; extra == "dev"
Requires-Dist: pytest==9.0.2; extra == "dev"
Requires-Dist: pytest-asyncio==1.3.0; extra == "dev"
Requires-Dist: pytest-timeout==2.4.0; extra == "dev"
Requires-Dist: mcp==1.26.0; extra == "dev"
Requires-Dist: starlette==1.0.1; extra == "dev"
Requires-Dist: ty==0.0.21; extra == "dev"
Requires-Dist: ruff==0.15.10; extra == "dev"
Requires-Dist: setuptools==82.0.1; extra == "dev"
Provides-Extra: messaging
Requires-Dist: python-telegram-bot[webhooks]==22.6; extra == "messaging"
Requires-Dist: discord.py[voice]==2.7.1; extra == "messaging"
Requires-Dist: aiohttp==3.13.3; extra == "messaging"
Requires-Dist: brotlicffi==1.2.0.1; extra == "messaging"
Requires-Dist: slack-bolt==1.27.0; extra == "messaging"
Requires-Dist: slack-sdk==3.40.1; extra == "messaging"
Requires-Dist: qrcode==7.4.2; extra == "messaging"
Provides-Extra: cron
Provides-Extra: slack
Requires-Dist: slack-bolt==1.27.0; extra == "slack"
Requires-Dist: slack-sdk==3.40.1; extra == "slack"
Requires-Dist: aiohttp==3.13.3; extra == "slack"
Provides-Extra: matrix
Requires-Dist: mautrix[encryption]==0.21.0; extra == "matrix"
Requires-Dist: Markdown==3.10.2; extra == "matrix"
Requires-Dist: aiosqlite==0.22.1; extra == "matrix"
Requires-Dist: asyncpg==0.31.0; extra == "matrix"
Requires-Dist: aiohttp-socks==0.11.0; extra == "matrix"
Provides-Extra: wecom
Requires-Dist: defusedxml==0.7.1; extra == "wecom"
Provides-Extra: cli
Requires-Dist: simple-term-menu==1.6.6; extra == "cli"
Provides-Extra: tts-premium
Requires-Dist: elevenlabs==1.59.0; extra == "tts-premium"
Provides-Extra: voice
Requires-Dist: faster-whisper==1.2.1; extra == "voice"
Requires-Dist: sounddevice==0.5.5; extra == "voice"
Requires-Dist: numpy==2.4.3; extra == "voice"
Provides-Extra: pty
Provides-Extra: honcho
Requires-Dist: honcho-ai==2.0.1; extra == "honcho"
Provides-Extra: mcp
Requires-Dist: mcp==1.26.0; extra == "mcp"
Requires-Dist: starlette==1.0.1; extra == "mcp"
Provides-Extra: nemo-relay
Requires-Dist: nemo-relay==0.3; extra == "nemo-relay"
Provides-Extra: homeassistant
Requires-Dist: aiohttp==3.13.3; extra == "homeassistant"
Provides-Extra: sms
Requires-Dist: aiohttp==3.13.3; extra == "sms"
Provides-Extra: computer-use
Requires-Dist: mcp==1.26.0; extra == "computer-use"
Requires-Dist: starlette==1.0.1; extra == "computer-use"
Provides-Extra: acp
Requires-Dist: agent-client-protocol==0.9.0; extra == "acp"
Provides-Extra: mistral
Requires-Dist: mistralai==2.4.8; extra == "mistral"
Provides-Extra: bedrock
Requires-Dist: boto3==1.42.89; extra == "bedrock"
Provides-Extra: azure-identity
Requires-Dist: azure-identity==1.25.3; extra == "azure-identity"
Provides-Extra: termux
Requires-Dist: python-telegram-bot[webhooks]==22.6; extra == "termux"
Requires-Dist: elidia-agent-cli[cron]; extra == "termux"
Requires-Dist: elidia-agent-cli[cli]; extra == "termux"
Requires-Dist: elidia-agent-cli[pty]; extra == "termux"
Requires-Dist: elidia-agent-cli[mcp]; extra == "termux"
Requires-Dist: elidia-agent-cli[honcho]; extra == "termux"
Requires-Dist: elidia-agent-cli[acp]; extra == "termux"
Provides-Extra: termux-all
Requires-Dist: elidia-agent-cli[termux]; extra == "termux-all"
Requires-Dist: elidia-agent-cli[google]; extra == "termux-all"
Requires-Dist: elidia-agent-cli[homeassistant]; extra == "termux-all"
Requires-Dist: elidia-agent-cli[sms]; extra == "termux-all"
Requires-Dist: elidia-agent-cli[web]; extra == "termux-all"
Provides-Extra: dingtalk
Requires-Dist: dingtalk-stream==0.24.3; extra == "dingtalk"
Requires-Dist: alibabacloud-dingtalk==2.2.42; extra == "dingtalk"
Requires-Dist: qrcode==7.4.2; extra == "dingtalk"
Provides-Extra: feishu
Requires-Dist: lark-oapi==1.5.3; extra == "feishu"
Requires-Dist: qrcode==7.4.2; extra == "feishu"
Provides-Extra: google
Requires-Dist: google-api-python-client==2.194.0; extra == "google"
Requires-Dist: google-auth-oauthlib==1.3.1; extra == "google"
Requires-Dist: google-auth-httplib2==0.3.1; extra == "google"
Provides-Extra: youtube
Requires-Dist: youtube-transcript-api==1.2.4; extra == "youtube"
Provides-Extra: web
Requires-Dist: fastapi==0.133.1; extra == "web"
Requires-Dist: uvicorn[standard]==0.41.0; extra == "web"
Requires-Dist: starlette==1.0.1; extra == "web"
Provides-Extra: all
Requires-Dist: elidia-agent-cli[cron]; extra == "all"
Requires-Dist: elidia-agent-cli[cli]; extra == "all"
Requires-Dist: elidia-agent-cli[dev]; extra == "all"
Requires-Dist: elidia-agent-cli[pty]; extra == "all"
Requires-Dist: elidia-agent-cli[mcp]; extra == "all"
Requires-Dist: elidia-agent-cli[homeassistant]; extra == "all"
Requires-Dist: elidia-agent-cli[sms]; extra == "all"
Requires-Dist: elidia-agent-cli[acp]; extra == "all"
Requires-Dist: elidia-agent-cli[google]; extra == "all"
Requires-Dist: elidia-agent-cli[web]; extra == "all"
Requires-Dist: elidia-agent-cli[youtube]; extra == "all"
Dynamic: license-file

<p align="center">
  <img src="assets/banner.png" alt="Elidia Agent" width="100%">
</p>

# Elidia Agent ☤

<p align="center">
  <a href="https://pypi.org/project/elidia-agent-cli/"><img src="https://img.shields.io/pypi/v/elidia-agent-cli?style=for-the-badge&label=PyPI&color=3775A9" alt="PyPI"></a>
  <a href="https://aiutils.io/docs/"><img src="https://img.shields.io/badge/Docs-aiutils.io-FFD700?style=for-the-badge" alt="Documentation"></a>
  <a href="https://discord.gg/AiUtils"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License: MIT"></a>
  <a href="https://aiutils.io"><img src="https://img.shields.io/badge/Built%20by-AiUtils-blueviolet?style=for-the-badge" alt="Built by AiUtils"></a>
  <a href="README.zh-CN.md"><img src="https://img.shields.io/badge/Lang-中文-red?style=for-the-badge" alt="中文"></a>
</p>

**The self-improving AI agent built by [AiUtils](https://aiutils.io).** It's the only agent with a built-in learning loop — it creates skills from experience, improves them during use, nudges itself to persist knowledge, searches its own past conversations, and builds a deepening model of who you are across sessions. Run it on a $5 VPS, a GPU cluster, or serverless infrastructure that costs nearly nothing when idle. It's not tied to your laptop — talk to it from Telegram while it works on a cloud VM.

Use any model you want — [Elidia Portal](https://developer.aiutils.io), [OpenRouter](https://openrouter.ai) (200+ models), [NovitaAI](https://novita.ai) (AI-native cloud for Model API, Agent Sandbox, and GPU Cloud), [NVIDIA NIM](https://build.nvidia.com) (Nemotron), [Xiaomi MiMo](https://platform.xiaomimimo.com), [z.ai/GLM](https://z.ai), [Kimi/Moonshot](https://platform.moonshot.ai), [MiniMax](https://www.minimax.io), [Hugging Face](https://huggingface.co), OpenAI, or your own endpoint. Switch with `elidia model` — no code changes, no lock-in.

<table>
<tr><td><b>A real terminal interface</b></td><td>Full TUI with multiline editing, slash-command autocomplete, conversation history, interrupt-and-redirect, and streaming tool output.</td></tr>
<tr><td><b>Lives where you do</b></td><td>Telegram, Discord, Slack, WhatsApp, Signal, and CLI — all from a single gateway process. Voice memo transcription, cross-platform conversation continuity.</td></tr>
<tr><td><b>A closed learning loop</b></td><td>Agent-curated memory with periodic nudges. Autonomous skill creation after complex tasks. Skills self-improve during use. FTS5 session search with LLM summarization for cross-session recall. <a href="https://github.com/plastic-labs/honcho">Honcho</a> dialectic user modeling. Compatible with the <a href="https://agentskills.io">agentskills.io</a> open standard.</td></tr>
<tr><td><b>Scheduled automations</b></td><td>Built-in cron scheduler with delivery to any platform. Daily reports, nightly backups, weekly audits — all in natural language, running unattended.</td></tr>
<tr><td><b>Delegates and parallelizes</b></td><td>Spawn isolated subagents for parallel workstreams. Write Python scripts that call tools via RPC, collapsing multi-step pipelines into zero-context-cost turns.</td></tr>
<tr><td><b>Runs anywhere, not just your laptop</b></td><td>Six terminal backends — local, Docker, SSH, Singularity, Modal, and Daytona. Daytona and Modal offer serverless persistence — your agent's environment hibernates when idle and wakes on demand, costing nearly nothing between sessions. Run it on a $5 VPS or a GPU cluster.</td></tr>
<tr><td><b>Research-ready</b></td><td>Batch trajectory generation, trajectory compression for training the next generation of tool-calling models.</td></tr>
</table>

---

## Install

Requires **Python 3.11–3.13**.

```bash
pip install elidia-agent-cli
```

Prefer an isolated tool environment? Use [uv](https://docs.astral.sh/uv/) (recommended) or [pipx](https://pipx.pypa.io/):

```bash
uv tool install elidia-agent-cli
# or
pipx install elidia-agent-cli
```

To pull in every optional backend in one shot (messaging platforms, web search, image generation, TTS, and more):

```bash
pip install "elidia-agent-cli[all]"
```

After installation:

```bash
elidia              # start chatting!
```

> **Android / Termux:** the tested manual path is documented in the [Termux guide](https://aiutils.io/docs/getting-started/termux). On Termux, install the curated extra that avoids Android-incompatible voice dependencies:
>
> ```bash
> pip install "elidia-agent-cli[termux]"
> ```

---

## Getting Started

```bash
elidia              # Interactive CLI — start a conversation
elidia model        # Choose your LLM provider and model
elidia tools        # Configure which tools are enabled
elidia config set   # Set individual config values
elidia gateway      # Start the messaging gateway (Telegram, Discord, etc.)
elidia setup        # Run the full setup wizard (configures everything at once)
elidia claw migrate # Migrate from OpenClaw (if coming from OpenClaw)
elidia update       # Update to the latest version
elidia doctor       # Diagnose any issues
```

📖 **[Full documentation →](https://aiutils.io/docs/)**

---

## Skip the API-key collection — Elidia Portal

Elidia works with whatever provider you want — that's not changing. But if you'd rather not collect five separate API keys for the model, web search, image generation, TTS, and a cloud browser, **[Elidia Portal](https://developer.aiutils.io)** covers all of them under one subscription:

- **300+ models** — pick any of them with `/model <name>`
- **Tool Gateway** — web search (Firecrawl), image generation (FAL), text-to-speech (OpenAI), cloud browser (Browser Use), all routed through your sub. No extra accounts.

One command from a fresh install:

```bash
elidia setup --portal
```

That logs you in via OAuth, sets Elidia as your provider, and turns on the Tool Gateway. Check what's wired up any time with `elidia portal info`. Full details on the [Tool Gateway docs page](https://aiutils.io/docs/user-guide/features/tool-gateway).

You can still bring your own keys per-tool whenever you want — the gateway is per-backend, not all-or-nothing.

---

## CLI vs Messaging Quick Reference

Elidia has two entry points: start the terminal UI with `elidia`, or run the gateway and talk to it from Telegram, Discord, Slack, WhatsApp, Signal, or Email. Once you're in a conversation, many slash commands are shared across both interfaces.

| Action                         | CLI                                           | Messaging platforms                                                              |
| ------------------------------ | --------------------------------------------- | -------------------------------------------------------------------------------- |
| Start chatting                 | `elidia`                                      | Run `elidia gateway setup` + `elidia gateway start`, then send the bot a message |
| Start fresh conversation       | `/new` or `/reset`                            | `/new` or `/reset`                                                               |
| Change model                   | `/model [provider:model]`                     | `/model [provider:model]`                                                        |
| Set a personality              | `/personality [name]`                         | `/personality [name]`                                                            |
| Retry or undo the last turn    | `/retry`, `/undo`                             | `/retry`, `/undo`                                                                |
| Compress context / check usage | `/compress`, `/usage`, `/insights [--days N]` | `/compress`, `/usage`, `/insights [days]`                                        |
| Browse skills                  | `/skills` or `/<skill-name>`                  | `/<skill-name>`                                                                  |
| Interrupt current work         | `Ctrl+C` or send a new message                | `/stop` or send a new message                                                    |
| Platform-specific status       | `/platforms`                                  | `/status`, `/sethome`                                                            |

For the full command lists, see the [CLI guide](https://aiutils.io/docs/user-guide/cli) and the [Messaging Gateway guide](https://aiutils.io/docs/user-guide/messaging).

---

## Documentation

All documentation lives at **[aiutils.io/docs](https://aiutils.io/docs/)**:

| Section                                                                                             | What's Covered                                             |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [Quickstart](https://aiutils.io/docs/getting-started/quickstart)                 | Install → setup → first conversation in 2 minutes          |
| [CLI Usage](https://aiutils.io/docs/user-guide/cli)                              | Commands, keybindings, personalities, sessions             |
| [Configuration](https://aiutils.io/docs/user-guide/configuration)                | Config file, providers, models, all options                |
| [Messaging Gateway](https://aiutils.io/docs/user-guide/messaging)                | Telegram, Discord, Slack, WhatsApp, Signal, Home Assistant |
| [Security](https://aiutils.io/docs/user-guide/security)                          | Command approval, DM pairing, container isolation          |
| [Tools & Toolsets](https://aiutils.io/docs/user-guide/features/tools)            | 40+ tools, toolset system, terminal backends               |
| [Skills System](https://aiutils.io/docs/user-guide/features/skills)              | Procedural memory, Skills Hub, creating skills             |
| [Memory](https://aiutils.io/docs/user-guide/features/memory)                     | Persistent memory, user profiles, best practices           |
| [MCP Integration](https://aiutils.io/docs/user-guide/features/mcp)               | Connect any MCP server for extended capabilities           |
| [Cron Scheduling](https://aiutils.io/docs/user-guide/features/cron)              | Scheduled tasks with platform delivery                     |
| [Context Files](https://aiutils.io/docs/user-guide/features/context-files)       | Project context that shapes every conversation             |
| [Architecture](https://aiutils.io/docs/developer-guide/architecture)             | Project structure, agent loop, key classes                 |
| [Contributing](https://aiutils.io/docs/developer-guide/contributing)             | Development setup, PR process, code style                  |
| [CLI Reference](https://aiutils.io/docs/reference/cli-commands)                  | All commands and flags                                     |
| [Environment Variables](https://aiutils.io/docs/reference/environment-variables) | Complete env var reference                                 |

---

## Migrating from OpenClaw

If you're coming from OpenClaw, Elidia can automatically import your settings, memories, skills, and API keys.

**During first-time setup:** The setup wizard (`elidia setup`) automatically detects `~/.openclaw` and offers to migrate before configuration begins.

**Anytime after install:**

```bash
elidia claw migrate              # Interactive migration (full preset)
elidia claw migrate --dry-run    # Preview what would be migrated
elidia claw migrate --preset user-data   # Migrate without secrets
elidia claw migrate --overwrite  # Overwrite existing conflicts
```

What gets imported:

- **SOUL.md** — persona file
- **Memories** — MEMORY.md and USER.md entries
- **Skills** — user-created skills → `~/.elidia/skills/openclaw-imports/`
- **Command allowlist** — approval patterns
- **Messaging settings** — platform configs, allowed users, working directory
- **API keys** — allowlisted secrets (Telegram, OpenRouter, OpenAI, Anthropic, ElevenLabs)
- **TTS assets** — workspace audio files
- **Workspace instructions** — AGENTS.md (with `--workspace-target`)

See `elidia claw migrate --help` for all options, or use the `openclaw-migration` skill for an interactive agent-guided migration with dry-run previews.

---

## Repository & Releases

This public repository hosts the **packaged releases and documentation** for Elidia Agent. The source code is developed in a private repository and distributed as build artifacts on [PyPI](https://pypi.org/project/elidia-agent-cli/).

- **Latest release:** see the [Releases](https://github.com/Elidia-Technology/elidia-agent-cli-v2/releases) page for the current `.whl` and `.tar.gz` build artifacts.
- **Documentation:** [aiutils.io/docs](https://aiutils.io/docs/)
- **Report a bug / request a feature:** open an [Issue](https://github.com/Elidia-Technology/elidia-agent-cli-v2/issues)

Contributions are welcome — see the [Contributing Guide](https://aiutils.io/docs/developer-guide/contributing) for code style and the PR process. Since this repository does not host source code, please raise issues here rather than opening code PRs against it.

---

## Community

- 💬 [Discord](https://discord.gg/AiUtils)
- 📚 [Skills Hub](https://agentskills.io)
- 🔌 [computer-use-linux](https://github.com/avifenesh/computer-use-linux) — Linux desktop-control MCP server for Elidia and other MCP hosts, with AT-SPI accessibility trees, Wayland/X11 input, screenshots, and compositor window targeting.
- 🔌 [ElidiaClaw](https://github.com/AaronWong1999/elidiaclaw) — Community WeChat bridge: Run Elidia Agent and OpenClaw on the same WeChat account.

---

## License

MIT — see [LICENSE](LICENSE).

Built by [AiUtils](https://aiutils.io).
