--- name: convt description: Convert images, video, audio, PDFs and documents locally with the convt CLI. Use when an agent needs to convert files on the user's machine without uploading them, list formats or engines, or run a batch from a script. --- # convt Local file conversion. Right-click or run the CLI; files stay on disk. Nothing is uploaded. Routes through engines on this machine (FFmpeg, PDFium, LibreOffice, image, resvg, libheif). Multi-hop routes are at most three steps. A still image cannot become video or audio through a multi-hop route. Print this file: `convt --skill` or `convt skill`. ## Install check ```sh command -v convt convt --version convt engines ``` `convt engines` lists each ready backend and each unavailable one with its reason. A "no route" error usually means an engine is missing, not a bad flag. Packaged installs come from https://convt.app/download. From this repository: `cargo run -p convt-cli -- …` or `./target/debug/convt`. A `convt` on `PATH` may be an older install. ## Convert ``` convt --to [options] ``` `--to` is required unless `--preset` names a preset that sets `to`. Output lands next to each input unless `--out-dir` is set. With `--out-dir`, files found in subfolders keep their relative folder. {{FLAGS}} ## Commands {{COMMANDS}} ## Formats Ids are what `--to` and `convt formats` use. Extensions select the input format (no content sniffing). Availability depends on `convt engines`; Office formats need LibreOffice or `convt pack install documents`. Raster-to-SVG is not offered. {{FORMATS}} ## Examples ```sh convt photo.png --to webp convt photos/ --to webp -r convt lease.pdf --to png --pages 1-3 convt clip.mov --to mp4 --video-height 720 convt photo.png --to jpeg -q 60 --max-size 64 --background black convt clip.mov --to mp4 --no-audio --video-codec hevc convt photos/ -r --to webp -j 4 --json --out-dir out/ convt targets photo.heic convt targets photo.heic --menu convt formats --json convt pack status documents ``` ## Exit codes and errors - `0`: success (including `--skill`, `--help`, and list commands) - `1`: a conversion failed, or the run was rejected before it started (no `--to`, unknown format, nothing to convert, license) - `2`: usage error from the parser (unknown flag, bad value) - `130`: cancelled (`SIGINT`; a second interrupt exits immediately) `--json` prints one event per line on stdout: `started`, `progress`, `done`, `failed`, then `summary`. A `failed` event has a stable `kind`: `unsupported_input`, `no_route`, `invalid_option`, `engine_missing`, `engine_failed`, `output_exists`, `cancelled`, `io`. Folder inputs skip files that cannot reach the target (or already are it). Files named directly always run, so their errors show. ## Tips for agents - Non-interactive: pass every option on the command line. The CLI does not prompt. - Prefer `--json` when parsing progress. Human `input -> output` lines go to stderr unless `--json`. - Outputs never overwrite existing files; a taken name gets a numbered suffix. Use `--out-dir` to keep results apart from the inputs. - Discover before converting: `convt engines`, `convt formats`, `convt targets path/to/file`. - `formats`, `targets`, `engines`, `presets` and `--skill` never need a license. Only conversions do. Source builds skip the license check by default; packaged builds start a 7-day trial on the first conversion. - In an enforced build, `convt license activate` reads the key from stdin when KEY is omitted. Do not put a license key in a shared command line. - `convt pack install documents` is the only pack command that may use the network. `pack status` is offline. - Presets are TOML (`to`, `quality`, `max_size`, …) under the config presets directory, or a path to a `.toml` file. List them with `convt presets`. Point `CONVT_CONFIG_DIR` at a private directory instead of the user's real presets.