The IPFS web browsers integration group
Half of the IPFS Web Browsers & GUI Working Group
Our goal is to facilitate native support for IPFS and other decentralized protocols in web browsers in order to benefit ....
- Browser users: Browser extensions and native-included IPFS alike expose IPFS features in a robust and intuitive way
- Web developers: Web developers can enjoy a smooth experience working with IPFS in browser contexts
- Browser vendors: Browser developers are empowered to meet the requirements of the distributed web
- Current projects
👉Q3 2020 update
- Get involved!
IPFS Companion browser extension
IPFS Companion is a browser extension that simplifies access to IPFS resources and adds browser support for the IPFS protocol. It runs in Firefox (desktop and Android) and Chromium-based browsers including Chrome or Brave. Check out all of IPFS Companion's features and install it today!
|Firefox / Firefox for Android||Chrome / Brave|
Other web extension experiments
- Exposing the IPFS API via
- Mozilla hosted a community effort called
libdwebto implement experimental APIs for Firefox WebExtensions, with a goal of enabling dweb protocols in Firefox through browser add-ons:
- Support for
chrome.sockets.*APIs in Chromium browsers (deprioritized due to EOL 2022)
At present, in order to run IPFS in a web browser, you must either bundle
js-ipfs-http-client HTTP API client library to connect to an external daemon running on a local or remote machine. To learn more, make sure to check the
ipfs-http-client/examples directories in their respective repos.
... in shared worker
- Enables sharing IPFS node across browsing contexts (tabs) on same origin
- Tracking related work in js-ipfs#3022
... in service worker
- Live demo at js.ipfs.io
- Due to the way browser vendors maintain the service worker lifecycle, a
js-ipfsinstance should be run outside of service worker
- Tracking related work in in-web-browsers#55 and ipfs-shipyard/service-worker-gateway
Accessing the IPFS HTTP API
The standalone IPFS daemon (either
js-ipfs in Node) exposes the API at
/api/v0/. It is an RPC-style API over HTTP POST.
How to address IPFS on the web
- For regular users, see this guide to how to address IPFS content paths on the web
- For browser vendors and user agent developers, see this memo for the current set of URL conventions for the IPFS community; we invite everyone to submit questions and suggestions for improvements via issues/PRs
DNSLink enables you to map a domain name to an IPFS address by means of a DNS TXT record.
- Read the DNSLink guide for details, including how to set it up on your own website
- See details on DNSLink in IPFS Companion to see additional benefits of using IPFS Companion with DNSLink support
Signed HTTP Exchanges and WebPackage
Signed HTTP Exchanges (SXG) are an experimental spec proposed by Google to decouple the origin of the content from who distributes it. The IPFS gateway at ipfs.io participates in Origin Trial for Signed HTTP Exchange (SXG), starting with Google Chrome 71. This means anyone can publish SXG on IPFS, and regular Chrome can load it from the ipfs.io gateway without any additional setup on the user's side.
Q3 2020 update
Now half of the Web Browsers & GUI Working Group!
The IPFS core team has re-activated the Web Browsers & GUI Working Group as a combined team of this group and the IPFS GUI group. This larger working group operates with a focus on furthering browser adoption and integration, as well as improving the functionality and usability of our GUI-based tools as a whole, with a particular focus on benefiting the onboarding of new IPFS developers and users.
Q3 2020 OKRs (WG-wide)
As with every team within IPFS, the Web Browsers & GUI Working Group sets and adheres to quarterly OKRs (Objectives and Key Results) in order to guide our work. (You can see all of the IPFS Project's quarterly OKRs here.)
- Remote (third-party) pinning services are easy to use
- Generic pinning service API spec finalized
js-ipfs/http-client support remote pins via HTTP API
- User flows resulting from API are understood and implemented in IPFS Companion and IPFS Desktop/Web UI
- 2+ collabs implement API and are included in Desktop/Web UI's pinning service settings
- Desktop/Web UI is capable of importing a 4GB file on low-memory devices
- Maintain and improve GUI tools as a whole (as bandwidth permits in a quarter focused on Filecoin enablement)
- Grow IPFS usage through onboarding improvements
- Ship libs for sharing IPFS nodes across browsing contexts (tabs) on same origin
- Understand sharing an IPFS node across different origins
- Understand ways of leveraging IPFS Desktop when present
- Ongoing browser collabs and grants are supported
- Brave integration of embedded
go-ipfsand native URIs
- Igalia’s work on
navigator.registerProtocolHandlerand browser extension APIs
- Kiwix is able to host ZIM on IPFS
- Brave integration of embedded
Join a meeting
We'd love to meet you in person at one of our open Web Browsers & GUI Working Group meetings. They're a great way to get quickly up to speed on our work, including latest developments and awesome demos.
- When: Every other Tuesday at 16:30 UTC (check the IPFS Calendar to see exact dates!)
- Where: https://protocol.zoom.us/j/833247793
- Agenda: https://hackmd.io/QaxiCU8BQqOuK8B8Tdi36g
Contribute to an issue
Contributions to our work are more than welcome! Every IPFS Project repo makes use of the project-wide global issue labeling scheme. Good labels to look for are ...
good first issue
- and there are even occasional
bountylabels for issues with rewards as part of the IPFS Bounty Board!
If you see an issue that catches your eye, leave a comment so we know you're interested, and we'll go from there!
We're an open project and a friendly group, so please be nice and read the contributing guidelines when you're ready to jump in.
Discuss in GitHub or IRC
We do hang out on IRC — see the #ipfs and #ipfs-in-web-browsers channels on irc.freenode.net — but for the sake of async communication, archiving, and searchability, we encourage discussions to happen in the context of GitHub issue comments whenever practical.
If you're looking for endeavors related to IPFS browser integration work, these resources may be helpful.
- IPFS Companion: Harness the power of your local or
js-ipfsnode directly inside your favorite Chromium or Firefox browser, enabling support for ipfs:// addresses, automatic IPFS gateway loading of websites and file paths, easy IPFS file import and sharing, and more
- IPFS Web UI: The IPFS dashboard shipped with the IPFS daemon or IPFS Desktop
- HTTP API documentation: Guide to the HTTP API exposed when an IPFS node (
js-ipfs) is running as a daemon; allows you to control the node and run the same commands you can from the command line
- IPFS GUI group - The other half of the IPFS Web Browsers & GUI Working Group, dedicated to creating and implementing standards and patterns for IPFS that are simple, accessible, reusable, and beautiful