Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ A directory of the Wasm components and WIT interfaces published by the Component
- A release is immutable, so it is indexed once.
- A dev tag moves with each build. It is re-indexed whenever its digest changes, until its release is published.
3. It then indexes the package versions those releases depend on, transitively, even when they are pre-releases, e.g. `wasi:logging@0.1.0-draft`. Each dependency's registry host comes from the wkg config, [`.config/wasm-pkg/config.toml`](.config/wasm-pkg/config.toml). The host's `/.well-known/wasm-pkg/registry.json` then gives the OCI repository, e.g. `wasi` → `wasi.dev` → `ghcr.io/webassembly/wasi/*`. As in wkg, `package_registry_overrides` takes precedence over `namespace_registries`, which takes precedence over `default_registry`. A mapping may also carry the registry metadata inline. To index the dependencies of a new namespace, add its registry to the config.
4. `directory build` renders the committed index as a static site. Versions are grouped by the repository they're built from, which comes from their `org.opencontainers.image.source` annotation. A repository releases its interface package and components together, with the same version, so `/repos/{owner}/{repo}/{version}/` lists everything the repository released at that version.
5. The site is built only from the committed index, never from the registry.
4. `directory build` renders the committed index as a static site. Versions are grouped by the repository they're built from, which comes from their `org.opencontainers.image.source` annotation. A repository releases its interface package and components together, with the same version, so a namespace's page lists each repository's packages at one version, switching between its versions in place, and each package's page links the others its repository released with it.
5. `directory scan` also links each stable version to the GitHub release of its source repository tagged with the version, `v0.3.1` or else `0.3.1`. When the version records the commit it was built from, the tag must be that commit. A release published after its packages is linked by a later scan.
6. The site is built only from the committed index, never from the registry.

The id of a WIT package is the package it declares, e.g. `ghcr.io/componentized/logging` holds `componentized:logging`. A component's id comes from its repository path, e.g. `ghcr.io/componentized/logging/levels` is `componentized:logging-levels`.

Expand All @@ -27,7 +28,7 @@ The index is committed in [`index/`](index), one directory per version:

```
index/{namespace}/{name}/{version}/
metadata.json # kind, origin, OCI location and digests, annotations, imports, exports, dependencies
metadata.json # kind, origin, OCI location and digests, annotations, imports, exports, dependencies, GitHub release
package.wit # a WIT package, its main package only
world.wit # a component's world, its main package only
```
Expand Down Expand Up @@ -68,6 +69,15 @@ python3 -m http.server -d _site

`cargo run -- scan --help` lists the other options, e.g. `--config` for a different wkg config.

## Samples

[`samples/`](samples) holds synthetic packages, laid out like the index, that exercise every WIT feature and keyword so the site's rendering of each can be checked: the `kitchen-sink` namespace, at [`/kitchen-sink/`](https://directory.componentized.dev/kitchen-sink/). They aren't published to any registry.

- Their `metadata.json` has `"origin": "synthetic"`. A component's imports and exports are derived from its WIT at build time, so its metadata needn't list them.
- `directory build` renders their pages apart from the index's: no page of the index lists, counts, searches or links them, while their own pages link each other. Each page notes it's a synthetic sample, is kept out of search engines and has no pull commands.
- A sample must be synthetic and keep to a namespace the index doesn't hold, and the index can't hold a synthetic version; the build fails otherwise.
- `scan` never reads them. `--samples` builds from another directory.

## Workflows

- [`scan.yaml`](.github/workflows/scan.yaml) runs every hour, on demand, and on a `release` repository dispatch. It commits the new versions to `main`, then deploys the site. A push made with the `GITHUB_TOKEN` doesn't start other workflows, so the scan calls `pages.yaml` itself.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,6 @@
"version": "0.2.3"
}
],
"release": "https://github.com/componentized/cli/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:14Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,6 @@
"version": "0.2.6"
}
],
"release": "https://github.com/componentized/cli/releases/tag/v0.1.1",
"indexed_at": "2026-11-11T23:44:15Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,6 @@
"version": "0.3.0"
}
],
"release": "https://github.com/componentized/cli/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:15Z"
}
20 changes: 10 additions & 10 deletions index/componentized/cli-stderr-to-stdout/0.2.1-dev/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@
"registry": "ghcr.io",
"repository": "componentized/cli/stderr-to-stdout",
"tag": "0.2.1-dev",
"digest": "sha256:7dee9e37b0d0be1075c984026407a97fa8cf524171393b5dbce900dc3db0bf73",
"layer_digest": "sha256:b61f911611b488d47afd796b5fea50c692e5a72481f54b7e0b6292517ed3dee1",
"size": 20488
"digest": "sha256:df67f64c5488bf2acc352315e4d94f505fa955b270619cdb366383d49199a260",
"layer_digest": "sha256:f3598658d88a39a9e05a9960c9840fca85d4afac5391310954c9a9d75bb60cc7",
"size": 20545
},
"debug": {
"registry": "ghcr.io",
"repository": "componentized/cli/stderr-to-stdout",
"tag": "0.2.1-dev_debug",
"digest": "sha256:31a7042269b2308d3b31677901ea58b674e3487a88fe3b6ea0ab653ac7d8f3bd",
"layer_digest": "sha256:fab95161592a207370abb65e1f853a3b53359910e369194464c91aecc1a73d43",
"size": 40379
"digest": "sha256:9b33cd688856052d22147ef8581604781d6cc65041bd8d3b0e836617d324eb13",
"layer_digest": "sha256:338ae4c0bed7b69b75ba2b8d461c528c5e5fd33e85068677dd1877a21c7bf009",
"size": 40496
},
"created": "2026-11-09T16:58:22.881775536Z",
"created": "2026-11-13T00:13:35.483369326Z",
"annotations": {
"org.opencontainers.image.description": "Redirects stderr's output stream to stdout.",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.revision": "c54ebd8f414e6381162daf2d6c0f634f3b1d73a1",
"org.opencontainers.image.revision": "42b075f70d614b7eb885dc562efcc126732d5633",
"org.opencontainers.image.source": "https://github.com/componentized/cli.git",
"org.opencontainers.image.title": "componentized:cli-stderr-to-stdout",
"org.opencontainers.image.url": "https://github.com/componentized/cli/tree/c54ebd8f414e6381162daf2d6c0f634f3b1d73a1/components/stderr-to-stdout",
"org.opencontainers.image.url": "https://github.com/componentized/cli/tree/42b075f70d614b7eb885dc562efcc126732d5633/components/stderr-to-stdout",
"org.opencontainers.image.version": "0.2.1-dev"
},
"imports": [
Expand All @@ -42,5 +42,5 @@
"version": "0.3.0"
}
],
"indexed_at": "2026-11-12T00:11:49Z"
"indexed_at": "2026-11-13T01:22:04Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,6 @@
"version": "0.2.3"
}
],
"release": "https://github.com/componentized/cli/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:15Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,6 @@
"version": "0.2.6"
}
],
"release": "https://github.com/componentized/cli/releases/tag/v0.1.1",
"indexed_at": "2026-11-11T23:44:16Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,6 @@
"version": "0.3.0"
}
],
"release": "https://github.com/componentized/cli/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:16Z"
}
20 changes: 10 additions & 10 deletions index/componentized/cli-stdout-to-stderr/0.2.1-dev/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@
"registry": "ghcr.io",
"repository": "componentized/cli/stdout-to-stderr",
"tag": "0.2.1-dev",
"digest": "sha256:d3eb85c03d1d734a1b383147a72dfbed2d17c5d9b70b353649ea523ad3f1f443",
"layer_digest": "sha256:47e18eaf4f924c83416ed868991409f3e4296e55e22935bbc9ed910de617f144",
"size": 20488
"digest": "sha256:63fa579d3e4cd0ea0123eb4632df6a4efce52945db5cf15c6625eb6e2b74ef9f",
"layer_digest": "sha256:03b6d85d3ae6d00491b37bd6df90ec415a32c4c5992812c7c333ea8aaded50c6",
"size": 20545
},
"debug": {
"registry": "ghcr.io",
"repository": "componentized/cli/stdout-to-stderr",
"tag": "0.2.1-dev_debug",
"digest": "sha256:cf9b9c192787ab7ce5b09f845864f722c141c25c8c084e14df988358a4c41653",
"layer_digest": "sha256:d8b54a83ab498083977f0595ebb3c1d8acc3378f1a28480899fcef00ac06536e",
"size": 40435
"digest": "sha256:f08f8e3678c233d5daccfed03ed1dcd263b5ef248062aafe00507ade5cc47499",
"layer_digest": "sha256:e9899fc979f5b954eff811dce557e4a60dbadac0b52012f63ae93a4b3acb88ca",
"size": 40496
},
"created": "2026-11-09T16:58:38.665527524Z",
"created": "2026-11-13T00:13:57.355257283Z",
"annotations": {
"org.opencontainers.image.description": "Redirects stdout's output stream to stderr.",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.revision": "c54ebd8f414e6381162daf2d6c0f634f3b1d73a1",
"org.opencontainers.image.revision": "42b075f70d614b7eb885dc562efcc126732d5633",
"org.opencontainers.image.source": "https://github.com/componentized/cli.git",
"org.opencontainers.image.title": "componentized:cli-stdout-to-stderr",
"org.opencontainers.image.url": "https://github.com/componentized/cli/tree/c54ebd8f414e6381162daf2d6c0f634f3b1d73a1/components/stdout-to-stderr",
"org.opencontainers.image.url": "https://github.com/componentized/cli/tree/42b075f70d614b7eb885dc562efcc126732d5633/components/stdout-to-stderr",
"org.opencontainers.image.version": "0.2.1-dev"
},
"imports": [
Expand All @@ -42,5 +42,5 @@
"version": "0.3.0"
}
],
"indexed_at": "2026-11-12T00:11:50Z"
"indexed_at": "2026-11-13T01:22:05Z"
}
1 change: 1 addition & 0 deletions index/componentized/cli/0.2.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@
"version": "0.3.0"
}
],
"release": "https://github.com/componentized/cli/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:14Z"
}
10 changes: 5 additions & 5 deletions index/componentized/cli/0.2.1-dev/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@
"registry": "ghcr.io",
"repository": "componentized/cli",
"tag": "0.2.1-dev",
"digest": "sha256:ad6f8b82997e2564d87325c041c5f3474398a91ed261a935d4b83d67695e1735",
"digest": "sha256:9714fd50724105886278d9410165f9e8d5880a083642cc8aa5baacb9a9127806",
"layer_digest": "sha256:f3d93daa91935626b3b2de8076c5405c5981e6c19d0075fcaeedfd42eeb816ff",
"size": 498
},
"created": "2026-11-09T16:58:13.853946569Z",
"created": "2026-11-13T00:13:24.903690127Z",
"annotations": {
"org.opencontainers.image.description": "A collection of utility components that remix wasi:cli types and interfaces.",
"org.opencontainers.image.licenses": "Apache-2.0",
"org.opencontainers.image.revision": "c54ebd8f414e6381162daf2d6c0f634f3b1d73a1",
"org.opencontainers.image.revision": "42b075f70d614b7eb885dc562efcc126732d5633",
"org.opencontainers.image.source": "https://github.com/componentized/cli.git",
"org.opencontainers.image.title": "componentized:cli",
"org.opencontainers.image.url": "https://github.com/componentized/cli/tree/c54ebd8f414e6381162daf2d6c0f634f3b1d73a1",
"org.opencontainers.image.url": "https://github.com/componentized/cli/tree/42b075f70d614b7eb885dc562efcc126732d5633",
"org.opencontainers.image.version": "0.2.1-dev"
},
"dependencies": [
Expand All @@ -27,5 +27,5 @@
"version": "0.3.0"
}
],
"indexed_at": "2026-11-12T00:11:48Z"
"indexed_at": "2026-11-13T01:22:04Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,6 @@
"version": "0.3.0"
}
],
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:17Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,6 @@
"version": "0.1.0"
}
],
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:18Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,6 @@
"version": "0.3.0"
}
],
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:18Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,6 @@
"version": "0.1.0"
}
],
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:19Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,6 @@
"version": "0.3.0"
}
],
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:19Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,6 @@
"version": "0.1.0"
}
],
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:20Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,6 @@
"version": "0.1.0"
}
],
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:20Z"
}
1 change: 1 addition & 0 deletions index/componentized/component/0.1.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@
"org.opencontainers.image.url": "https://github.com/componentized/component/tree/60a42310d899e65248acf584221ba444607251f0",
"org.opencontainers.image.version": "v0.1.0"
},
"release": "https://github.com/componentized/component/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:17Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-defaults/0.1.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-draft"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:21Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-defaults/0.2.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:21Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-defaults/0.2.1/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.1",
"indexed_at": "2026-11-11T23:44:21Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-empty/0.1.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@
"version": "0.2.0-draft"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:22Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-empty/0.2.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:22Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-empty/0.2.1/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.1",
"indexed_at": "2026-11-11T23:44:22Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@
"version": "0.2.0-draft"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:22Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:23Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.1",
"indexed_at": "2026-11-11T23:44:23Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-overlay/0.1.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-draft"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:23Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-overlay/0.2.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:23Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-overlay/0.2.1/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.1",
"indexed_at": "2026-11-11T23:44:24Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-remap/0.1.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-draft"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:24Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-remap/0.2.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:24Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-remap/0.2.1/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.1",
"indexed_at": "2026-11-11T23:44:25Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-scope/0.1.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-draft"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:25Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-scope/0.2.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:25Z"
}
1 change: 1 addition & 0 deletions index/componentized/config-scope/0.2.1/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/config/releases/tag/v0.2.1",
"indexed_at": "2026-11-11T23:44:25Z"
}
1 change: 1 addition & 0 deletions index/componentized/constants-atomics/0.2.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,6 @@
"version": "0.2.0"
}
],
"release": "https://github.com/componentized/constants/releases/tag/v0.2.0",
"indexed_at": "2026-11-11T23:44:27Z"
}
1 change: 1 addition & 0 deletions index/componentized/constants-config/0.1.0/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,6 @@
"version": "0.2.0-rc.1"
}
],
"release": "https://github.com/componentized/constants/releases/tag/v0.1.0",
"indexed_at": "2026-11-11T23:44:27Z"
}
Loading
Loading