Please do not open a public GitHub issue for security reports.
Use one of these private channels instead:
- GitHub Security Advisories — preferred. Open https://github.com/micschr0/photochron/security/advisories/new and we will triage from there.
- Email the maintainer privately at the address listed on
https://github.com/micschr0 (use a subject prefix
[photochron security]).
We will acknowledge a report within 7 days and aim to ship a fix for confirmed issues within 30 days. Coordinated disclosure is appreciated; we credit reporters in the release notes unless asked otherwise.
photochron is in early alpha (0.1.x). Only the latest tagged release on
main receives security fixes. Once a stable line ships, this section will
list the supported branches.
photochron is designed to keep your photo data local. Things to be aware of:
- All inference is on-device. No image bytes, EXIF metadata, or
embeddings are sent to a remote service. The vision LLM runs via a
local Ollama daemon (default
http://localhost:11434); if you pointcontext.ollama_hostat a remote URL you take on the trust-store of that endpoint. - GPS extraction is opt-in.
ingestion.extract_gpsdefaults tofalseso coordinates do not leak into reports or enriched copies when shared. Flip it on only after deciding you're comfortable with that trade-off. - EXIF-enriched copies embed the full per-photo result JSON in the
UserCommentfield (Mode B output,exif_enriched/). The JSON includes confidence scores and may include matched person hints. If you plan to share those copies publicly, consider strippingUserCommentfirst (exiftool -UserComment= file.jpg). anchors.yamlcontains real birthdays once you fill it in. Treat it like any other private credential file: add it to your local.gitignore, do not commit it to a public repo, and store backups encrypted. The shipped template is fully commented out and contains no real data..photochron/cache.dbstores face embeddings. These are biometric identifiers and are subject to GDPR / similar regimes in many jurisdictions. Treat the cache directory as sensitive personal data and consider full-disk encryption.
- Run the pipeline in a dedicated user account when feasible.
- Keep
ollamaandonnxruntimeup to date — both ship CVE fixes occasionally and our Dependabot config coverspipandgithub-actionsdependencies but not external services. - Do not pipe outputs from untrusted users straight into
photochron run --inputunless you trust the file source (image-decoding libs have a long history of memory-safety bugs).