Foundry is a prototype search layer for messy creative archives. This first milestone scans an existing folder and produces a deterministic manifest plus a visual archive report. It does not move, rename, or alter source assets.
Prerequisite: Node.js 22 or newer.
npm run demoThis scans the current contents of demo-archive, generates the report, starts a local showcase server, and opens it in Google Chrome (falling back to the default browser). The generated manifest is at output/manifest.json.
The demo command does not reset the archive. Add images, videos, documents, and other test assets anywhere below demo-archive and run it again. To recreate the original fictional sample archive explicitly, run npm run demo:reset.
To run without opening a browser:
FOUNDRY_NO_OPEN=1 npm run demoBefore recording or publishing the demo, run the release check:
npm run release:checkThis rebuilds the manifest and prepared import package, regenerates the report, checks the Node.js version and required files, and runs the test suite.
To scan another directory:
node src/scan.mjs /absolute/path/to/archive
node src/report.mjs- Discover: recursively inventory the archive and generate stable records.
- Review: show what Foundry found, what it can preview, and what needs enrichment.
- Enrich: generate captions, extract document text, transcribe audio, and sample video keyframes.
- Ingest: create a Weaviate collection and batch-ingest manifest records.
- Retrieve: add keyword, vector, hybrid, and filtered search.
The raw creative files stay in their source storage. Weaviate receives searchable records, vectors, metadata, and a pointer back to each source.
Generate a safe, inspectable import package without contacting a cloud service:
npm run ingest:dry-runThis writes output/weaviate-import.json. Absolute local paths are replaced with portable foundry:// source identifiers before cloud ingestion.
To ingest into a free Weaviate Cloud cluster:
- Create a free cluster at console.weaviate.cloud.
- Copy
.env.exampleto.envand add the cluster URL and a read-write API key. - Review
output/weaviate-import.json. - Run
npm run ingest:cloud.
The command creates a Foundry collection using Weaviate Embeddings and the free tier's HFresh vector index. Re-running it updates objects deterministically rather than duplicating them.
With .env configured, npm run demo now provides the complete MVP:
- Discover the local creative archive.
- Generate and review the portable manifest.
- Synchronise records with Weaviate from the browser interface.
- Compare keyword, semantic and hybrid retrieval.
- Filter results by project, asset type and relationship role.
- Preview matching local images and videos.
Cloud credentials remain inside the local Node process. They are never embedded in the generated HTML or sent to browser code.
The current release is a deliberately small, inspectable prototype. The enrichment file contains deterministic demo descriptions and tags so the screenshots and search results are reproducible. Automatic image captioning, OCR, transcript extraction, incremental rescans, rights-aware filters, and feedback-driven ranking are planned follow-ups rather than hidden assumptions in this version.