@mrgoonie/multix 0.5.2 → 0.7.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,21 @@ 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.7.0](https://github.com/mrgoonie/multix-cli/compare/v0.6.0...v0.7.0) (2026-09-24)
9
+
10
+
11
+ ### Added
12
+
13
+ * add self-update command, fal.ai provider, and fix release node version ([#48](https://github.com/mrgoonie/multix-cli/issues/48)) ([9881d33](https://github.com/mrgoonie/multix-cli/commit/9881d33ef336471845b933422e443ae63f973bed))
14
+ * **gemini:** add gemini 3.8 flash and flash-lite tts via interactions api ([#46](https://github.com/mrgoonie/multix-cli/issues/46)) ([216ce1f](https://github.com/mrgoonie/multix-cli/commit/216ce1f1deb4ad08cb8d04641a98646aae93d2f8))
15
+
16
+ ## [0.6.0](https://github.com/mrgoonie/multix-cli/compare/v0.5.2...v0.6.0) (2026-09-23)
17
+
18
+
19
+ ### Added
20
+
21
+ * **image:** convert generated images to WebP by default ([#42](https://github.com/mrgoonie/multix-cli/issues/42)) ([a2532b1](https://github.com/mrgoonie/multix-cli/commit/a2532b1bdd151d2c349b0e4a1023dbaa75c300f0))
22
+
8
23
  ## [0.5.2](https://github.com/mrgoonie/multix-cli/compare/v0.5.1...v0.5.2) (2026-07-30)
9
24
 
10
25
 
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), and **ElevenLabs** (TTS, voice cloning, STT, voice changer, SFX, music, dubbing, isolation, alignment).
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).
8
8
 
9
9
  ## Documentation
10
10
 
@@ -65,6 +65,11 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
65
65
  | `LEONARDO_VIDEO_MODEL` | No | Default Leonardo video model (default `MOTION2`) |
66
66
  | `BYTEPLUS_API_KEY` | For BytePlus | [BytePlus](https://console.byteplus.com/auth/api-keys) |
67
67
  | `ELEVENLABS_API_KEY` | For ElevenLabs | [ElevenLabs](https://elevenlabs.io/app/settings/api-keys) |
68
+ | `FAL_KEY` | For fal.ai | [fal.ai](https://fal.ai/dashboard/keys) |
69
+ | `FAL_BASE_URL` | No | Override fal queue base (default `https://queue.fal.run`) |
70
+ | `FAL_IMAGE_MODEL` | No | Default fal image model (default `fal-ai/flux/schnell`) |
71
+ | `FAL_VIDEO_MODEL` | No | Default fal text-to-video model (default `fal-ai/kling-video/v1.6/standard/text-to-video`) |
72
+ | `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`) |
68
73
  | `ARK_API_KEY` | No | Fallback for `BYTEPLUS_API_KEY` (Volcengine ARK shared name) |
69
74
  | `BYTEPLUS_BASE_URL` | No | Override BytePlus base (default `https://ark.ap-southeast.bytepluses.com/api/v3`) |
70
75
  | `BYTEPLUS_IMAGE_MODEL` | No | Default Seedream model (default `seedream-4-0-250828`) |
@@ -79,6 +84,7 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
79
84
  | `CLOUDFLARE_AI_IMAGE_MODEL` | No | Image model setting; only `@cf/black-forest-labs/flux-1-schnell` is accepted |
80
85
  | `CLOUDFLARE_AI_TTS_MODEL` | No | Speech model setting; only `@cf/myshell-ai/melotts` is accepted |
81
86
  | `MULTIX_OUTPUT_DIR` | No | Override default output dir (`./multix-output`) |
87
+ | `MULTIX_IMAGE_FORMAT` | No | `webp` (default) or `original` to keep provider image format/quality |
82
88
  | `OPENROUTER_IMAGE_MODEL` | No | Default OpenRouter model |
83
89
  | `OPENROUTER_FALLBACK_MODELS` | No | Comma-separated fallback model ids |
84
90
  | `OPENAI_IMAGE_MODEL` | No | Default OpenAI image model (default `gpt-image-2`) |
@@ -87,7 +93,7 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
87
93
  | `IMAGE_GEN_MODEL` | No | Override Gemini image generation model |
88
94
  | `VIDEO_GEN_MODEL` | No | Override Gemini video generation model |
89
95
  | `GEMINI_MODEL` / `MULTIMODAL_MODEL` | No | Override Gemini analyze/transcribe/extract model (doc convert uses `--model`; default `gemini-3.6-flash`) |
90
- | `GEMINI_TTS_MODEL` / `TTS_MODEL` | No | Override Gemini TTS model (default `gemini-3.1-flash-tts-preview`) |
96
+ | `GEMINI_TTS_MODEL` / `TTS_MODEL` | No | Override Gemini TTS model (default `gemini-3.8-flash-lite-tts`) |
91
97
 
92
98
  Priority: `process.env` > `cwd/.env` > `~/.multix/.env`.
93
99
 
@@ -103,6 +109,19 @@ multix check [--verbose]
103
109
 
104
110
  Exits 0 if at least one provider key is configured, or authenticated Codex image capability is available. Exits 1 if no provider is usable or Gemini auth fails.
105
111
 
112
+ ### `multix update`
113
+
114
+ Update the CLI itself to the latest (or a given dist-tag) version published on npm.
115
+
116
+ ```
117
+ multix update [--check] [--tag <tag>] [--dry-run] [-v]
118
+ ```
119
+
120
+ - Detects how `multix` was installed (npm, pnpm, yarn, or bun global) from the running binary's path and runs the matching global-install command, e.g. `npm i -g @mrgoonie/multix@latest`.
121
+ - `--check` only compares the current version against the npm registry; it never installs.
122
+ - `--tag <tag>` installs a dist-tag such as `beta` instead of `latest`. Passing `--tag` always installs the requested tag, skipping the "already up to date" comparison that applies to the default `latest` flow.
123
+ - `--dry-run` prints the install command instead of running it.
124
+
106
125
  ### `multix gemini`
107
126
 
108
127
  ```bash
@@ -128,7 +147,7 @@ multix gemini generate-video --prompt "Ocean waves" [--model veo-3.1-generate-pr
128
147
  multix gemini image-to-video <imagePath> --prompt "camera pans left" [--last-frame <path>] [--model veo-3.1-generate-preview] [--resolution 1080p] [--aspect-ratio 16:9] [--output <path>] [-v]
129
148
 
130
149
  # Text-to-speech (Gemini 3.1 Flash TTS — single & multi-speaker)
131
- multix gemini generate-speech (--text|--prompt) "Say cheerfully: Have a wonderful day!" [--model gemini-3.1-flash-tts-preview] [--voice Kore] [--output-format wav|pcm] [--output <path>] [-v]
150
+ multix gemini generate-speech (--text|--prompt) "Have a wonderful day!" [--model gemini-3.8-flash-lite-tts] [--voice Kore] [--style "cheerful and friendly"] [--output-format wav|pcm] [--output <path>] [-v]
132
151
 
133
152
  # Multi-speaker (max 2): repeat --speaker name:voice; prompt should prefix lines with "<name>:"
134
153
  multix gemini generate-speech --text "Joe: How's it going? Jane: Not too bad!" \
@@ -139,7 +158,7 @@ multix gemini generate-speech --text "Joe: How's it going? Jane: Not too bad!" \
139
158
  - Text output (analyze, transcribe, extract, doc convert): `gemini-3.6-flash` (default), `gemini-3.5-flash` (manual override)
140
159
  - Image gen: `gemini-3.1-flash-image-preview` (Nano Banana 2, fastest), `gemini-3-pro-image-preview` (4K text), `imagen-4.0-generate-001` (production)
141
160
  - Video: `veo-3.1-generate-preview` (requires billing)
142
- - TTS: `gemini-3.1-flash-tts-preview` (default), `gemini-2.5-flash-preview-tts`, `gemini-2.5-pro-preview-tts`
161
+ - TTS: `gemini-3.8-flash-lite-tts` (default, fast/cheap, 101 languages), `gemini-3.8-flash-tts` (highest fidelity, 130 languages), legacy `gemini-3.1-flash-tts-preview`, `gemini-2.5-flash-preview-tts`, `gemini-2.5-pro-preview-tts`. Gemini 3.8 models use the Interactions API, read the text verbatim, take delivery direction via `--style`, and also accept custom `voice_…`/`voicekey_…` voice ids.
143
162
 
144
163
  `gemini-3.6-flash` is a text-output model. Use Nano Banana/Imagen for images, Veo for video, and Gemini Flash TTS for speech.
145
164
 
@@ -424,6 +443,33 @@ multix elevenlabs models
424
443
  - Dubbing is async: submit → poll → download per-language tracks.
425
444
  - Output format strings combine codec + sample rate + bitrate, e.g. `mp3_44100_128`, `pcm_24000`, `ulaw_8000`.
426
445
 
446
+ ### `multix fal`
447
+
448
+ Generic runner plus convenience commands for [fal.ai](https://fal.ai)'s queue REST API. Any model id works with `run`; `image`/`video` set sensible defaults and download media automatically.
449
+
450
+ ```bash
451
+ # Generic runner — works with any fal model id
452
+ multix fal run fal-ai/flux/schnell --input '{"prompt":"a cyberpunk cat"}' [--no-download] [--wait-timeout 480000] [-v]
453
+ multix fal run fal-ai/flux/schnell --input @input.json
454
+
455
+ # Text-to-image (default model: fal-ai/flux/schnell)
456
+ multix fal image "a cyberpunk cat" [-m <model>] [--image-size square_hd] [-n 1] [--seed <n>] [--negative-prompt <text>] [--output <path>] [--no-download] [-v]
457
+
458
+ # Text-to-video (default model: fal-ai/kling-video/v1.6/standard/text-to-video),
459
+ # or image-to-video with --image-url (default model: fal-ai/kling-video/v1.6/standard/image-to-video).
460
+ # Without -m, the default model switches automatically based on whether --image-url is passed.
461
+ multix fal video "a dancer under neon lights" [-m <model>] [--image-url <https-url>] [--duration <n>] [--aspect-ratio 16:9] [--seed <n>] [--no-download] [--wait-timeout 900000] [-v]
462
+
463
+ # Queue status / result for a request submitted any other way
464
+ multix fal status <model> <requestId>
465
+ multix fal result <model> <requestId> [--download]
466
+ ```
467
+
468
+ **Notes:**
469
+ - Auth header is `Authorization: Key $FAL_KEY`; base URL is `https://queue.fal.run`.
470
+ - All fal jobs are async: submit → poll `status` → fetch `result`. `run`/`image`/`video` do this automatically.
471
+ - Media URLs are extracted generically from the result JSON (any `url` field, recursively) and downloaded to `MULTIX_OUTPUT_DIR`.
472
+
427
473
  ### `multix media`
428
474
 
429
475
  Requires `ffmpeg` (video/audio) and `magick` (images) on PATH.
@@ -457,6 +503,19 @@ Multiple inputs are concatenated with `---` separators into a single output.
457
503
 
458
504
  All generated files are saved to `./multix-output/` by default. Override with `MULTIX_OUTPUT_DIR`.
459
505
 
506
+ ### Image format (WebP by default)
507
+
508
+ Every image generate/edit command (`generate`, `image-to-image`) converts its result to WebP with `cwebp -q 85 -m 6 -metadata none`. The CLI verifies that width, height, and transparency match the source before reporting the `.webp` path, then deletes only the intermediate file it wrote itself; your input and reference images are never touched. If verification or `cwebp` fails, the original file is kept with a warning.
509
+
510
+ Keep the provider's original format and quality with any of:
511
+
512
+ - `--image-format original` or `--no-webp`
513
+ - `MULTIX_IMAGE_FORMAT=original`
514
+ - an `--output` path with a non-WebP extension (e.g. `--output hero.png`)
515
+ - an explicit `openai ... --format png|jpeg|webp`
516
+
517
+ Requires `cwebp` (libwebp: `brew install webp`, `apt install webp`) on `PATH`.
518
+
460
519
  ### Polling and downloading videos
461
520
 
462
521
  Most video-generating subcommands accept a uniform set of polling/download flags: