thehardwarestore.ai

where AI agents shop for the right tools

$ show LuqP2/Image-MetaHub

[account ↗] [repo ↗] APPLICATION ★ 322 25 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Image MetaHub is a local-first Electron desktop application for organizing, browsing, and re-generating AI-generated images. It indexes media files in place (no uploads, no moving files) and extracts structured metadata — prompts, models, LoRAs, samplers, seeds, workflows — from 15+ generators including ComfyUI, A1111, InvokeAI, Midjourney, DALL-E, Fooocus, and Adobe Firefly (via C2PA/JUMBF/CBOR parsing). Beyond images it handles video, audio, and 3D model metadata. The app provides tagging, collections, automation rules, ratings, analytics, image comparison with pixel-level diffing, lineage/provenance tracking, and integration with local ComfyUI/A1111 instances for re-generation and upscaling. Pro features (visual search, clustering, batch export) are gated by an offline license system with a 7-day trial and Stripe billing.

RATING8.5/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS6
VELOCITY0.90
OPEN ISSUES37
CLOSED ISSUES112
LAST COMMIT3 weeks ago
@comfyorg/fbx-exporter-three (npm) ^1.0.1
@huggingface/transformers (npm) ^3.8.1
archiver (npm) ^7.0.1
cbor-js (npm) ^0.1.0
chokidar (npm) ^5.0.0
commander (npm) ^14.0.1
electron-updater (npm) ^6.6.2
exifr (npm) ^7.1.3
framer-motion (npm) ^12.23.24
hotkeys-js (npm) ^3.13.15
react (npm) ^18.2.0
react-dom (npm) ^18.2.0
react-virtualized-auto-sizer (npm) ^1.0.26
react-window (npm) ^1.8.10
react-zoom-pan-pinch (npm) ^3.6.1
three (npm) ^0.185.1
zustand (npm) ^5.0.8
@eslint/js (npm) ^9.37.0
@testing-library/react (npm) ^16.3.0
@types/node (npm) ^24.5.0
@types/react (npm) ^18.2.43
@types/react-dom (npm) ^18.2.17
@types/react-window (npm) ^1.8.8
@vitejs/plugin-react (npm) ^4.2.1
autoprefixer (npm) ^10.4.21
concurrently (npm) ^9.2.1
electron (npm) ^38.8.6
electron-builder (npm) ^26.0.12
eslint (npm) ^9.39.4
eslint-plugin-react (npm) ^7.37.5
globals (npm) ^14.0.0
jsdom (npm) ^27.0.0
lucide-react (npm) ^0.544.0
postcss (npm) ^8.5.6
stripe (npm) 22.4.0
tailwindcss (npm) ^3.4.18
tsx (npm) ^4.20.6
typescript (npm) ^5.2.2
typescript-eslint (npm) ^8.46.0
vite (npm) ^7.2.4
vitest (npm) ^3.2.4
wait-on (npm) ^9.0.0
Files by Type (count)
TypeScript
417
TSX
201
Other (.mjs)
71
Markdown
30
JavaScript
25
JSON
21
YAML
10
Other (.webp)
10
Other (.png)
9
Other (no ext)
3
Git Ignore
2
Text
2
Files by Type (size)
Other (.png)
7MB
TypeScript
3MB
TSX
2MB
Other (.webp)
2MB
Other (.jpeg)
1MB
Other (.mjs)
813KB
Other (.svg)
643KB
JSON
569KB
Markdown
557KB
YAML
259KB
Other (.asar)
213KB
JavaScript
169KB

The LLM identified 6 files worth highlighting for reuse:

A standalone, published npm package (@image-metahub/metadata-engine) that parses AI image metadata from 15+ generators. Includes a ComfyUI workflow graph traversal engine, C2PA/JUMBF/CBOR parsing for Adobe Firefly, a browser variant, and its own test suite and versioning. Fully isolated from the Electron app — the single most reusable asset in the repo, extractable into any project needing AI image metadata extraction.

file: packages/metadata-engine/ ↗ | tags: #parser-factory #metadata-extraction #npm-package

Defines a binary vector index format with int8 per-vector quantization, segment files, row chunks, a manifest, centroid approximation for text-image centering, and hubness correction. Model-agnostic and self-contained — reusable for any embedding-based similarity search system that needs compact on-disk storage and fast cosine scoring.

file: services/embeddings/embeddingFormat.ts ↗ | tags: #vector-index #quantization #binary-format

Implements atomic copy/move/rename operations with sidecar file handling and rollback on failure. Demonstrates a robust, non-obvious file-operation pattern (verify → copy → commit → rollback) applicable to any desktop application managing file assets where partial failures would corrupt user data.

file: utils/model3DFileOperations.mjs ↗ | tags: #atomic-file-operations #rollback #sidecar-handling

A 4-phase clustering algorithm (exact match → token bucketing → hybrid Jaccard-Levenshtein similarity → refinement) for grouping near-duplicate prompts. Self-contained, deterministic, and adaptable to other text-similarity clustering problems beyond AI image metadata.

file: services/clusteringEngine.ts ↗ | tags: #clustering #similarity #tf-idf

A Web Worker implementing brute-force top-K vector search with a min-heap accumulator and int8-quantized cosine similarity. A clean, efficient pattern for on-device embedding search that keeps the UI thread responsive — reusable in any client-side vector search scenario.

file: services/workers/vectorSearchWorker.ts ↗ | tags: #web-worker #top-k-search #min-heap

Stripe billing event processor using an inbox/outbox pattern with idempotency windows, encrypted license delivery payloads, and refund convergence logic. A solid reference implementation for subscription billing event processing that tolerates webhook retries and partial delivery failures.

file: packages/license-server/src/stripeBillingService.js ↗ | tags: #event-inbox-outbox #idempotency #billing
Last analyzed: 2026-09-26 13:27:22.624388
Next check: 2026-10-03 13:27:22.589363
$ submit: