@mrgoonie/multix 0.0.8 → 0.1.0-beta

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,13 @@ 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](https://github.com/mrgoonie/multix-cli/compare/v0.0.8...v0.1.0-beta) (2026-05-19)
9
+
10
+
11
+ ### Added
12
+
13
+ * **openai:** add provider media commands ([#9](https://github.com/mrgoonie/multix-cli/issues/9)) ([4622102](https://github.com/mrgoonie/multix-cli/commit/46221029ac98f6da03653397d20e2e604f7f39c1))
14
+
8
15
  ## [0.0.8] - 2026-05-11
9
16
 
10
17
  ### 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,6 +66,9 @@ 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 |
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`) |
60
72
  | `IMAGE_GEN_MODEL` | No | Override Gemini image generation model |
61
73
  | `VIDEO_GEN_MODEL` | No | Override Gemini video generation model |
62
74
  | `MULTIMODAL_MODEL` | No | Override Gemini analysis model |
@@ -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
 
@@ -163,6 +175,47 @@ multix openrouter video-models
163
175
 
164
176
  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
177
 
178
+ ### `multix openai`
179
+
180
+ ```bash
181
+ # Image generation via OpenAI Images API
182
+ multix openai generate --prompt "A product photo of a titanium travel mug" \
183
+ [--model gpt-image-2] [--size 1024x1024] [--quality medium] [--format png] [--num-images 1] [--output <path>] [-v]
184
+
185
+ # Use authenticated Codex CLI as an experimental image driver.
186
+ # Requires manual `codex` login outside multix.
187
+ multix openai generate --prompt "A poster for a midnight jazz club" --driver codex --output poster.png
188
+
189
+ # Auto chooses OpenAI API when OPENAI_API_KEY exists, otherwise tries authenticated Codex.
190
+ multix openai generate --prompt "Editorial portrait lighting" --driver auto
191
+
192
+ # Image-to-image edits with one or more local/URL refs
193
+ multix openai image-to-image --prompt "turn this into a watercolor travel sketch" --ref ./photo.jpg [--ref https://...] [--output sketch.png]
194
+
195
+ # Text-to-speech
196
+ multix openai generate-speech --text "Welcome to multix." [--voice alloy] [--output-format mp3|wav|aac|flac|opus|pcm] [--output speech.mp3]
197
+
198
+ # Speech-to-text
199
+ multix openai transcribe --input meeting.mp3 [--format text|json|diarized_json] [--language vi]
200
+
201
+ # Known speaker refs must be paired by name and reference audio path/URL.
202
+ multix openai transcribe --input call.mp3 --format json \
203
+ --known-speaker-name Alice --known-speaker-reference ./alice.wav \
204
+ --known-speaker-name Bob --known-speaker-reference ./bob.wav
205
+ ```
206
+
207
+ **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.
208
+
209
+ **OpenAI STT format behavior:**
210
+
211
+ | CLI format | Non-diarize GPT transcription models | Diarize model |
212
+ |---|---|---|
213
+ | `text` | Requests JSON from API, writes returned `text` | Requests JSON from API, writes returned `text` |
214
+ | `json` | Requests JSON | Requests JSON |
215
+ | `diarized_json` | Not supported | Requires `gpt-4o-transcribe-diarize` and defaults `chunking_strategy=auto` |
216
+
217
+ Known-speaker diarization uses paired `--known-speaker-name` and `--known-speaker-reference` flags; names and references must have the same count.
218
+
166
219
  ### `multix leonardo`
167
220
 
168
221
  ```bash