Introduction
Cropwright takes you from raw images to a trained detector, without labeling one box at a time. Clusters and a vision-language model do the bulk labeling; you confirm at keyboard speed. Then export, train, compare and promote models in the same app, for any domain. It is the human-in-the-loop labeling frontend for OpenProcessor.
It is a pure frontend: no database of its own, no offline or mock mode. Every piece of data it shows — clusters, crops, classes, training runs — comes from a running OpenProcessor backend over one HTTP API prefix. Cropwright has nothing useful to display without that backend.
What it does
Cropwright manages a high-volume labeling workflow over hundreds of thousands of image crops:
- Cluster-based assisted labeling — crops the backend has grouped by visual similarity are triaged as a batch, not one at a time.
- VLM-assisted suggestions — an optional vision-language model proposes a class per crop or cluster; a human confirms, corrects, or rejects.
- A keyboard-first review queue — class letters, undo, discard and skip are single keystrokes, tuned for a labeling session that runs for hours.
- Projects — isolated datasets and settings on one deployment, with combine, model sharing and a guarded delete.
- Import and configuration — bring in labeled datasets, and edit the VLM prompt packs, region profiles, VLM endpoints and keyboard shortcuts in the app, with test-on-a-crop before you activate anything.
- A full pipeline cockpit — ingest, cluster, review, manage classes, export a YOLO dataset, train, compare models, and promote — all from one app, in that order, in a loop.
Domain-agnostic by design
Cropwright ships with no domain built in. What you're labeling — vehicles, manufacturing defects, aircraft tail numbers, or nothing with a sub-region at all — is defined entirely by the OpenProcessor backend's served region profile, plus, optionally, a small JSON config dropped in at deploy time. See Annotation profiles.
Requirements
- A reachable OpenProcessor backend (the data and model backend — a separate project).
- Docker with Compose v2 (the supported deployment path), or Node 20+ for a source build.
There is no way to "try Cropwright" without a backend — there's no sample
data or mock mode baked into the app itself. OpenProcessor's own sample-data
tooling (make sample-coco, a small public COCO val2017 subset) is the
fastest way to get something to label.
Where to go next
- Quick start — get a Cropwright instance talking to a backend.
- Architecture overview — how the pieces fit together.
- The User Guide — a page for every route.