github.com/Worph/MetaAppStore answers 404, and with it every jsDelivr cdn.jsdelivr.net/gh/Worph/MetaAppStore@main/ URL: the icons, thumbnails and screenshots of all 44 apps were missing from the store listing, and the store source in the README no longer downloaded. - Asset URLs in every Apps/*/docker-compose.yml now point at https://gitea-watch.nsl.sh/metastar/MetaAppStore/raw/branch/main/Apps/{AppName}/ (103 of the 109 distinct URLs checked: 200 image/png). The other 6, MetaGateway and MetaWatch screenshot-1..3, name files that have never been in this repo. - README: the store source is https://gitea-watch.nsl.sh/metastar/MetaAppStore/archive/main.zip (public, checked to download anonymously). - CLAUDE.md and CONTRIBUTING.md: the asset rule and its grep guard follow, so an import cannot bring back a jsDelivr URL unnoticed.
MetaWatch
Stremio-style, video-only client for the decentralized MetaMesh network. Browses curated rows + filtered search, hides anything without a poster + description, and plays back in the browser — the server does zero media work (flat Range/206 byte proxy, no transcode).
What's in the stack
This is a self-contained stack (mirrors packages/meta-watch/dev/). It does
not depend on the standalone MetaCore app — it ships its own dedicated
infra so it can run alongside MetaGateway and the other Meta* apps with no
collisions:
| Container | Role |
|---|---|
metawatch-app |
UI + back-end the browser talks to (behind OIDC) |
metawatch-search |
Discovery: Kamilata federated search, identity/sign chain, prefs, User Data Layer |
metawatch-share |
Pure content transport: byte Range, bitswap, BitTorrent tier |
metawatch-core |
Dedicated meta-core: identity keystore + ingested records |
metawatch |
nginx-hash-lock OIDC perimeter for the dashboard |
Identity rides meta-watch → meta-search → meta-core (meta-watch holds only
verify keys). My List + Continue Watching persist in
/DATA/AppData/metawatch/data via the User Data Layer op-log.
Data layout
/DATA/AppData/metawatch/
├── metacore/ # shared by core + search + share (leader info, services, redis)
└── data/ # library.json + oplog.cbor (My List / Continue Watching)
Federation
metawatch-search and metawatch-share join the public libp2p swarm
(kad-DHT, cohort metamesh-share-default) and host-publish their libp2p
listeners on TCP 4004 / 4003. mDNS on the pcs network lets them find a
same-host MetaGateway without any open ports. To scope a private cohort, set a
matching KAD_NAMESPACE on every node.
You need a content producer
MetaWatch is a consumer. To see anything, at least one MetaGateway (or another MetaShare archivist) must be reachable on the swarm. Install MetaGateway for the torznab/Prowlarr + Tribler feed.
Images
| Image | Tag |
|---|---|
ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-watch |
1.0.89 |
ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-search |
1.2.10 |
ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-share |
2.6.2 |
ipcr-watch.nsl.sh/ipns/metadec.eth/metadec.eth/meta-core |
1.0.24 |
ghcr.io/yundera/appshield |
2.0.9 |
Publish the worph/* tags before listing the app — :latest tracks the newest
v* git tag, not main, so an untagged fix is a no-op for a docker compose pull.