Customer-facing packaging repo for the OpenProse + mycelium git-notes indexer demo.
This repo is intentionally small. It carries only the files we would actually ship to a customer, plus light packaging scripts to produce an email-friendly zip artifact.
- Read
how-to-package-zip-for-customer.md - Build the artifact:
./scripts/export-zip.sh- Send the resulting zip from
dist/ - Include the packaging repo commit hash in your handoff message
Important: dist/ is local-only and not committed to GitHub. The source of
truth is the git commit, not whatever happens to be sitting in dist/.
- package the deterministic C indexer (
bash outer loop + .prose inner loop) - keep runtime dependencies minimal and explicit
- produce a
dist/*.zipartifact we can email to a customer - keep
openprose/proseandopenprose/myceliumwired in as submodules for future-proofing and easy updates
The shipped bundle contains:
indexer/index.shindexer/scaffold.proseindexer/synthesize.proseindexer/publish.prose- bundled OpenProse
v0/VM files fromopenprose/prose - bundled pinned
mycelium.shruntime fromopenprose/mycelium - small wrapper commands:
indexer-demoindexer-demo-mycelium
The package is intentionally explicit about what it does:
- it shells out to Claude Code CLI (
claude -p) for enrichment - it reads git history, directory listings, selected source files, and existing README content
- it writes git notes only (
skeletonandenricherslots) - it does not edit README files or source files in the working tree
- reruns can refine existing notes (
--refine)
Operationally, the script runs in four phases:
- Skeleton — deterministic git/bash notes per directory
- Cartography — deterministic ranking and selection of directories
- Scaffold / Synthesize — Claude enriches leaf dirs, then parent dirs
- Publish — Claude writes/refines the repo root summary note
indexer/— the actual runtime files copied from the source repobin/indexer-demo— installed wrapper commandbin/indexer-demo-mycelium— helper CLI for reading bundled notes runtimebin/mycelium.sh— dev-mode wrapper to the submodule runtimescripts/sync-from-index.sh— refreshindexer/from the source reposcripts/export-zip.sh— build the customer-facing zip artifactdocs/CUSTOMER-README.md— README copied into the exported zipvendor/prose— submodule toopenprose/prosevendor/mycelium— submodule toopenprose/mycelium
The package intentionally uses a private bundled runtime for both OpenProse v0/
and mycelium.sh:
- install places runtime files under
~/.local/share/indexer-demo indexer-demoprepends the package's privatebin/dir toPATH- this ensures both the outer bash script and any Claude-executed
mycelium.shcommands resolve to the bundled, pinned runtime
When behavior changes, update both:
- this internal
README.md docs/CUSTOMER-README.md
Refresh from source repo:
./scripts/sync-from-index.shOr sync from a specific source worktree/branch:
INDEX_SOURCE_REPO=/path/to/index-worktree ./scripts/sync-from-index.shBuild export zip:
./scripts/export-zip.shCollaborator handoff doc:
how-to-package-zip-for-customer.md
Smoke-test the customer path from the built zip:
# unzip artifact somewhere temporary
# then:
bash ./install.sh
indexer-demo . --limit 5 --jobs 1
indexer-demo-mycelium context .The zip lands in dist/.