@mrgoonie/multix 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.12.0](https://github.com/mrgoonie/multix-cli/compare/v0.11.0...v0.12.0) (2026-10-11)
9
+
10
+
11
+ ### Added
12
+
13
+ * **replicate:** add direct Replicate API provider ([#67](https://github.com/mrgoonie/multix-cli/issues/67)) ([72fa63b](https://github.com/mrgoonie/multix-cli/commit/72fa63b7394a45a9128d3b9c7d2269fa96daf44a))
14
+
15
+ ## [0.11.0](https://github.com/mrgoonie/multix-cli/compare/v0.10.0...v0.11.0) (2026-10-11)
16
+
17
+
18
+ ### Added
19
+
20
+ * **atlascloud:** add Atlas Cloud provider ([#68](https://github.com/mrgoonie/multix-cli/issues/68)) ([39b4bb0](https://github.com/mrgoonie/multix-cli/commit/39b4bb051b3d5f04042c291b58496d2c1490a70f))
21
+
8
22
  ## [0.10.0](https://github.com/mrgoonie/multix-cli/compare/v0.9.0...v0.10.0) (2026-10-11)
9
23
 
10
24
 
package/README.md CHANGED
@@ -4,7 +4,7 @@ AI multimodal CLI — generate images/video/speech/music, analyze and transcribe
4
4
 
5
5
  ![Isometric technical illustration of multix media workflows](docs-site/public/images/multix-isometric-banner.png)
6
6
 
7
- Supports **OpenAI** (image, image edits, TTS, STT, optional Codex image driver), **Gemini** (analyze, transcribe, generate, Veo video, Flash TTS), **MiniMax** (image, video, speech, music), **OpenRouter** (image generation), **Leonardo.Ai** (image, video, upscale), **BytePlus** (Seedream image, Seedance video, Hyper3D / Hitem3d 3D), **Cloudflare** (Workers AI image and speech; AI Gateway-routed Replicate video), **ElevenLabs** (TTS, voice cloning, STT, voice changer, SFX, music, dubbing, isolation, alignment), and **fal.ai** (generic model runner, image, video via the fal queue API).
7
+ Supports **OpenAI** (image, image edits, TTS, STT, optional Codex image driver), **Gemini** (analyze, transcribe, generate, Veo video, Flash TTS), **MiniMax** (image, video, speech, music), **OpenRouter** (image generation), **Leonardo.Ai** (image, video, upscale), **BytePlus** (Seedream image, Seedance video, Hyper3D / Hitem3d 3D), **Cloudflare** (Workers AI image and speech; AI Gateway-routed Replicate video), **ElevenLabs** (TTS, voice cloning, STT, voice changer, SFX, music, dubbing, isolation, alignment), **fal.ai** (generic model runner, image, video via the fal queue API), and **Atlas Cloud** (any model: image, image edit, video, audio, 3D, with resumable async predictions), **Replicate** (generic model runner, image, video, async prediction status/cancel via the direct Replicate API).
8
8
 
9
9
  ## Documentation
10
10
 
@@ -71,6 +71,13 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
71
71
  | `FAL_IMAGE_MODEL` | No | Default fal image model (default `fal-ai/flux/schnell`) |
72
72
  | `FAL_VIDEO_MODEL` | No | Default fal text-to-video model (default `fal-ai/kling-video/v1.6/standard/text-to-video`) |
73
73
  | `FAL_VIDEO_IMAGE_MODEL` | No | Default fal image-to-video model, used when `--image-url` is passed without `-m` (default `fal-ai/kling-video/v1.6/standard/image-to-video`) |
74
+ | `ATLASCLOUD_API_KEY` | For Atlas Cloud | [Atlas Cloud](https://www.atlascloud.ai/console/api-keys) |
75
+ | `ATLASCLOUD_BASE_URL` | No | Override Atlas Cloud media API base (default `https://api.atlascloud.ai/api/v1`) |
76
+ | `ATLASCLOUD_IMAGE_MODEL` / `ATLASCLOUD_IMAGE_EDIT_MODEL` | No | Atlas image defaults (`black-forest-labs/flux-schnell`, `openai/gpt-image-1-mini/edit`) |
77
+ | `ATLASCLOUD_VIDEO_MODEL` / `ATLASCLOUD_IMAGE_TO_VIDEO_MODEL` | No | Atlas video defaults (`bytedance/seedance-v1-pro-fast/text-to-video`, `.../image-to-video`) |
78
+ | `ATLASCLOUD_TTS_MODEL` / `ATLASCLOUD_STT_MODEL` | No | Atlas audio defaults (`xai/tts-v1`, `bytedance/seed-asr-2.0`) |
79
+ | `ATLASCLOUD_TEXT_TO_3D_MODEL` / `ATLASCLOUD_IMAGE_TO_3D_MODEL` | No | Atlas 3D defaults (`tencent/hunyuan3d-rapid/text-to-3d`, `.../image-to-3d`) |
80
+ | `ATLASCLOUD_MAX_UPLOAD_MB` | No | Size limit for local files uploaded to Atlas Cloud (default `200`) |
74
81
  | `ARK_API_KEY` | No | Fallback for `BYTEPLUS_API_KEY` (Volcengine ARK shared name) |
75
82
  | `BYTEPLUS_BASE_URL` | No | Override BytePlus base (default `https://ark.ap-southeast.bytepluses.com/api/v3`) |
76
83
  | `BYTEPLUS_IMAGE_MODEL` | No | Default Seedream model (default `seedream-4-0-250828`) |
@@ -81,7 +88,11 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
81
88
  | `CLOUDFLARE_API_TOKEN` | For Cloudflare media | Cloudflare API token for Workers AI and AI Gateway |
82
89
  | `CLOUDFLARE_AI_GATEWAY_ID` | Video only | AI Gateway ID; optional for Workers AI image/speech, required for video |
83
90
  | `CLOUDFLARE_AI_GATEWAY_COLLECT_LOG_PAYLOAD` | No | Set to `true` to explicitly opt in to AI Gateway request-payload collection; defaults to `false` |
84
- | `REPLICATE_API_TOKEN` | Cloudflare video only | Replicate API token used through Cloudflare AI Gateway |
91
+ | `REPLICATE_API_TOKEN` | For Replicate / Cloudflare video | [Replicate](https://replicate.com/account/api-tokens) token for `multix replicate`; also used by Cloudflare AI Gateway video |
92
+ | `REPLICATE_API_KEY` | No | Fallback for `REPLICATE_API_TOKEN` (direct `multix replicate` only) |
93
+ | `REPLICATE_BASE_URL` | No | Override Replicate API root (default `https://api.replicate.com/v1`) |
94
+ | `REPLICATE_IMAGE_MODEL` | No | Default `multix replicate image` model (default `black-forest-labs/flux-schnell`) |
95
+ | `REPLICATE_VIDEO_MODEL` | No | Default `multix replicate video` model (default `prunaai/p-video`) |
85
96
  | `CLOUDFLARE_AI_IMAGE_MODEL` | No | Image model setting; only `@cf/black-forest-labs/flux-1-schnell` is accepted |
86
97
  | `CLOUDFLARE_AI_TTS_MODEL` | No | Speech model setting; only `@cf/myshell-ai/melotts` is accepted |
87
98
  | `MULTIX_OUTPUT_DIR` | No | Override default output dir (`./multix-output`) |
@@ -478,6 +489,77 @@ multix fal result <model> <requestId> [--download]
478
489
  - All fal jobs are async: submit → poll `status` → fetch `result`. `run`/`image`/`video` do this automatically.
479
490
  - Media URLs are extracted generically from the result JSON (any `url` field, recursively) and downloaded to `MULTIX_OUTPUT_DIR`.
480
491
 
492
+ ### `multix atlas`
493
+
494
+ Image, image-edit, video, audio and 3D generation through [Atlas Cloud](https://www.atlascloud.ai)'s prediction API, plus a generic runner for any Atlas model. `atlascloud` is an alias for the group.
495
+
496
+ ```bash
497
+ # Image (default black-forest-labs/flux-schnell) and image edit (default openai/gpt-image-1-mini/edit)
498
+ multix atlas image "a red fox in the snow" [-m <model>] [--size <size>] [--aspect-ratio 1:1] [--resolution 2k] [-n 1] [--seed <n>] [--negative-prompt <text>]
499
+ multix atlas image-to-image --prompt "make it dusk" --ref ./photo.png [--ref https://...] [-m <model>]
500
+
501
+ # Video (defaults bytedance/seedance-v1-pro-fast/text-to-video and .../image-to-video)
502
+ multix atlas video "waves at sunset" [-m <model>] [--duration <s>] [--resolution 720p] [--aspect-ratio 16:9]
503
+ multix atlas image-to-video --ref ./first-frame.png [--prompt "slow pan"]
504
+
505
+ # Audio: TTS (default xai/tts-v1), or STT with --audio (default bytedance/seed-asr-2.0; transcript printed)
506
+ multix atlas audio "Hello from multix" [--voice <id>] [--format mp3]
507
+ multix atlas audio --audio ./meeting.mp3 [--output transcript.txt]
508
+
509
+ # 3D (defaults tencent/hunyuan3d-rapid/text-to-3d, or .../image-to-3d with --ref)
510
+ multix atlas 3d "a low-poly treasure chest" [--format GLB]
511
+
512
+ # Any model, raw JSON input (fields per the model's docs; `model` is added for you)
513
+ multix atlas run <modelId> --input '{"prompt":"a cat"}' [--type image|video|audio]
514
+
515
+ # Async: submit now, resume later
516
+ multix atlas image "a paper boat" --async # prints the prediction id
517
+ multix atlas status <predictionId> [--wait] [--download] [--output <path>]
518
+
519
+ # Upload a local file and print its temporary URL
520
+ multix atlas upload ./photo.png
521
+ ```
522
+
523
+ **Notes:**
524
+ - Auth is `Authorization: Bearer $ATLASCLOUD_API_KEY`; the media API base is `https://api.atlascloud.ai/api/v1`.
525
+ - Generation commands and `run` accept `--async`, `--wait-timeout <ms>`, `--output <path>`, `--no-download` and `--no-validate`. By default the command waits, then downloads to `MULTIX_OUTPUT_DIR` as `atlas-<idprefix>-NN.<ext>`.
526
+ - Inputs are model-specific. multix reads each model's published schema, maps flags onto that model's field names, and rejects unsupported flags or invalid values before submitting. Use `--no-validate` to skip this check.
527
+ - `--async` prints only the prediction id on stdout and `upload` prints only the URL; progress goes to stderr, so `id=$(multix atlas video "waves" --async)` works.
528
+ - `--ref` takes one value per flag; repeat it for several references. Local `--ref` / `--audio` files are uploaded first: only image, video and audio files, up to 200 MB (`ATLASCLOUD_MAX_UPLOAD_MB`).
529
+ - Text outputs (transcripts, lyrics) are printed instead of downloaded. A failed prediction, or a download where some outputs fail, exits non-zero with the resume command. Atlas Cloud has no cancel endpoint.
530
+ - `run --no-validate` skips the schema, so pass `--type` with it.
531
+
532
+ ### `multix replicate`
533
+
534
+ Direct [Replicate](https://replicate.com) API provider (independent of the Cloudflare AI Gateway route). `run` accepts any model; `image`/`video` set defaults; every job can be resumed or canceled by prediction ID.
535
+
536
+ ```bash
537
+ # Generic runner — official models (owner/name) use the model endpoint;
538
+ # owner/name:version, a bare version id, or --version use POST /predictions.
539
+ multix replicate run black-forest-labs/flux-schnell --input '{"prompt":"a cyberpunk cat"}'
540
+ multix replicate run owner/model:<version-id> --input @payload.json [--file image=./photo.png]
541
+
542
+ # Text-to-image (default model: black-forest-labs/flux-schnell)
543
+ multix replicate image "a futuristic city" [-m <owner/name>] [--aspect-ratio 16:9] [-n 1] [--seed <n>] [--output-format webp|jpg|png] [--input <json>] [--output <path>]
544
+
545
+ # Text-to-video, or image-to-video with --image (default model: prunaai/p-video)
546
+ multix replicate video "a cinematic establishing shot" [-m <owner/name>] [--image <path|url>] [--duration 5] [--aspect-ratio 16:9] [--resolution 720p] [--input '{"draft":true}']
547
+
548
+ # Shared flags: [--async] [--wait] [--prefer-wait [seconds]] [--wait-timeout <ms>] [--no-download] [--output <path>] [-v]
549
+
550
+ # Resume or cancel a prediction by id without re-running inference
551
+ multix replicate status <prediction-id> [--wait] [--download] [--output <path>]
552
+ multix replicate cancel <prediction-id>
553
+ ```
554
+
555
+ **Notes:**
556
+ - Auth: `Authorization: Bearer $REPLICATE_API_TOKEN` (`REPLICATE_API_KEY` accepted as fallback).
557
+ - Default behavior waits with bounded polling; `--async` prints the prediction id plus resume/cancel commands. `--prefer-wait` sends `Prefer: wait=N` and keeps polling if the job is still running.
558
+ - Only `succeeded` exits 0; `failed`, `canceled`, and `aborted` exit non-zero with Replicate's error.
559
+ - Every media URL in the output (string, list, or nested object) is downloaded as `replicate-<id8>-NN.<ext>` (`<id8>` = first 8 characters of the prediction id); text outputs are printed. Output URLs expire, so download promptly. If any download fails, the command exits non-zero and prints `multix replicate status <id> --download` to retry.
560
+ - `replicate image` converts images to WebP by default; `--image-format original`, `--no-webp`, `MULTIX_IMAGE_FORMAT=original`, an explicit `--output-format`, or a non-`.webp` `--output` extension keeps the provider format.
561
+ - Local files (`--image`, `--file key=path`) up to 256 KB are inlined as data URIs; larger files (< 100 MB) are uploaded via the Replicate Files API.
562
+
481
563
  ### `multix media`
482
564
 
483
565
  Requires `ffmpeg` (video/audio) and `magick` (images) on PATH.