logos-modules-v2
Canonical Logos module catalog. Hosts the official curated set of Logos
modules as submodules and publishes them via the
logos-modules-release-action
reusable workflows.
This repo replaces the legacy logos-modules (single-bundle releases)
with one GitHub release per module-version. Clients (lgpd, the Logos
package_downloader module, the package-manager UI) discover the repo
by fetching logos-repo.json from the default branch root.
Module set
Bootstrapped from logos-modules@bump. Thirteen submodules under
submodules/:
| Module | Source |
|---|---|
logos-accounts-module |
logos-co |
logos-accounts-ui |
logos-co |
logos-blockchain-module |
logos-blockchain |
logos-blockchain-ui |
logos-blockchain |
logos-chat-module |
logos-co |
logos-chat-ui |
logos-co |
logos-delivery-module |
logos-co |
logos-execution-zone-module |
logos-blockchain |
logos-execution-zone-wallet-ui |
logos-blockchain |
logos-storage-module |
logos-co |
logos-storage-ui |
logos-co |
logos-wallet-module |
logos-co |
logos-wallet-ui |
logos-co |
Initial SHAs are pinned by scripts/bootstrap-submodules.sh.
Layout
.
├── logos-repo.json # repo metadata (name, indexUrl, trusted signers)
├── .gitmodules # submodule declarations
├── scripts/
│ └── bootstrap-submodules.sh # one-shot SHA-pinned `git submodule add`
├── submodules/ # one git submodule per module
│ ├── logos-chat-module/
│ ├── logos-wallet-module/
│ └── ...
└── .github/workflows/
├── _release-module.yml # base — single place for signing config
├── release-all.yml # umbrella: matrix-fans-out to every module
├── release-logos-chat-module.yml # per-module (passes only module_path)
├── release-logos-wallet-module.yml
├── ...
└── rebuild-index.yml # rolls up the catalog index after each release
Workflow architecture
A two-tier reusable-workflow structure so the signing pipeline lives in exactly one place:
_release-module.yml— local reusable workflow that callslogos-co/logos-modules-release-action@v1with our chosensigning_modeand secret wiring. It has onlyworkflow_call(noworkflow_dispatch), so it never appears as a runnable item in the Actions UI — it's only invoked from other workflows in this repo.release-<module>.yml(13 of them) — manually-triggered per-module workflows. Each passes justmodule_path: submodules/<repo>to_release-module.ymland inherits all secrets.release-all.yml— manually-triggered umbrella. Uses afail-fast: falsematrix over every submodule name and calls_release-module.ymlfor each in parallel. Useful for the initial bootstrap and for coordinated cross-module releases.
To switch signing modes (e.g. from inline to a Jenkins HSM):
Edit
_release-module.ymlONLY. The 13 per-module callers and the umbrella don't need to change.
Comments in _release-module.yml show the inline and external
configurations side-by-side.
Bootstrap
After pushing this skeleton to GitHub for the first time:
git clone https://github.com/logos-co/logos-modules-v2
cd logos-modules-v2
./scripts/bootstrap-submodules.sh
git add .gitmodules submodules/
git commit -m "Bootstrap submodules from logos-modules@bump"
git push
Then add LOGOS_SIGNING_KEY (JWK-format Ed25519 secret) to the repo's
Actions secrets and trigger the umbrella Release all modules
workflow to publish every initial release in one shot:
gh workflow run "Release all modules"
Individual modules can be cut afterwards via their own
Release <module> workflow when their submodule pointer is bumped.
Adding a new module
- Add the module as a git submodule under
submodules/:git submodule add https://github.com/logos-co/<repo> submodules/<repo> - Add a
.github/workflows/release-<repo>.ymlcalling thelogos-modules-release-actionreusable workflow (see the existing release files as templates — they only differ inmodule_path). - Trigger the new workflow to bootstrap a release.
Cutting a release
Bump the submodule pointer (and thereby its metadata.json#version),
push, then trigger the matching release-<module>.yml via
gh workflow run or the Actions UI. The action will:
- Build the
.lgxper variant, merge them, verify, sign with the inlineLOGOS_SIGNING_KEYsecret. - Publish a release tagged
<module>-v<version>. - Trigger
rebuild-index, which regeneratesindex.jsonon the rollingindexrelease.
Clients pick up the new version on their next catalog refresh.
Migration from logos-modules
The legacy logos-co/logos-modules repo keeps its existing
list.json-based bundle releases as a frozen archive — no code path in
the new client reads them. Users on older app versions can continue to
install from there until they upgrade.