Video, images and voice from the command line — by hand, from a script, or by a coding agent that already lives in your shell. Sign in with your browser once; no API key.
Install
$ npm i -g @vidofy/cli
Needs Node 18 or newer. Works on macOS, Linux, Windows and inside a container.
Built for agents that live in a shell
Paste this into Claude Code, Codex or Cursor. It installs, signs you in and reports back with your balance.
Set up Vidofy so you can generate images, video and voice from here.
1. Install the CLI: run `npm i -g @vidofy/cli`.
2. Sign in: run `vidofy auth login`. It opens a browser — stop there and wait for me to tell you I have finished signing in.
3. Confirm it worked: run `vidofy balance` and show me the number.
Then tell me Vidofy is ready.
The browser step is yours — the agent stops and waits for you there, because approving an account is not something it should do on your behalf.
Sign in once per machine. After that every generation is a single command.
$ npm i -g @vidofy/cli
Global install from npm. Node 18 or newer.
$ vidofy auth login
Opens your browser, you approve once, and the token is written to ~/.vidofy/ on this machine. No key to paste.
$ vidofy generate create \
--model flux-schnell-t2i \
--prompt "a red bicycle" \
--aspect_ratio 1:1 \
--wait
Runs it and waits for the file. Drop --wait and it prints an id you can poll later.
Every model below is live in the catalogue right now, and the price next to it is the real cost of that command — both read from the same place the studio reads.
$ vidofy generate create \
--model flux-schnell-t2i \
--prompt "your prompt" \
--aspect_ratio 1:1 \
--wait
$ vidofy generate create \
--model pixverse-v6-i2v \
--prompt "your prompt" \
--image ./photo.jpg \
--aspect_ratio 1:1 \
--duration 3 \
--resolution 360 \
--wait
$ vidofy generate create \
--model speech-2-8-turbo-t2s \
--prompt "your prompt" \
--voice_id Wise_Woman \
--wait
$ vidofy generate create --model flux-schnell-t2i --prompt "…" --aspect_ratio 1:1 --dry-run
Prints the cost and exits. Nothing is charged and no job starts.
Not sure which model? vidofy models list --mode text-to-image
lists what is available with the price of each.
Name any of these after --model.
No separate subscription for each, and nothing to enable first — a model added
today is reachable from your terminal today.
vidofy models list --mode text-to-video
prints the full catalogue for any mode, with the price of each.
Not more models and not a better price — those are the same everywhere. It is where you are standing when you ask.
It is generating the hero image while looking at the page it goes on — your copy, your palette, the file it has to write. Nothing to describe again in another tab, and nothing to carry back.
--image ./photo.jpg reads from your disk. A web assistant needs the file uploaded or hosted somewhere first; a shell already has it, and so does anything the agent has just produced.
Pipe the output, loop it over a CSV of prompts, make it a step in a Makefile. A command is a thing other commands can use — a conversation is not.
A cron job, a CI step, a nightly build. Sign in once on a machine that has a browser, carry the token to the one that does not, and it keeps going without you.
Not a link to open and save. The path is the last line it prints, so a script can take it straight from there.
$ vidofy generate create --model flux-schnell-t2i --prompt "…" --aspect_ratio 1:1 --wait
Writes the file into the directory you are standing in and prints its full path as the last line.
$ vidofy generate create … --wait --output ./assets/hero.png
Writes it where you say. Give it a directory and it keeps the generated name.
$ vidofy generate get <id>
Without --wait you get an id straight away. Fetch the file whenever it suits you — the job runs either way.
HERO=$(vidofy generate create … --wait)
puts the path in a variable, and the next step of your script uses it like any
other file it produced itself.
Same account, same credits, same models. The difference is who is typing.
Nothing stops you using both — they share one account and one balance, and a generation started in either shows up in the same studio history.
vidofy auth login
opens your browser. You approve once, and the token is written to
~/.vidofy/
on that machine — never in your shell history, never in a committed config file.
Revoke it from your account at any time and that machine stops, while your other
machines carry on.
What people ask before they install it.
No. Run vidofy auth login and it opens your browser, you approve once, and the token is stored in ~/.vidofy/ on that machine. Nothing to copy into a config file and nothing to paste into a script.
The connector is for a conversation — you ask in words and Claude or ChatGPT chooses the model and the settings. The CLI is for a terminal: you name the model and the flags, and the output is predictable enough to put in a pipeline or a CI job. Same account, same credits, different hands. Web assistants have no shell, so the connector is the only way to reach them; a coding agent already has one, so the CLI is usually the better fit there.
Exactly the same. One account, one balance — a generation started from your terminal costs what the same generation costs in the studio and appears in the same history.
Yes — add --dry-run to any generate command and it prints the cost and exits without charging you or starting a job.
Yes. Create a personal token at Studio → Account → MCP Access and put it in the VIDOFY_TOKEN environment variable on the machine with no browser. Create one for the build box rather than reusing the token `vidofy auth login` wrote on your own machine — a token made this way is a separate credential you can revoke on its own, and it is the only kind that environment variable accepts.
The whole catalogue — the same models the studio and the connector see. Run vidofy models list --mode text-to-image (or any other mode) to see what is available right now, with the price of each.
Yes. It installs from npm, so anywhere Node runs — macOS, Linux, Windows, and inside a container.
With --wait it is downloaded into the directory you ran the command in, and the full path is printed as the last line — so HERO=$(vidofy generate create … --wait) captures it. Use --output to choose a different path, or drop --wait to get an id now and run vidofy generate get <id> later.
Yes — --image ./photo.jpg reads straight from your disk, and so does any file your agent has just written. This is the one thing a terminal does that a web assistant cannot: the connector needs the file uploaded or hosted somewhere it can reach first, and a shell already has it.