darktable fork (ibis/main branch) · built on Project Kestrel

In warm weather mainly I like to walk and take pictures of birds, and the slow part was never taking photos. It’s everything after: two thousand near-identical frames, then typing the same morning into eBird by hand. Ibis is my attempt to close that loop. It took three tries over three days in September, each one a different answer to “where should this go?”

Try one was birdy, a small Python command-line tool. You tag your photos in whatever editor you already use, and it sorts them, geotags them from a GPX track, and writes eBird’s import CSV plus per-species upload folders. It worked, but it had no eyes: no reliable offline bird model existed to bolt on.

Try two was a fork of Project Kestrel, Sanjay Soni’s open-source culling app. The culling, scene grouping, species ID and quality scoring are all Kestrel’s work, and I didn’t write those parts. Kestrel stops once you’ve reviewed the shoot. My 52 commits added the part it doesn’t model, the outing (one place, one date, one time window, every species), and built the eBird half on top: taxonomy mapping, GPX and EXIF location, hotspot matching, the CSV export, and archive folders of the keepers. That came to about 11,000 added lines, including 374 tests.

Then I moved the whole thing into darktable, so the raw editor and the bird workflow are one app. It has an “identify birds” module that finds the bird with MegaDetector and names it with BioCLIP 2, using the eBird region list as a hint rather than a hard filter. It also has an eBird checklist export and a Lightroom-style reskin with two themes. It’s unfinished: no release, no installer, and only the darktable branch is public, for now until it’s warm and I start taking pictures again.

Video coming soon
Image coming soon
Image coming soon
Image coming soon

Specs

Status Prototype, dormant since Sep 9, 2026. No release, no installer, no live site
Dates birdy Sep 7 · Kestrel fork Sep 7–8 · darktable fork Sep 8–9, 2026
Repos Beach-Bum/birdy (private, 8 commits, all mine) · ibisarchive/ibis-archive (private: Kestrel’s history + 52 of mine on fork/attribution) · ibisarchive/darktable (public: 39 commits of mine, 181 files changed vs upstream)
Stack Kestrel fork: Python, pywebview + JS UI, eBird API 2.0, GPX/EXIF/XMP. darktable fork: C/GTK, Lua, ONNX Runtime, BioCLIP 2, MegaDetector, Mapbox tiles
What I added Outing model, eBird taxonomy mapping, location from GPX/EXIF, hotspot matching, eBird CSV, per-species upload folders, archive builder, hosted services off, rebrand · identify-birds module, region-prior logic, Lua eBird export, themes, icon theming, layout
Based on Project Kestrel v6.3.0.0 by Sanjay Soni / Project Kestrel LLC · darktable
License Kestrel fork AGPL-3.0 (NOTICE included) · darktable fork GPL-3.0-or-later · birdy MIT
Not yet Release or installer, macOS build, matching photos to an existing eBird checklist, the ibisarchive.org site