Local-first photo curation, scoring, review, and delivery workbench for photographers.
Project description
Culvia
Simplified Chinese: README.zh-CN.md
Culvia is a local-first photo curation, scoring, review, and delivery workbench for photographers. It helps you move from a full shoot to a smaller, more intentional set of images by combining local scoring, optional vision-model critique, manual decisions, and export tools.
It is designed for reviewing a folder of photos, finding the stronger frames, marking final decisions, and handing selected images into the next stage of editing or delivery.
Culvia is currently an early-stage open-source project. Expect rapid changes while the workflow, desktop packaging, and model integrations mature.
Install
pip install culvia
Then start the local Web app:
culvia-supervisor
Open the local address shown in the terminal. You can also run the direct server entrypoint:
culvia-web --host 127.0.0.1 --port 8501
What You Can Do
- Import a folder of photos or temporary uploaded images.
- Scan subfolders and deduplicate repeated paths automatically.
- Generate thumbnails for fast gallery browsing without loading full-resolution files in the photo wall.
- Run local aesthetic and technical scoring models.
- Optionally run an OpenAI-compatible vision review for image critique, aesthetic/technical sub-scores, retouching advice, and shooting advice.
- Review images in a large viewer or gallery wall.
- Add manual decisions: pick, hold, reject, star rating, and color label.
- Accept model or vision-model suggestions when they are useful.
- Filter and sort by recommendation, technical quality, LLM review, manual status, color label, and other review dimensions.
- Export picked photos or CSV results for downstream editing and delivery workflows.
Typical Workflow
- Start Culvia and open the Web interface.
- Choose one or more photo folders.
- Let Culvia scan the source and build the gallery.
- Select the scoring dimensions you want to run.
- Start scoring and watch progress in the command panel.
- Review photos in the viewer or gallery.
- Mark each photo as pick, hold, or reject.
- Use filters to narrow the final set.
- Export selected photos or a CSV review table.
Manual decisions remain the final culling layer. Model scores are guidance for sorting, comparison, and explanation; they should not replace your own edit.
Development Setup
From A Source Checkout
make init
make server
Then open the local address shown in the terminal. By default this is usually:
http://127.0.0.1:8501/
To start only the Web server:
make web PORT=8501
bin/culvia-web --host 127.0.0.1 --port 8501
Installed Console Commands
When installed as a Python package, Culvia exposes console commands:
culvia-supervisor
culvia-web --host 127.0.0.1 --port 8501
culvia --help
culvia-supervisor: recommended local Web entrypoint with health checks and browser opening.culvia-web: direct Web server entrypoint.culvia: command-line batch scoring entrypoint.
Windows
From a source checkout, use the PowerShell wrappers:
scripts/culvia-dev.ps1 init
scripts/culvia-dev.ps1 web --host 127.0.0.1 --port 8501
bin/culvia-web.ps1 --host 127.0.0.1 --port 8501
For Command Prompt:
bin\culvia-web.cmd --host 127.0.0.1 --port 8501
Desktop App
Culvia is built so the same backend and interface can run as a browser app or inside a desktop shell. The desktop app is intended to provide native windowing, local file access, secure credential storage, and packaged runtime options.
Desktop packaging is still evolving. For build instructions, see docs/en/developer/desktop-build.md.
Privacy
Culvia is local-first:
- Local models, thumbnails, previews, SQLite data, uploads, and exports stay on your machine by default.
- Photos are sent to an external service only when you explicitly enable an OpenAI-compatible vision review.
- API keys should be entered through the app configuration flow or environment variables, not written into docs, tests, logs, SQLite plaintext fields, or Git.
LLM configuration can come from the current session, persisted non-secret settings, or environment variables. The application should never require committing credentials.
User Documentation
For Developers
Developer documentation starts here:
Common checks:
make pre-commit
make test
make js-check
make lint
Project rules for AI-assisted development and contributor handoff are in AGENTS.md.
Repository Hygiene
Do not commit model caches, thumbnail caches, upload caches, SQLite runtime databases, exported results, desktop build outputs, generated installers, API keys, or local logs.
Useful cleanup helper:
python tools/clean_runtime_artifacts.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file culvia-0.1.0.tar.gz.
File metadata
- Download URL: culvia-0.1.0.tar.gz
- Upload date:
- Size: 403.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfc6f40e966bfc5dbeed6bc297d09461d2f7df6a3ed98479141ad19c28b420e1
|
|
| MD5 |
2cb389160ae12a8c68569a16bad3b3f3
|
|
| BLAKE2b-256 |
e752b1456b6960277b58c9838b10c4b30321300f5f78c12e384381b6b3a8c424
|
File details
Details for the file culvia-0.1.0-py3-none-any.whl.
File metadata
- Download URL: culvia-0.1.0-py3-none-any.whl
- Upload date:
- Size: 308.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90a0b55aab0c2283e9566e9049bb0c0b2aaa7c0d97f5f2fd577b3671a1cb311b
|
|
| MD5 |
cb256aaa91266510dc1290175a522230
|
|
| BLAKE2b-256 |
b3f79191408cc2b7b878a4ce1cd0d12ed14222a94857bbae960f6e19a5071809
|