Skip to content

🌐 Decentralized Extension Distribution (P2P "Bodega"/"Hoard") #42

@akhileshthite

Description

@akhileshthite

Organize and distribute WebExtensions via decentralized hosting (e.g., IPFS, Hypercore) using a predictable folder structure.

Tasks:

  • Define folder structure convention:
/extensions/{name}/{version}/extension.zip
/extensions/{name}/index.json
  • Design compatibility layer to install directly from P2P URLs (e.g., peersky://extensions/...).
  • Use chrome-extension-fetch to archive Chrome Web Store extensions:
    • Fetch CRX → convert to ZIP → drop into /extensions/{name}/{version}/.
    • Automate index.json updates with metadata { version, P2P_URL, fetchedAt }.
    • Immediately ipfs add (or Hypercore) that folder, capture the P2P link.
    • Feed that P2P link back into the browser’s install step.
  • Add settings toggle: “Load from P2P”.
  • Add optional support for loading curated extension hoards (index.json) from trusted sources.
  • Explore automated updates from trusted hoards.
  • Clarify trust model: publisher-controlled integrity, browser-enforced sandboxing.

Behaviour:

Normal user (Archive to P2P before install):

  1. User visits a Chrome Web Store page (e.g., uBlock).

  2. Browser detects it’s a WebExtension and shows the install icon.

  3. When clicked:

  • chrome-extension-fetch downloads and converts the extension.
  • It saves it under a structured P2P-friendly folder.
  • It updates index.json with metadata.
  • It publishes that folder to IPFS, Hypercore, etc.
  • Finally, it installs the extension from the decentralized source, not from Google.

P2P user:

  1. A friend sends User X a P2P link:
    hyper://abcd1234/extensions/ublock/1.0.0/extension.zip

  2. User X opens this link in Peersky or Agregore.

  3. The browser:

  • Fetches the .zip over a peer-to-peer network (like Hypercore).
  • Reads the manifest.json inside.
  • Shows an "Install Extension" prompt.
  1. User X confirms → browser installs the extension just like any other.

No central store. Fully distributed. Great for local communities or devs sharing their own tools.

cc @RangerMauve @autonome

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthyperRelated to hyper protocolipfs/ipnsRelated to ipfs protocolpriority: highFor important issues that affect many users or major functionality of the project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions