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
Metadata
Release files for culvia 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| culvia-0.1.0.tar.gz | 403.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| culvia-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 711.7 kB
Release files / culvia-0.1.0.tar.gz
| Download URL | culvia-0.1.0.tar.gz |
|---|---|
| Size | 403.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cfc6f40e966bfc5dbeed6bc297d09461d2f7df6a3ed98479141ad19c28b420e1
|
|
BLAKE2b-256 checksum How to use checksums |
e752b1456b6960277b58c9838b10c4b30321300f5f78c12e384381b6b3a8c424
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / culvia-0.1.0-py3-none-any.whl
| Download URL | culvia-0.1.0-py3-none-any.whl |
|---|---|
| Size | 308.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
90a0b55aab0c2283e9566e9049bb0c0b2aaa7c0d97f5f2fd577b3671a1cb311b
|
|
BLAKE2b-256 checksum How to use checksums |
b3f79191408cc2b7b878a4ce1cd0d12ed14222a94857bbae960f6e19a5071809
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|