Skip to main content

Runtime settings

Cropwright keeps no configuration of its own beyond the environment variables that wire the container to a backend. What you actually tune while using it lives in one of three places.

1. Per-project settings, stored by the backend​

Each project has its own settings, which the backend keeps and Cropwright displays and edits. They are scoped to the project, so two projects on the same deployment can differ.

SettingWhere to edit itNotes
Clustering method, review-queue default sortSettingsOnly the axes the backend marks settable get a control.
VLM prompt packPrompt packsEdited and tested as revisions; one revision is active at a time.
Region profileRegion profilesRevisions, an impact preview and a reload-to-apply notice.
Active VLM endpointVLM modelsThe endpoint registry is shared by every project; the choice is per project.
Keyboard shortcutsKeyboard shortcutsPer project, with per-page overrides.
Class list and class hotkeysClasses

Prompt packs, region profiles and VLM endpoints share one model. They are revisioned: saving creates a new revision and never edits history. A revision is activated explicitly (activation records which revision is pinned and is confirmation-gated), and the previous one can be rolled back to. The backend reports whether each worker has picked up the active revision. Saves and activations carry the revision you started from, so two people editing at once get a conflict message instead of silently overwriting each other. The Copy settings action on /projects copies chosen groups between projects.

2. Deployment-wide settings, stored by the backend​

The VLM endpoint registry (which endpoints exist, their schema and the local model catalog) is shared by every project. A VLM API key is a secret held on the backend host and referenced by name; Cropwright never sees it. Backend startup configuration (for example, which feature flags are on, see Backend feature flags) is changed on the backend, not here.

3. Cropwright deployment files​

Nothing Cropwright needs is stored in the browser: the active project is the URL, and everything else is read from the backend.