The command line
Lumiverb has two commands. lumiverb talks to a Lumiverb server over the network, as you, the way the web app does. lumiverb-server looks after the install itself, on the server machine.
Where they are#
On a Mac, Homebrew puts both on your path when it installs Lumiverb. On a Linux server they're /opt/lumiverb/.venv/bin/lumiverb and /opt/lumiverb/.venv/bin/lumiverb-server.
Every command has its own help:
lumiverb --helplumiverb producers --helpPoint lumiverb at a server#
lumiverb needs the server's address and an API key.
Get a key. In the web app, Settings › API Keys (editors and admins), under Create key: a Label to know it by, and a Role no higher than your own. Click Create key and copy the key: it's shown once. The key acts as you, at its role.
Set it. Paste the key when asked; it isn't shown, and stays out of your shell's history:
lumiverb config set --api-url http://your-server:6464 --api-key -It's saved in ~/.lumiverb/config.json, readable by you alone. With no address set, lumiverb uses http://localhost:6464, a Mac install on the same Mac. To see what's set:
lumiverb config showA device uses its device key the same way (Libraries on another computer).
Useful lumiverb commands#
What a command can do is what the key's role can do in the web app.
| Command | What it does |
|---|---|
lumiverb library list |
Your libraries, their folders and last scan |
lumiverb library create --name NAME --path FOLDER |
A new library (admins) |
lumiverb library report-changes PATH |
Tell the server files changed, so it scans them now rather than at the next full scan |
lumiverb library people --name NAME |
Who can see and edit a library, and their role on it |
lumiverb library role --name NAME --email EMAIL --role editor |
Someone's role on one library (default puts their account role back) |
lumiverb scan --library NAME --explain |
For a library the server reads, on a computer that sees its folder: every difference between the disk and Lumiverb, and why. Changes nothing |
lumiverb search --library NAME --query "beach at sunset" |
Search a library |
lumiverb similar --library NAME --image photo.jpg |
Clips that look like a picture |
lumiverb download --library NAME --path PATH --output FILE |
A clip's preview (--size preview.thumbnail for its thumbnail) |
lumiverb user list |
The account's people and roles |
lumiverb user create --email EMAIL --role viewer |
Invite someone: prints the link they set their password at |
lumiverb producers |
What's made, missing and failing, as Settings › Processing shows it |
lumiverb producers failures |
Failing clips, their errors and next tries |
lumiverb producers retry image.faces --all |
Try failing clips again now (editors and admins) |
lumiverb producers settings video.transcript |
A kind of work's settings; KEY=VALUE changes one (admins) |
lumiverb pause image.description |
Pause a kind of work, scans, upkeep or all (admins); resume undoes it |
lumiverb enrich image.faces --library NAME |
Ask for that work in a library now; --redo makes it again (admins) |
lumiverb ai list |
AI machines and each job's model, as Settings › AI shows them |
lumiverb ai machines add Ollama --url http://localhost:11434/v1 --jobs vision |
Add an AI machine (admins); --key asks for its key |
lumiverb ai machines test Ollama |
Send a machine a test picture and video scenes, and show its answers |
lumiverb ai model vision qwen3-vl:8b-instruct |
Choose a job's model (admins) |
lumiverb plugins list |
Plug-ins, and whether each is on here; enable ID, disable ID (admins) |
lumiverb project list |
Your projects |
lumiverb project export --id ID --format fcp7 |
A project as a bin for DaVinci Resolve or Premiere Pro (fcpxml for Final Cut Pro) |
lumiverb trash list |
Clips in the trash, and when each is deleted for good |
lumiverb archive list --missing |
Clips whose files went missing |
lumiverb settings show |
The account's settings |
lumiverb device run |
Read libraries for a server elsewhere (Libraries on another computer) |
A kind of work is named by what it makes, with or without lumiverb. in front: image.description, image.text, image.likeness, image.faces, video.faces, video.transcript, video.scenes, video.scene_descriptions, video.description, video.analysis_proxy, video.format, capture_time, location.guess. A plug-in's work is named by its id. lumiverb producers shows each name in parentheses after its title.
lumiverb-server#
lumiverb-server runs on the server machine and reads the install's env file, which you always name with --env. On a Mac:
lumiverb-server server-admins --env "$(brew --prefix)/etc/lumiverb/env"On Linux, with sudo, as the env file is root's:
sudo /opt/lumiverb/.venv/bin/lumiverb-server server-admins --env /etc/lumiverb/env| Command | What it does |
|---|---|
setup |
Make the first admin, while nobody can sign in yet (--email, --account-name) |
reset-password --email EMAIL |
Set someone's new password, typed twice. It signs them out everywhere and ends the API keys they made |
server-admins |
Who looks after the install: its accounts, network, backups and log. add EMAIL or remove EMAIL changes that |
pause NAME, resume NAME |
Pause or resume processing in every account, as Settings › Processing does: all, scans (--library NAME), upkeep or a kind of work. --account NAME for one account |
backup |
Back up every database now (Backups and restore) |
restore BACKUP |
Put every database back from a backup, with Lumiverb stopped. What's there is backed up first |
migrate |
Bring the databases up to this version. Updates do it for you (Updating) |
plugins |
Plug-ins: install, default, uninstall (Plug-ins) |
ai-worker |
Run this machine as an AI worker for another server (A second machine for search and faces) |
run |
A Mac's whole Lumiverb service. Homebrew starts it; you don't run it yourself |
For example, to give someone a new password on a Mac:
lumiverb-server reset-password --email you@example.com --env "$(brew --prefix)/etc/lumiverb/env"To make someone a server admin on Linux:
sudo /opt/lumiverb/.venv/bin/lumiverb-server server-admins add you@example.com --env /etc/lumiverb/envlumiverb-server needs no API key: being on the machine, able to read its env file, is what lets it in.