Metadata-Version: 2.5
Name: aioli-cli
Version: 0.1.5
Summary: aioli — local-first AI media suite CLI (images, video, music, voice, podcast)
Author: aioli contributors
License: MIT
License-File: LICENSE
Keywords: ai,generative,image,local-first,music,tts,video
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Multimedia
Requires-Python: >=3.12
Requires-Dist: httpx>=0.27
Requires-Dist: huggingface-hub>=0.30
Requires-Dist: inquirerpy>=0.3.4
Requires-Dist: kokoro-onnx>=0.4
Requires-Dist: numpy>=1.26
Requires-Dist: pillow>=10.0
Requires-Dist: pydantic-settings>=2.3
Requires-Dist: pydantic>=2.7
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.0
Requires-Dist: soundfile>=0.12
Requires-Dist: typer>=0.12
Provides-Extra: music-storage
Requires-Dist: boto3>=1.34; extra == 'music-storage'
Provides-Extra: voice-piper
Requires-Dist: piper-tts>=1.2; extra == 'voice-piper'
Description-Content-Type: text/markdown

<p align="center">
  <img src="assets/logo-transparent.png" width="220" alt="aioli logo — robot garlic" />
</p>

<h1 align="center">🧄 aioli</h1>

<p align="center">
  <em>Local-first AI media suite. One CLI, many plugins — everything on your machine, no cloud required. 🌙</em>
</p>

<p align="center">
  🎙️ Voice &nbsp;•&nbsp; 🎵 Music &nbsp;•&nbsp; 🖼️ Image &nbsp;•&nbsp; 🎬 Video &nbsp;•&nbsp; 🎧 Post &nbsp;•&nbsp; 🎙️📻 Podcast
</p>

---

## ✨ Quickstart

```bash
curl -LsSf aioli.es/install.sh | sh   # 🧄 dummy-proof: equipo → consejo → modelos
# …o paso a paso:
uv tool install aioli-cli            # 📦 un paquete; extras: aioli-cli[voice-qwen3,full]
aioli setup                            # 🧭 asesora según tu GPU y descarga pesos
aioli doctor                           # 🩺 preflight: CUDA, ffmpeg, models, VRAM
aioli models download image music      # ⬇️ weights with resume + sha256 (HF_TOKEN for gated repos)
aioli voice generate "..." --profile vega   # 🎙️ clone a voice
aioli music generate "rumba alegre" --backend yue2  # 🎵 compose a song
aioli podcast episode "la historia del café" --minutes 5  # 📻 full episode
```

> **Desde el repo (dev):** `uv tool install -e .` desde la raíz (un solo
> paquete editable con todo dentro). Extras: `uv tool install -e ".[full]"`.

## 🗂️ Layout

```
aioli/
  apps/aioli/src/aioli_cli/  # 🧄 CLI (Typer + registry + setup + models)
  libs/contract/src/         # 📜 contrato: config, doctor, probe, advise, fetch
  plugins/*/src/             # 🔌 un módulo por modalidad (mismo dist, entry points para terceros)
  docs/catalog.md    # 🗺️ inventory of everything (legacy + new)
  assets/            # 🎨 logo + mascot variants
```

## 📚 Docs

| Doc | Para quién |
|---|---|
| [docs/INSTALL.md](docs/INSTALL.md) | 🧑‍💻 instalar desde cero (requisitos, HF_TOKEN, problemas comunes) |
| [docs/USAGE.md](docs/USAGE.md) | 🎨 recetas validadas por plugin (comandos que funcionan) |
| [docs/adr/](docs/adr/) | 🧠 por qué se decidió cada cosa (4 ADRs) |
| [docs/catalog.md](docs/catalog.md) | 🗺️ inventario vivo: portado vs legacy + deuda |

## 📜 Contract (every plugin obeys it)

- ▶️ `aioli <plugin> generate ...` — produce media
- ⬇️ `aioli <plugin> models download` — fetch weights with checksum
- 🩺 `aioli doctor` — preflight: CUDA, ffmpeg, models, VRAM
- ⚙️ Config in `~/.config/aioli/config.toml`, env overrides (`AIOLI_MODELS_DIR`, …)
- 🚫 No absolute paths, no hardcoded GPUs, no cloud credentials required.

## 🗺️ Status

See [docs/catalog.md](docs/catalog.md) for the living inventory: what's ported, what's legacy, and the tech debt. 🧾
