everypixel-cli 0.1.0__tar.gz

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.
@@ -0,0 +1,14 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .pytest_cache/
4
+ .coverage
5
+ coverage.xml
6
+ htmlcov/
7
+ .tmp/
8
+ pytest-cache-files-*/
9
+ pytest_tmp_run/
10
+ dist/
11
+ build/
12
+ *.egg-info/
13
+ .venv/
14
+ venv/
@@ -0,0 +1,40 @@
1
+ # Changelog
2
+
3
+ ## [0.1.0] - 2026-08-17
4
+
5
+ Initial public release.
6
+
7
+ ### Added
8
+
9
+ - Image generation with `zimage`, `wan22`, `wan2.7`, `wan2.7-pro`, `flux2`,
10
+ `grok`, `grok_quality`, `gemini-3.1-flash`, `gemini-3-pro`,
11
+ `seedream-5-pro`, `seedream-5`, and GPT Image 2 low, medium, and high models.
12
+ - Image editing with `flux2`, `qwen`, `wan2.7`, `wan2.7-pro`, `grok`,
13
+ `grok_quality`, Gemini 3, Seedream 5, and GPT Image 2 model families.
14
+ - Image upscaling with `seedvr2`, camera-angle generation, and color transfer.
15
+ - Video generation with `wan22`, `ltx23`, `grok`, `grok15`, `veo-3.1`,
16
+ `veo-3.1-fast`, `seedance2`, `seedance2-mini`, `kling-2.6`, `kling-3`,
17
+ `kling-3-turbo`, `kling-3-omni`, and `wan2.7`.
18
+ - Text-to-video, image-to-video, first/last-frame generation, video editing,
19
+ and video upscaling to 720p, 1080p, or 1440p.
20
+ - Video editing with `seedance2`, `seedance2-mini`, `kling-3-omni`, `wan2.7`,
21
+ and `aleph2`, including provider-specific media and keyframe inputs.
22
+ - Video and image lipsync, with `inftalk` and `ltx23` available for image
23
+ animation.
24
+ - Audio transcription, text-to-speech with built-in speakers, voice cloning,
25
+ and character voice generation.
26
+ - Image keywords and colors, image quality and UGC quality scores, face
27
+ analysis, image captioning, and video keywords.
28
+ - Shared asynchronous task status, polling, timeout, cancellation, and streamed
29
+ result downloads with safe atomic filenames.
30
+ - Local file, HTTP(S) URL, and data URI media inputs with payload validation
31
+ before network requests.
32
+ - Human-readable and JSON output, `--jq` filtering, stable exit codes, and
33
+ sanitized debug diagnostics.
34
+ - Named profiles, development-environment selection, environment overrides,
35
+ Basic Auth checks, and keyring-backed credential storage.
36
+ - Generic `run` support for OpenAPI operations with live, cached, and bundled
37
+ schemas plus local `$ref`, composed-schema, and constraint validation.
38
+ - A stdio MCP server exposing the same image, video, audio, task, analysis,
39
+ authentication, and OpenAPI workflows as 26 structured tools.
40
+ - `everypixel` and `epx` command entry points for Python 3.10 and newer.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Everypixel Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,454 @@
1
+ Metadata-Version: 2.5
2
+ Name: everypixel-cli
3
+ Version: 0.1.0
4
+ Summary: Official command line interface for Everypixel API
5
+ Project-URL: Homepage, https://labs.everypixel.com
6
+ Project-URL: Repository, https://github.com/everypixel/everypixel-cli
7
+ Project-URL: Issues, https://github.com/everypixel/everypixel-cli/issues
8
+ Author: Everypixel Labs
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: api,automation,cli,everypixel,image,video
12
+ Requires-Python: >=3.10
13
+ Requires-Dist: anyio<5,>=4
14
+ Requires-Dist: click<9,>=8.1
15
+ Requires-Dist: httpx>=0.27
16
+ Requires-Dist: jsonschema<5,>=4.23
17
+ Requires-Dist: keyring>=25.0
18
+ Requires-Dist: mcp<3,>=2
19
+ Requires-Dist: platformdirs>=4.2
20
+ Requires-Dist: pydantic>=2.8
21
+ Requires-Dist: referencing>=0.35
22
+ Requires-Dist: rich>=13.7
23
+ Requires-Dist: typer>=0.12
24
+ Provides-Extra: dev
25
+ Requires-Dist: build>=1.2; extra == 'dev'
26
+ Requires-Dist: mypy>=1.11; extra == 'dev'
27
+ Requires-Dist: pytest-cov>=5; extra == 'dev'
28
+ Requires-Dist: pytest>=8.2; extra == 'dev'
29
+ Requires-Dist: respx>=0.21; extra == 'dev'
30
+ Requires-Dist: ruff>=0.12; extra == 'dev'
31
+ Requires-Dist: tomli>=2; (python_version < '3.11') and extra == 'dev'
32
+ Requires-Dist: types-jsonschema>=4.23; extra == 'dev'
33
+ Description-Content-Type: text/markdown
34
+
35
+ # Everypixel CLI
36
+
37
+ Official command-line interface for the [Everypixel API](https://labs.everypixel.com/).
38
+ Generate and edit images and videos, work with audio, run visual analysis, and
39
+ automate Everypixel workflows from a terminal or an MCP client.
40
+
41
+ The CLI is designed for both people and agents: commands use readable terminal
42
+ output by default and can return stable JSON for scripts and tool integrations.
43
+
44
+ - [Everypixel Labs](https://labs.everypixel.com/)
45
+ - [API documentation](https://labs.everypixel.com/docs)
46
+ - [GitHub repository](https://github.com/everypixel/everypixel-cli)
47
+ - [Issue tracker](https://github.com/everypixel/everypixel-cli/issues)
48
+
49
+ ## Installation
50
+
51
+ Everypixel CLI requires Python 3.10 or newer.
52
+
53
+ ```bash
54
+ pip install everypixel-cli
55
+ ```
56
+
57
+ The package installs two equivalent commands:
58
+
59
+ ```bash
60
+ everypixel --help
61
+ epx --help
62
+ ```
63
+
64
+ ## Quick Start
65
+
66
+ Create API credentials in your Everypixel Labs account, then save them in a
67
+ local CLI profile:
68
+
69
+ ```bash
70
+ everypixel auth configure \
71
+ --client-id "$EVERYPIXEL_CLIENT_ID" \
72
+ --client-secret "$EVERYPIXEL_CLIENT_SECRET"
73
+
74
+ everypixel auth check
75
+ ```
76
+
77
+ Generate an image and download the completed result:
78
+
79
+ ```bash
80
+ everypixel image generate \
81
+ "editorial product photo on a white background" \
82
+ --model flux2 \
83
+ --size square \
84
+ --download ./outputs
85
+ ```
86
+
87
+ The same command can return JSON for automation:
88
+
89
+ ```bash
90
+ everypixel image generate \
91
+ "editorial product photo on a white background" \
92
+ --model flux2 \
93
+ --no-wait \
94
+ --output-json
95
+ ```
96
+
97
+ Use `--help` on any command to see all supported models and options:
98
+
99
+ ```bash
100
+ everypixel image generate --help
101
+ everypixel video edit --help
102
+ ```
103
+
104
+ ## Authentication
105
+
106
+ Everypixel uses HTTP Basic Auth with the client ID as the username and the
107
+ client secret as the password. You can save credentials with `auth configure`
108
+ or provide them through environment variables:
109
+
110
+ ```bash
111
+ export EVERYPIXEL_CLIENT_ID="your-client-id"
112
+ export EVERYPIXEL_CLIENT_SECRET="your-client-secret"
113
+ ```
114
+
115
+ | Variable | Purpose |
116
+ | --- | --- |
117
+ | `EVERYPIXEL_CLIENT_ID` | API client ID |
118
+ | `EVERYPIXEL_CLIENT_SECRET` | API client secret |
119
+ | `EVERYPIXEL_BASE_URL` | Override the API base URL |
120
+ | `EVERYPIXEL_PROFILE` | Select a saved configuration profile |
121
+ | `NO_COLOR` | Disable colored terminal output when set |
122
+
123
+ Explicit command-line options take priority over environment variables, and
124
+ environment variables take priority over saved configuration.
125
+
126
+ Useful authentication commands:
127
+
128
+ | Command | Description |
129
+ | --- | --- |
130
+ | `everypixel auth configure` | Save credentials for the current profile |
131
+ | `everypixel auth check` | Verify the configured credentials |
132
+ | `everypixel auth whoami` | Show the active profile and credential source |
133
+ | `everypixel auth logout` | Remove credentials from the current profile |
134
+
135
+ Secrets are stored in the operating system keyring when one is available. The
136
+ CLI falls back to its user configuration file when a keyring is unavailable;
137
+ `everypixel config list` masks saved secrets in its output.
138
+
139
+ ## Commands
140
+
141
+ ### Images
142
+
143
+ | Command | Description |
144
+ | --- | --- |
145
+ | `everypixel image generate PROMPT` | Generate an image from a text prompt |
146
+ | `everypixel image edit PROMPT --image FILE` | Edit one or more images |
147
+ | `everypixel image upscale` | Upscale an image, URL, or existing task result |
148
+ | `everypixel image angles --image FILE` | Change the camera angle of an image |
149
+ | `everypixel image colors --image FILE --reference FILE` | Transfer colors from a reference image |
150
+
151
+ Examples:
152
+
153
+ ```bash
154
+ everypixel image edit \
155
+ "replace the background with a clean studio wall" \
156
+ --image ./input.png \
157
+ --model qwen \
158
+ --download ./outputs
159
+
160
+ everypixel image upscale --image ./input.png --download ./outputs
161
+
162
+ everypixel image angles \
163
+ --image ./input.png \
164
+ --azimuth right \
165
+ --elevation eye_level \
166
+ --distance medium \
167
+ --download ./outputs
168
+ ```
169
+
170
+ ### Video
171
+
172
+ | Command | Description |
173
+ | --- | --- |
174
+ | `everypixel video generate PROMPT` | Generate video from text |
175
+ | `everypixel video from-image PROMPT --image FILE` | Animate an image |
176
+ | `everypixel video first-last PROMPT` | Generate video between first and last frames |
177
+ | `everypixel video edit` | Edit video with text and media references |
178
+ | `everypixel video upscale` | Upscale a video, URL, or existing task result |
179
+
180
+ Examples:
181
+
182
+ ```bash
183
+ everypixel video generate \
184
+ "a slow aerial shot over mountain lakes" \
185
+ --model ltx23 \
186
+ --duration 10 \
187
+ --resolution 720p \
188
+ --download ./outputs
189
+
190
+ everypixel video from-image \
191
+ "subtle camera movement and natural wind" \
192
+ --image ./first-frame.png \
193
+ --model ltx23 \
194
+ --download ./outputs
195
+
196
+ everypixel video edit \
197
+ "make the scene cinematic" \
198
+ --video ./input.mp4 \
199
+ --download ./outputs
200
+ ```
201
+
202
+ ### Lipsync and Audio
203
+
204
+ | Command | Description |
205
+ | --- | --- |
206
+ | `everypixel lipsync video` | Synchronize a video with an audio track |
207
+ | `everypixel lipsync image` | Create a lipsync video from a still image and audio |
208
+ | `everypixel audio transcribe` | Transcribe speech from an audio file |
209
+ | `everypixel audio tts-create` | Create speech with a built-in speaker |
210
+ | `everypixel audio tts-clone` | Create speech from a cloned voice sample |
211
+ | `everypixel audio tts-voice` | Create speech with a character voice |
212
+
213
+ Examples:
214
+
215
+ ```bash
216
+ everypixel lipsync video \
217
+ --video ./input.mp4 \
218
+ --audio ./voice.mp3 \
219
+ --download ./outputs
220
+
221
+ everypixel audio transcribe \
222
+ --audio ./speech.mp3 \
223
+ --language English \
224
+ --download ./outputs
225
+
226
+ everypixel audio tts-create \
227
+ --text "Hello world" \
228
+ --speaker Ryan \
229
+ --style Warm \
230
+ --language English \
231
+ --download ./outputs
232
+ ```
233
+
234
+ ### Visual Analysis
235
+
236
+ Analysis commands accept HTTP(S) URLs and local files. Local files are uploaded
237
+ automatically when the endpoint supports them.
238
+
239
+ | Command | Description |
240
+ | --- | --- |
241
+ | `everypixel keywords --image FILE` | Extract image keywords |
242
+ | `everypixel quality --image FILE` | Score technical image quality |
243
+ | `everypixel quality-ugc --image FILE` | Score user-generated image quality |
244
+ | `everypixel faces --image FILE` | Detect faces in an image |
245
+ | `everypixel captioning --image FILE` | Generate an image caption |
246
+ | `everypixel video-keywords --video FILE` | Extract video keywords |
247
+
248
+ ```bash
249
+ everypixel keywords \
250
+ --image ./image.jpg \
251
+ --lang en \
252
+ --num-keywords 10 \
253
+ --colors \
254
+ --output-json
255
+
256
+ everypixel captioning --image ./image.jpg --output-json
257
+ ```
258
+
259
+ ## Async Tasks and Downloads
260
+
261
+ Generation and media-processing commands wait for completion by default. Add
262
+ `--no-wait` to return the newly created task immediately.
263
+
264
+ ```bash
265
+ everypixel image generate "minimalist poster" --no-wait --output-json
266
+ ```
267
+
268
+ Use `status` for one status request and `wait` to poll until the task reaches a
269
+ terminal state:
270
+
271
+ ```bash
272
+ everypixel status TASK_ID
273
+ everypixel wait TASK_ID
274
+ ```
275
+
276
+ Passing `--download` always waits for a successful result before saving files:
277
+
278
+ ```bash
279
+ everypixel wait TASK_ID --download ./outputs
280
+ ```
281
+
282
+ A Bash automation example:
283
+
284
+ ```bash
285
+ task_id="$(
286
+ everypixel image generate \
287
+ "automation test image" \
288
+ --model flux2 \
289
+ --no-wait \
290
+ --output-json \
291
+ --jq .task_id | tr -d '"'
292
+ )"
293
+
294
+ everypixel --timeout 600 wait "$task_id" --download ./outputs
295
+ ```
296
+
297
+ ## Generic OpenAPI Runner
298
+
299
+ `everypixel run` calls an API operation by its OpenAPI name or `/v1/...` path.
300
+ Values passed with `--input` are parsed as JSON when possible. The CLI validates
301
+ named operations against the selected OpenAPI schema before sending a request.
302
+
303
+ ```bash
304
+ everypixel run image_generate \
305
+ --prompt "product photo" \
306
+ --input model=flux2 \
307
+ --input image_size=square \
308
+ --dry-run
309
+
310
+ everypixel run image_generate --help-schema --output-json
311
+
312
+ everypixel run /v1/image_generate \
313
+ --method POST \
314
+ --input-file ./payload.json
315
+ ```
316
+
317
+ The schema loader tries the live API first, then the local cache, and finally
318
+ the schema bundled with the package.
319
+
320
+ ```bash
321
+ everypixel docs open
322
+ everypixel docs openapi --output-json
323
+ everypixel docs refresh
324
+ ```
325
+
326
+ ## JSON Output
327
+
328
+ Use `--output-json` (or `-j`) for scripts and `--jq` to select part of the
329
+ result:
330
+
331
+ ```bash
332
+ everypixel keywords --image ./image.jpg --output-json
333
+ everypixel keywords --image ./image.jpg --output-json --jq .keywords
334
+ ```
335
+
336
+ Handled successes and errors are written as one machine-readable JSON stream to
337
+ stdout. Human-readable errors are written to stderr. Add `--debug` when an
338
+ unexpected internal error needs sanitized stack-frame locations.
339
+
340
+ ## Global Options
341
+
342
+ Global options must appear before the command they apply to.
343
+
344
+ | Option | Description |
345
+ | --- | --- |
346
+ | `--base-url URL` | Override the API base URL for one invocation |
347
+ | `--profile NAME` | Use a saved configuration profile |
348
+ | `--output human\|json` | Select the output format |
349
+ | `--output-json`, `-j` | Shortcut for JSON output |
350
+ | `--jq EXPRESSION` | Filter JSON output |
351
+ | `--wait`, `--no-wait` | Control async task polling |
352
+ | `--timeout SECONDS` | Set the polling timeout |
353
+ | `--poll-interval SECONDS` | Set the delay between status requests |
354
+ | `--download DIRECTORY`, `-d DIRECTORY` | Download completed result files |
355
+ | `--no-color` | Disable colored terminal output |
356
+ | `--debug` | Include sanitized diagnostic locations for internal errors |
357
+
358
+ Many operation-specific options can also appear after their command. Run
359
+ `everypixel COMMAND --help` for the exact syntax.
360
+
361
+ ## Configuration Profiles
362
+
363
+ Profiles keep credentials and settings separate for different accounts or
364
+ projects. Most users can stay on the `default` profile.
365
+
366
+ ```bash
367
+ everypixel config profile create project-a
368
+ everypixel config profile use project-a
369
+ everypixel auth configure \
370
+ --client-id "$PROJECT_A_CLIENT_ID" \
371
+ --client-secret "$PROJECT_A_CLIENT_SECRET"
372
+
373
+ everypixel config list
374
+ ```
375
+
376
+ Select a profile for one invocation without changing the active profile:
377
+
378
+ ```bash
379
+ everypixel --profile project-a auth check
380
+ ```
381
+
382
+ ## MCP Server
383
+
384
+ Everypixel CLI includes an MCP server for Claude Desktop, Claude Code, Cursor,
385
+ VS Code, and other clients that support MCP over stdio:
386
+
387
+ ```bash
388
+ everypixel mcp serve
389
+ ```
390
+
391
+ Example client configuration:
392
+
393
+ ```json
394
+ {
395
+ "mcpServers": {
396
+ "everypixel": {
397
+ "command": "everypixel",
398
+ "args": ["mcp", "serve"],
399
+ "env": {
400
+ "EVERYPIXEL_CLIENT_ID": "your-client-id",
401
+ "EVERYPIXEL_CLIENT_SECRET": "your-client-secret"
402
+ }
403
+ }
404
+ }
405
+ }
406
+ ```
407
+
408
+ The MCP client launches the command as a subprocess; no HTTP port is opened.
409
+ Local media and download paths use the subprocess working directory and
410
+ filesystem permissions.
411
+
412
+ ## Shell Completion
413
+
414
+ Install completion for the current shell:
415
+
416
+ ```bash
417
+ everypixel --install-completion
418
+ ```
419
+
420
+ Or print the completion script for manual setup:
421
+
422
+ ```bash
423
+ everypixel --show-completion
424
+ ```
425
+
426
+ ## Exit Codes
427
+
428
+ | Code | Meaning |
429
+ | --- | --- |
430
+ | `0` | Success |
431
+ | `1` | General error |
432
+ | `2` | Local argument or validation error |
433
+ | `3` | Configuration or authentication error |
434
+ | `4` | API, remote service, or task failure |
435
+ | `5` | File read/write or result download error |
436
+ | `6` | Result processing, jq, or serialization error |
437
+
438
+ ## Troubleshooting
439
+
440
+ - Authentication failure: run `everypixel auth check`, then configure the
441
+ credentials again if needed.
442
+ - Wait timeout: increase the global timeout, for example
443
+ `everypixel --timeout 600 wait TASK_ID`.
444
+ - Invalid media: pass an existing local file, an HTTP(S) URL, or a supported
445
+ data URI.
446
+ - File not found: use an absolute path or run the command from the directory
447
+ containing the file.
448
+ - Download failure: verify that the output directory is writable and retry with
449
+ `everypixel wait TASK_ID --download ./outputs`.
450
+ - No color: pass `--no-color` or set `NO_COLOR=1`.
451
+
452
+ ## License
453
+
454
+ [MIT](LICENSE)