Skip to main content

Whitebeard: Photo library indexer

Whitebeard is the indexing agent for OuEstCharlie. It operates in index mode: scan an existing local photo library in place (no files moved), create XMP sidecars with ouestcharlie: fields, and write leaf manifests.

More about OuEstCharlie on the OuEstCharlie Blog

MCP tools: index_partition and index_library, both incremental by default (force_full_index=False).

Project Layout

src/whitebeard/
  indexer.py    — core logic (no MCP dependency, independently testable)
  agent.py      — WhitebeardAgent(AgentBase) registering MCP tools
  __main__.py   — entry point: python -m whitebeard
tests/
  test_indexer.py

Installation

From PyPI (recommended)

pip install whitebeard

System prerequisites:

  • macOS: brew install inih brotli gettext (required by pyexiv2 at runtime)
  • Linux/Windows: no extra steps

From source (development)

Requires the sibling ouestcharlie-py-toolkit repo and a built image-proc binary (see its README_DEV.md):

uv venv
uv sync

Running Tests

Always use .venv/bin/python -m pytest:

.venv/bin/python -m pytest tests/ -v

Incremental vs Force Indexing

By default, both index_partition and index_library run in incremental mode: photos already present in the partition manifest are carried over without re-processing. Only photos missing from the manifest are indexed. Photos deleted from disk are automatically removed from the manifest on the next run.

To re-process all photos regardless of their manifest state, pass force_full_index=True. To also regenerate XMP sidecars specifically, add force_extract_exif=True.

MCP Inspector

Use mcp dev from the repo root with a backend config pointing at a local photo folder:

WOOF_BACKEND_CONFIG='{"type":"filesystem","root":"/path/to/photos"}' \
    mcp dev src/whitebeard/__main__.py

Note: The default MCP Inspector timeout is too low for full-library indexing runs. Increase it in the Inspector settings before calling index_partition.

Context

Repository Purpose
ouestcharlie Architecture docs, HLR/HLD, MCP interface
ouestcharlie-woof Woof controller
ouestcharlie-py-toolkit Python toolkit for agents
ouestcharlie-whitebeard This repo Indexing agent
ouestcharlie-wally Search/consumption agent

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ouestcharlie_whitebeard-0.12.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ouestcharlie_whitebeard-0.12.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file ouestcharlie_whitebeard-0.12.0.tar.gz.

File metadata

  • Download URL: ouestcharlie_whitebeard-0.12.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ouestcharlie_whitebeard-0.12.0.tar.gz
Algorithm Hash digest
SHA256 f9e5af7d38139e5dd5b38d0808f9864483a2ca13caeca86698a4ac47f7e21d57
MD5 6ce592031ff32b6f9e76bc02e0b68a29
BLAKE2b-256 ef41f81f53004c04720582496331272b797b13ad88324b4a39f630ed38457410

See more details on using hashes here.

Provenance

The following attestation bundles were made for ouestcharlie_whitebeard-0.12.0.tar.gz:

Publisher: publish.yml on ouestcharlie/ouestcharlie-whitebeard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ouestcharlie_whitebeard-0.12.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ouestcharlie_whitebeard-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 819a1af047cddb2cc0f9d5ad1f2608c8c53f2e21132c5af8c721e347c6d3e34d
MD5 5a1c5c8f4d1a4aa59b4cba13d80b4f8c
BLAKE2b-256 9978dfc9337786ab8a36f467e72e7325e4f602ec0a116767ad0f962b03bb3818

See more details on using hashes here.

Provenance

The following attestation bundles were made for ouestcharlie_whitebeard-0.12.0-py3-none-any.whl:

Publisher: publish.yml on ouestcharlie/ouestcharlie-whitebeard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page