Skip to main content

v-flow

Move footage and photos between camera cards, long-term storage, and editing drives without ever losing track of the safe copy.

Wait, what does it do?

v-flow is a CLI for people who shoot a lot of video and photos. It copies your camera card into a protected archive and proves the copy with checksums. It puts temporary copies on your editing SSD, saves finished videos and DaVinci Resolve backups, and deletes an editing copy only after verifying the archived original. Nothing is ever moved or deleted as a side effect of anything else.

You can drive it from the terminal, or just talk to Claude Code, Codex, or Cursor. The bundled skill teaches your agent the whole workflow.

Install

curl -fsSL https://raw.githubusercontent.com/kaungzinye/v-flow/main/install_vflow.sh | bash

That installs the v-flow command plus the agent skill. Claude Code and Cowork users can grab the plugin instead, and the skill installs the CLI from PyPI on first use:

/plugin marketplace add kaungzinye/v-flow
/plugin install v-flow@v-flow

Then point it at your drives:

v-flow make-config

Then check the whole environment in one command, which tells you in plain words what works and what to fix:

v-flow doctor

Use it

Ingest a card. Footage lands in a Shoot, photos in a Collection, one command:

v-flow ingest --source "/Volumes/SDCARD" --auto

Put a Shoot on your editing drive, and clean it up when you're done (cleanup verifies checksums and your Resolve project first):

v-flow checkout --shoot "2026-08-02_Ingest" --working-location work_ssd
v-flow cleanup  --shoot "2026-08-02_Ingest" --working-location work_ssd --project "Summer Film" --confirm

Or skip the flags entirely and ask your agent:

Ingest this card, then put the footage on my SSD.

Every state-changing command supports a dry run, names the safety gate that failed, and leaves your card and archive intact on any error.

Every decision v-flow needs has a flag that carries it, such as --confirm for a deletion or --merge-into for a date overlap. Reach one without the flag and without a terminal to ask, and the command stops and names the flag rather than guessing. Long copies print plain progress lines, and an interrupted run resumes when you re-run the same command.

Notes

This is a personal tool that grew documentation. It works on macOS, it's tested, and it guards your media obsessively. Still, expect sharp edges in places one person's workflow never reached.

Docs

  • The agent skill: the workflow reference, branch by branch
  • Domain language: what Shoot, Collection, Archive, and friends mean precisely
  • Every command: v-flow --help

Contributing

Issues and PRs welcome. Read CONTEXT.md first. The vocabulary is load-bearing.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vflow_cli-0.3.1.tar.gz (80.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vflow_cli-0.3.1-py3-none-any.whl (62.6 kB view details)

Uploaded Python 3

File details

Details for the file vflow_cli-0.3.1.tar.gz.

File metadata

  • Download URL: vflow_cli-0.3.1.tar.gz
  • Upload date:
  • Size: 80.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for vflow_cli-0.3.1.tar.gz
Algorithm Hash digest
SHA256 ccf90eb5538b61f0eee68b6a3b68064fcdee1698908669dadbb1214d8418d4eb
MD5 f51117b068e43b3f119400dd581c8d5f
BLAKE2b-256 e7a0cf4fc3630d95fa07cc517079b8636614fcc673770dfacb9a7d2ac0cee518

See more details on using hashes here.

Provenance

The following attestation bundles were made for vflow_cli-0.3.1.tar.gz:

Publisher: publish.yml on kaungzinye/v-flow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vflow_cli-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: vflow_cli-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 62.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for vflow_cli-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fa4653315c851911f5d8d0a5ec5140cf9100f9593b9ed1ef2a09d2c341e6765e
MD5 5fab55cf9f30fd89ca3fd421a12dd79a
BLAKE2b-256 f93ccb2d1167dfee5e3683d82f793a60ea788a2a75955df35fce6014ff4cbfc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for vflow_cli-0.3.1-py3-none-any.whl:

Publisher: publish.yml on kaungzinye/v-flow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page