@mrgoonie/multix 0.0.8 → 0.1.0-beta.1

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.1.0-beta.1](https://github.com/mrgoonie/multix-cli/compare/v0.1.0-beta...v0.1.0-beta.1) (2026-07-29)
9
+
10
+
11
+ ### Added
12
+
13
+ * add Gemini Omni video support ([#28](https://github.com/mrgoonie/multix-cli/issues/28)) ([c8557e6](https://github.com/mrgoonie/multix-cli/commit/c8557e64cfb9bb19b79ae50967664f11d98cb9b8))
14
+ * **gemini:** support Gemini 3.5 Flash text defaults ([#17](https://github.com/mrgoonie/multix-cli/issues/17)) ([e31491e](https://github.com/mrgoonie/multix-cli/commit/e31491ed01f9aeb7ec52421c8cd76d26b797ddf8))
15
+
16
+ ## [0.1.0-beta](https://github.com/mrgoonie/multix-cli/compare/v0.0.8...v0.1.0-beta) (2026-05-19)
17
+
18
+
19
+ ### Added
20
+
21
+ * **openai:** add provider media commands ([#9](https://github.com/mrgoonie/multix-cli/issues/9)) ([4622102](https://github.com/mrgoonie/multix-cli/commit/46221029ac98f6da03653397d20e2e604f7f39c1))
22
+
8
23
  ## [0.0.8] - 2026-05-11
9
24
 
10
25
  ### Fixed
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  AI multimodal CLI — generate images/video/speech/music, analyze and transcribe media files, convert documents to Markdown, and optimize media with ffmpeg/ImageMagick.
4
4
 
5
- Supports **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), and **ElevenLabs** (TTS, voice cloning, STT, voice changer, SFX, music, dubbing, isolation, alignment).
5
+ 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), and **ElevenLabs** (TTS, voice cloning, STT, voice changer, SFX, music, dubbing, isolation, alignment).
6
6
 
7
7
  ## Install
8
8
 
@@ -14,6 +14,11 @@ npx -p @mrgoonie/multix multix --help
14
14
 
15
15
  **Requirements:** Node >= 20. For media commands: `ffmpeg` and `magick` (ImageMagick 7+) on PATH.
16
16
 
17
+ ## Release channels
18
+
19
+ - `main` uses Release Please for stable releases. It creates release PRs from conventional commits, bumps semver, updates `CHANGELOG.md`, tags `vX.Y.Z`, and publishes npm with dist-tag `latest`.
20
+ - `dev` uses Release Please for beta releases. It creates prerelease PRs like `vX.Y.Z-beta.N` from conventional commits and publishes npm with dist-tag `beta`.
21
+
17
22
  ## Quick start
18
23
 
19
24
  ```bash
@@ -23,6 +28,9 @@ multix check
23
28
  # Generate an image with Gemini
24
29
  multix gemini generate --prompt "A sunset over mountains" --aspect-ratio 16:9
25
30
 
31
+ # Generate an image with OpenAI
32
+ multix openai generate --prompt "A clean product photo of a glass espresso cup"
33
+
26
34
  # Analyze an image
27
35
  multix gemini analyze --files photo.jpg --prompt "Describe this"
28
36
 
@@ -40,6 +48,7 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
40
48
  | Variable | Required | Purpose |
41
49
  |---|---|---|
42
50
  | `GEMINI_API_KEY` | For Gemini | [AI Studio](https://aistudio.google.com/apikey) |
51
+ | `OPENAI_API_KEY` | For OpenAI API | [OpenAI](https://platform.openai.com/api-keys) |
43
52
  | `OPENROUTER_API_KEY` | For OpenRouter | [OpenRouter](https://openrouter.ai/settings/keys) |
44
53
  | `MINIMAX_API_KEY` | For MiniMax | [MiniMax](https://platform.minimax.io/user-center/basic-information/interface-key) |
45
54
  | `LEONARDO_API_KEY` | For Leonardo | [Leonardo](https://app.leonardo.ai/settings/api-keys) |
@@ -57,9 +66,12 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
57
66
  | `MULTIX_OUTPUT_DIR` | No | Override default output dir (`./multix-output`) |
58
67
  | `OPENROUTER_IMAGE_MODEL` | No | Default OpenRouter model |
59
68
  | `OPENROUTER_FALLBACK_MODELS` | No | Comma-separated fallback model ids |
60
- | `IMAGE_GEN_MODEL` | No | Override Gemini image generation model |
69
+ | `OPENAI_IMAGE_MODEL` | No | Default OpenAI image model (default `gpt-image-2`) |
70
+ | `OPENAI_TTS_MODEL` | No | Default OpenAI TTS model (default `gpt-4o-mini-tts`) |
71
+ | `OPENAI_STT_MODEL` | No | Default OpenAI STT model (default `gpt-4o-transcribe`) |
72
+ | `GEMINI_MODEL` / `MULTIMODAL_MODEL` | No | Override Gemini analyze/transcribe/extract model (doc convert uses `--model`; default `gemini-3.5-flash`) |
73
+ | `IMAGE_GEN_MODEL` / `GEMINI_IMAGE_GEN_MODEL` | No | Override Gemini image generation model |
61
74
  | `VIDEO_GEN_MODEL` | No | Override Gemini video generation model |
62
- | `MULTIMODAL_MODEL` | No | Override Gemini analysis model |
63
75
  | `GEMINI_TTS_MODEL` / `TTS_MODEL` | No | Override Gemini TTS model (default `gemini-3.1-flash-tts-preview`) |
64
76
 
65
77
  Priority: `process.env` > `cwd/.env` > `~/.multix/.env`.
@@ -68,13 +80,13 @@ Priority: `process.env` > `cwd/.env` > `~/.multix/.env`.
68
80
 
69
81
  ### `multix check`
70
82
 
71
- Validate setup: tooling (ffmpeg, magick), API keys, Gemini live ping.
83
+ Validate setup: tooling (ffmpeg, magick), API keys, Gemini live ping, and experimental authenticated Codex image capability. Codex is checked when no API key is configured, or in `--verbose` mode.
72
84
 
73
85
  ```
74
86
  multix check [--verbose]
75
87
  ```
76
88
 
77
- Exits 0 if at least one provider key is configured. Exits 1 if no keys found or Gemini auth fails.
89
+ 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.
78
90
 
79
91
  ### `multix gemini`
80
92
 
@@ -100,6 +112,18 @@ multix gemini generate-video --prompt "Ocean waves" [--model veo-3.1-generate-pr
100
112
  # Image-to-video with Veo (alias: i2v) [EXPERIMENTAL]
101
113
  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]
102
114
 
115
+ # Generate or edit video with Gemini Omni Flash [PAID PREVIEW]
116
+ # Use either local image guidance or one local video, not both.
117
+ multix gemini omni-video --prompt "A paper airplane flies through a sunlit office" \
118
+ [--image ./frame.png] [--video ./clip.mp4] [--previous-interaction-id <id>] \
119
+ [--upload-timeout 300000] [--output ./result.mp4] [-v]
120
+
121
+ # Chain a Lite-generated image into a Lite edit
122
+ multix gemini generate --model gemini-3.1-flash-lite-image \
123
+ --prompt "A minimal coffee package on a pale blue background" --size 1K --output package.png
124
+ multix gemini image-to-image --model gemini-3.1-flash-lite-image \
125
+ --ref package.png --prompt "Add hand-drawn botanical details" --size 1K --output package-botanical.png
126
+
103
127
  # Text-to-speech (Gemini 3.1 Flash TTS — single & multi-speaker)
104
128
  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]
105
129
 
@@ -109,13 +133,19 @@ multix gemini generate-speech --text "Joe: How's it going? Jane: Not too bad!" \
109
133
  ```
110
134
 
111
135
  **Gemini models:**
112
- - Analysis: `gemini-2.5-flash` (default)
113
- - 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)
136
+ - Text output (analyze, transcribe, extract, doc convert): `gemini-3.5-flash` (default), `gemini-2.5-flash` (manual override)
137
+ - Image gen: `gemini-3.1-flash-image-preview` (Nano Banana 2, fastest), `gemini-3.1-flash-lite-image` (Nano Banana 2 Lite), `gemini-3-pro-image-preview` (4K text), `imagen-4.0-generate-001` (production)
114
138
  - Video: `veo-3.1-generate-preview` (requires billing)
115
139
  - TTS: `gemini-3.1-flash-tts-preview` (default), `gemini-2.5-flash-preview-tts`, `gemini-2.5-pro-preview-tts`
116
140
 
141
+ `gemini-3.5-flash` is a text-output model. Use Nano Banana/Imagen for images, Veo for video, and Gemini Flash TTS for speech.
142
+
117
143
  **Aspect ratios:** `1:1 2:3 3:2 3:4 4:3 4:5 5:4 9:16 16:9 21:9`
118
144
 
145
+ **Gemini Omni Flash video:** a paid-tier preview for prompt-to-video and edits, producing 3–10 second 720p videos. It accepts local images or one local video; audio references, multiple videos, video extension/interpolation, and voice editing are unsupported. Uploaded-video editing is unavailable in the EEA, Switzerland, and the UK. Each run prints an interaction ID; use it with `--previous-interaction-id` for a follow-up edit. The CLI keeps no local history: continuation depends on Gemini-stored interactions (`store=true`), retained for up to 55 days on the paid tier and incompatible with `store=false`. The generated MP4 is saved in the standard output directory with an adjacent `.json` sidecar containing its provider, model, prompt, input basenames, timestamp, and interaction ID; `--output` copies the MP4 to the requested path.
146
+
147
+ **Nano Banana 2 Lite:** use `gemini-3.1-flash-lite-image` with `generate` or `image-to-image`. Output is always 1K—do not request 2K or 4K. Supported aspect ratios are `1:1 3:2 2:3 3:4 4:3 4:5 5:4 9:16 16:9 21:9`.
148
+
119
149
  **TTS voices (30 prebuilt):** Zephyr, Puck, Charon, Kore, Fenrir, Leda, Orus, Aoede, Callirrhoe, Autonoe, Enceladus, Iapetus, Umbriel, Algieba, Despina, Erinome, Algenib, Rasalgethi, Laomedeia, Achernar, Alnilam, Schedar, Gacrux, Pulcherrima, Achird, Zubenelgenubi, Vindemiatrix, Sadachbia, Sadaltager, Sulafat. Audio is PCM s16le @ 24 kHz mono — saved as WAV (default) or raw PCM. Style is controlled via natural language in the prompt (`[whispers]`, `Say excitedly:`, etc.). No streaming; max 2 speakers; ~32k token context.
120
150
 
121
151
  ### `multix minimax`
@@ -163,6 +193,47 @@ multix openrouter video-models
163
193
 
164
194
  Fallback models from `OPENROUTER_FALLBACK_MODELS` (CSV) are appended to the chat-image payload automatically — applies to both `generate` and `image-to-image`. Override the default video model with `OPENROUTER_VIDEO_MODEL` (default `google/veo-3.1`).
165
195
 
196
+ ### `multix openai`
197
+
198
+ ```bash
199
+ # Image generation via OpenAI Images API
200
+ multix openai generate --prompt "A product photo of a titanium travel mug" \
201
+ [--model gpt-image-2] [--size 1024x1024] [--quality medium] [--format png] [--num-images 1] [--output <path>] [-v]
202
+
203
+ # Use authenticated Codex CLI as an experimental image driver.
204
+ # Requires manual `codex` login outside multix.
205
+ multix openai generate --prompt "A poster for a midnight jazz club" --driver codex --output poster.png
206
+
207
+ # Auto chooses OpenAI API when OPENAI_API_KEY exists, otherwise tries authenticated Codex.
208
+ multix openai generate --prompt "Editorial portrait lighting" --driver auto
209
+
210
+ # Image-to-image edits with one or more local/URL refs
211
+ multix openai image-to-image --prompt "turn this into a watercolor travel sketch" --ref ./photo.jpg [--ref https://...] [--output sketch.png]
212
+
213
+ # Text-to-speech
214
+ multix openai generate-speech --text "Welcome to multix." [--voice alloy] [--output-format mp3|wav|aac|flac|opus|pcm] [--output speech.mp3]
215
+
216
+ # Speech-to-text
217
+ multix openai transcribe --input meeting.mp3 [--format text|json|diarized_json] [--language vi]
218
+
219
+ # Known speaker refs must be paired by name and reference audio path/URL.
220
+ multix openai transcribe --input call.mp3 --format json \
221
+ --known-speaker-name Alice --known-speaker-reference ./alice.wav \
222
+ --known-speaker-name Bob --known-speaker-reference ./bob.wav
223
+ ```
224
+
225
+ **OpenAI models:** image `gpt-image-2` (default), TTS `gpt-4o-mini-tts` (default), STT `gpt-4o-transcribe` (default). The Codex driver is experimental and only handles image generation; `multix` does not authenticate Codex for you.
226
+
227
+ **OpenAI STT format behavior:**
228
+
229
+ | CLI format | Non-diarize GPT transcription models | Diarize model |
230
+ |---|---|---|
231
+ | `text` | Requests JSON from API, writes returned `text` | Requests JSON from API, writes returned `text` |
232
+ | `json` | Requests JSON | Requests JSON |
233
+ | `diarized_json` | Not supported | Requires `gpt-4o-transcribe-diarize` and defaults `chunking_strategy=auto` |
234
+
235
+ Known-speaker diarization uses paired `--known-speaker-name` and `--known-speaker-reference` flags; names and references must have the same count.
236
+
166
237
  ### `multix leonardo`
167
238
 
168
239
  ```bash
@@ -346,7 +417,7 @@ multix media batch --input-dir <dir> --output-dir <dir> [--quality 85] [--max-wi
346
417
  ### `multix doc`
347
418
 
348
419
  ```bash
349
- multix doc convert --input <files...> [--output <path>] [--auto-name] [--model gemini-2.5-flash] [--prompt <str>] [-v]
420
+ multix doc convert --input <files...> [--output <path>] [--auto-name] [--model gemini-3.5-flash] [--prompt <str>] [-v]
350
421
  ```
351
422
 
352
423
  Converts PDFs, DOCX/XLSX/PPTX, images, and HTML/text files to Markdown via Gemini.