A self-hosted library for the images you generate locally with ComfyUI and Automatic1111. It reads the metadata baked into each file, lets you filter by prompt, tags and parameters, and finds similar images through hybrid vector search.
Web apps · pnpm workspace
Two Next.js apps and the shared component library they both consume.
Every app talks only to the deedlit.api gateway.
Public Next.js site — home hub, reference book shelf, image gallery and self-hosted service links.
Source →ComfyHelper UI for the image library — hybrid search, tag/safety filters, a Neo4j graph filter and an ingestion admin.
Source →Shared, app-agnostic component library and the cyber/neon design system backing both apps — documented live in Storybook.
Open Storybook →Backend · FastAPI mesh
Each service is the sole writer of its datastore and they never call each
other — search and graph are rebuildable
projections of catalog, the canonical truth.
Gateway / BFF: aggregate detail pages, host MCP, dispatch ingest jobs.
Canonical images, tags, params, references, ratings, notes, collections, thumbnails, cached vectors.
Dense (CLIP) + sparse (SPLADE) hybrid vector search.
Shared-asset, tag co-occurrence and lineage edges.
Scan, hash, thumbnail; publishes the per-stage ingest DAG over RabbitMQ.
Bytes → embedded prompt / tags / params + resolved reference graph.
Vision-LLM describe / safety / tags via a local llama-server.
CLIP dense + SPLADE sparse embeddings (GPU).
Architecture
Ingest is fully queue-driven over RabbitMQ as a per-stage DAG — the catalog write is the durability boundary, and projections converge via idempotent rebuilds. The cross-service id is the SHA-256 of the image bytes.
Full design in IMAGE_LIBRARY.md, the ingest ADRs (0001, 0002) and the repo README.
Screens
The public site, the ComfyHelper library and the shared component
catalog — all built from @carneirofc/ui.