Ergot is the product brand for this repository's capture and asset-management work. The repository still uses historical imago-* app, package, and agent identifiers while the technical rename is deferred.
This repo currently centers on the unified Ergot MAM product, with today's implementation emphasis on local-first capture and processing foundations:
apps/imago-dashboard: SvelteKit control planeapps/imago-capture-ui: browser-based capture workspacepackages/imago-core: shared domain models, asset helpers, and metadata exportpackages/imago-ui: shared UI components for the dashboard and capture workspaceagents/imago-capture: local-first capture daemon and simulator-first capture agentagents/imago-pipeline: placeholder processing pipeline agent
- PRD.md:
Ergot MAM - PRD.cloud-mam-marketplace.md: superseded note kept for historical context
PRD.md is the active primary PRD for the work happening in this repository now. It defines one tenant-aware Ergot MAM product that can be deployed as a hosted service or a self-hosted Community Edition, using smrt-users and @happyvertical/smrt-tenancy as the identity and tenancy foundation.
- Copy
.env.exampleto.env. - Configure GitHub Packages read access for the
@happyverticalscope in your npm config. - Install dependencies with
pnpm install. - Start local infrastructure with
pnpm infra:up. - Apply schema migrations with
pnpm db:migrate. - Start the dashboard and background workers with
pnpm dev:dashboard. - Start the capture daemon and local capture workspace with
pnpm dev:capture. - Seed the end-to-end phase-1 flow with
pnpm happy-path.
The repo pins @happyvertical packages to GitHub Packages in .npmrc, so fresh installs need a token with package read access available through your user npm config.
pnpm install also configures the repo-local git hooks, including conventional commit message validation.
pnpm happy-path exercises the same SMRT background-job path the dashboard uses: it creates a project, queues a capture job, waits for queued work to complete, queues a pipeline run, waits for derived assets to land in MinIO, and prints the exported metadata.json.
pnpm dev:capture starts the local capture daemon on http://127.0.0.1:47891 and the browser-based capture workspace on http://127.0.0.1:47892. The capture node writes to local SQLite + filesystem storage first, then can sync sessions back into the central database.
The default motion path is Flipper Zero over USB for MVP turntable control. Ergot learns the remote locally and uses timed local pulses for open-loop motion during capture runs.
- SMRT models define generated REST, MCP, and CLI surfaces.
- Capture nodes run local-first: SQLite + filesystem locally, then session-first sync into central services.
- Capture and pipeline workers start simulator-first so the end-to-end slice lands before hardware and real reconstruction integrations.
- The dashboard starts the SMRT task runner locally so capture and pipeline queues execute through the same path used by the scripted happy path.
- The product direction is now broader than photogrammetry alone, but object photogrammetry remains the first implemented workflow.