iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
Static photo gallery navigated by argus-lens structured captions: faceted filtering, caption explain/compare views, EXIF and sidecars
翻訳待ち
Loading the full README.
Read the full README ↗A photo gallery you navigate by structured captions. Every photo is captioned by argus-lens. Instead of one flat string, lens produces category-bucketed captions (identity, wardrobe, pose, setting, lighting, action), and Lightbox turns those buckets into filters. You can pick "red dress" under Wardrobe and "sunset" under Lighting, open a photo, and see how lens assembled its caption from the raw model output.
It's the standalone demo for argus-lens. The full pipeline UI is Argus Studio.
| How a caption was built | Same raw output, assembled three ways |
|---|---|
training (identity-suppressed) and zeroshot variants, with copy buttons and the active filters highlighted.1girl, solo), how fragments were classified, and which ones each variant kept or trimmed, plus lens's own compaction notes and headcount evidence..txt caption trainers read, and an XMP file (keywords + description) for Lightroom, digiKam and Immich.Face grouping and content rating are left out. They are the curator demo, argus-cull. This gallery only links there.
cortex lineage store ──▶ bake/ (Python) ──▶ web/public/data/ ──▶ web/ (Next.js static export)
recorded captions re-run lens assembly index.json no server, no API
+ image blobs on the raw output (CPU) images/ thumbs/ xmp/
The site is fully static. A bake step does all the work ahead of time:
compose_caption_result() on each caption's stored raw tags and prose. This needs no model or GPU, and it recovers the intermediate assembly state the tape doesn't store: the per-category buckets, compaction notes, headcount, and the tags/prose/hybrid comparison. The recorded caption stays what's displayed. If the pinned lens release would now assemble it differently, the photo is flagged (explain.drift).index.json.The web app loads index.json and does everything else client-side. All gallery state (search, filters, the open photo) lives in the URL, so any view can be shared.
web/public/data/ holds a committed synthetic fixture: 12 drawn placeholder scenes with hand-written WD14/Florence-style raw output, captioned by lens's real pipeline. It lets the app run and be tested without the tape, and it's labelled "Synthetic fixture" in the UI. The real data comes from make tape.
Needs uv. Node 22 is optional: the Makefile runs npm in the node:22 Docker image when npm isn't on your PATH.
make install # bake venv + web dependencies
make dev # http://localhost:3000, serving the committed fixture
Bake the real run from a cortex store, for example the local stores you recorded the tape from:
export CORTEX_PG_URL=postgresql://… # lineage store
export CORTEX_S3_ENDPOINT=… CORTEX_S3_BUCKET=argus-tape # blob store (plus credentials)
make tape # → web/public/data-tape/ (committed: the hosted demo)
NEXT_PUBLIC_DATA_URL=/data-tape make dev
lightbox-bake tape --dataset <name> restricts the bake to one curated dataset, and --limit N caps it.
Docker Compose runs the gallery and a lens server. Nothing else has to be installed on the host. With no path set, it captions the Pictures folder in your home directory (~/Pictures on Linux and macOS, %USERPROFILE%\Pictures on Windows). PHOTOS_DIR points somewhere else: another local directory, a NAS share already mounted on this machine, or a USB drive.
docker compose up --build
# PHOTOS_DIR=/mnt/nas/library docker compose up --build
# PHOTOS_DIR=/run/media/$USER/USB/DCIM docker compose up --build
This is the beginning of the README. Read the rest at the original. Read the full README ↗