Metadata-Version: 2.5
Name: aioli-cli
Version: 0.1.29
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: 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-kokoro
Requires-Dist: kokoro-onnx>=0.4; extra == 'voice-kokoro'
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>Your at-home AI studio: clone voices, compose songs, draw images,<br />generate video and produce podcasts. All on your machine. No cloud.</em>
</p>

<p align="center">
  <a href="https://pypi.org/project/aioli-cli/"><img src="https://img.shields.io/pypi/v/aioli-cli" alt="PyPI version" /></a>
  <img src="https://img.shields.io/badge/python-%3E%3D3.12-blue" alt="python >= 3.12" />
  <img src="https://img.shields.io/badge/license-MIT-green" alt="MIT" />
  <img src="https://img.shields.io/badge/GPU-NVIDIA%20recommended-orange" alt="NVIDIA recommended" />
</p>

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

---

## What it does (with real examples)

| Plugin | Produces | Example |
| --- | --- | --- |
| 🎙️ `voice` | Cloned or synthetic voice as WAV (native Spanish with chatterbox, free CPU drafts with piper) | `aioli voice generate "Hola mundo" --profile vega --engine chatterbox -o hola.wav` |
| 🎵 `music` | Full song (vocals + instruments) from a style and your lyrics — it sings in Spanish | `aioli music generate --preset reggae-consciente --backend yue2 -l my-lyrics.txt -o track.mp3` |
| 🖼️ `image` | Image from text, editing, inpainting or character reference (~9 s with FLUX-klein-4b) | `aioli image generate "a robot garlic" -m z_image_turbo` |
| 🎬 `video` | MP4 clip with synced audio from text or image | `aioli video generate "a robot garlic dancing" --frames 81 -o ajo.mp4` |
| 🎧 `master` | Audio finishing with ffmpeg: mix, ducking, denoise, `-16 LUFS` | `aioli master loudnorm mix.wav -o final.wav` |
| 📻 `podcast` | MP3 episode + show notes from a script (voices + music bed + pauses) | `aioli podcast episode script.md -o ./ep1` |

19 songs, their cover art and several clips were made this way, locally,
with these commands. No accounts, no subscription.

## How it works

1. `aioli setup` inspects your machine and tells you what fits your GPU.
2. `aioli models download` fetches verified weights (sha256, resumable)
   into `~/.local/share/aioli` (or wherever `AIOLI_MODELS_DIR` points).
3. You generate locally: not a byte leaves your machine. No accounts, no
   subscription. Only licensed weights (Flux, LTX) ask for a free
   HuggingFace account to accept their license once.

## Install

```bash
curl -fsSL https://aioli.es/install.sh | sh   # hardware → advice → models, fully guided
# …or by hand (needs `uv`, Python ≥3.12 and `ffmpeg`):
uv tool install aioli-cli            # extras: aioli-cli[voice-piper,music-storage]
aioli setup                            # tells you what fits your GPU, downloads weights
aioli doctor                           # preflight: CUDA, ffmpeg, models, VRAM
```

For top-tier image and video (Flux, LTX), accept their license on
huggingface.co and export `HF_TOKEN` (read-only token) before `setup`.

> 🔒 Paranoid (good): the installer lives in the repo's `install.sh`.
> It only uses the network for `astral.sh` (uv), GitHub and HuggingFace.
> No `sudo`.

## Requirements

| What | Minimum | Recommended |
| --- | --- | --- |
| OS | Ubuntu 22.04+ | Ubuntu 24.04 |
| GPU | none (CPU voice with piper) | NVIDIA 12–16 GB VRAM |
| Disk | 15 GB (one plugin) | 100 GB (full set ≈ 60 GB) |
| Account | — | free HuggingFace (for Flux and LTX, licensed) |

`aioli setup` detects your machine (tier `patata/modesta/capaz/bicha` —
yes, potato to beast) and only downloads what fits. Weights are sha256
verified and resume if your connection drops.

## Usage

```bash
# image: text → PNG (editing, inpainting and reference available)
aioli image generate "a lighthouse in the fog" -m z_image_turbo

# music: style + your lyrics → full song
aioli music generate "cheerful rumba" --backend yue2
aioli music generate --preset reggae-consciente -l my-lyrics.txt -o track.mp3

# voice: create profile, add a sample with its transcript, generate
aioli voice profiles create vega --language es
aioli voice profiles add-sample vega ref.wav -t "exact audio transcript"
aioli voice generate "Hola mundo" --profile vega --engine chatterbox -o hola.wav

# video: text or image → clip with audio
aioli video generate "a robot garlic dancing" --frames 81 -o ajo.mp4

# podcast: script with [VOICES], [MUSIC:] and [PAUSE:] → episode + notes
aioli podcast episode script.md -o ./ep1

# master: finish any audio (mix, ducking, -16 LUFS…)
aioli master loudnorm mix.wav -o final.wav
```

`aioli <plugin> --help` details every command; `aioli doctor` diagnoses
failures. Note: the CLI itself speaks Spanish — the models don't mind.

## License

MIT. Third-party weights carry their own license (some non-commercial or
requiring acceptance on HuggingFace); `aioli models` warns you.
