{"id":13455852,"url":"https://github.com/ipfs/ipfs-companion","last_synced_at":"2025-04-14T01:49:03.406Z","repository":{"id":29165093,"uuid":"32695583","full_name":"ipfs/ipfs-companion","owner":"ipfs","description":"Browser extension that simplifies access to IPFS resources on the web","archived":false,"fork":false,"pushed_at":"2025-03-03T22:15:51.000Z","size":13853,"stargazers_count":2113,"open_issues_count":151,"forks_count":326,"subscribers_count":89,"default_branch":"main","last_synced_at":"2025-04-09T16:20:34.465Z","etag":null,"topics":["chrome-extension","dweb","firefox-extension","ipfs","ipfs-companion","ipfs-gateway","ipfs-gui","p2p","protocol","webextension"],"latest_commit_sha":null,"homepage":"https://docs.ipfs.tech/install/ipfs-companion/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ipfs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-22T21:08:51.000Z","updated_at":"2025-04-09T13:50:36.000Z","dependencies_parsed_at":"2023-02-14T12:16:46.937Z","dependency_job_id":"8c6ee140-bf76-4952-88bf-085fb94b4101","html_url":"https://github.com/ipfs/ipfs-companion","commit_stats":null,"previous_names":["ipfs-shipyard/ipfs-companion"],"tags_count":195,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Fipfs-companion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Fipfs-companion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Fipfs-companion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Fipfs-companion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipfs","download_url":"https://codeload.github.com/ipfs/ipfs-companion/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248094991,"owners_count":21046770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-extension","dweb","firefox-extension","ipfs","ipfs-companion","ipfs-gateway","ipfs-gui","p2p","protocol","webextension"],"created_at":"2024-07-31T08:01:12.214Z","updated_at":"2025-04-14T01:49:03.386Z","avatar_url":"https://github.com/ipfs.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","chrome-extension","Tools","工具"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eIPFS Companion Browser Extension\u003c/h1\u003e\n\n\u003cp align=\"center\" style=\"font-size: 1.2rem;\"\u003eHarness the power of \u003ca href=\"https://ipfs.tech\"\u003eIPFS\u003c/a\u003e in your browser!\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ipfs.tech\"\u003e\u003cimg src=\"https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square\" alt=\"Official Part of IPFS Project\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discuss.ipfs.tech\"\u003e\u003cimg alt=\"Discourse Forum\" src=\"https://img.shields.io/discourse/posts?server=https%3A%2F%2Fdiscuss.ipfs.tech\u0026amp;color=blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://matrix.to/#/#ipfs-space:ipfs.io\"\u003e\u003cimg alt=\"Matrix Chat\" src=\"https://img.shields.io/matrix/ipfs-space%3Aipfs.io?server_fqdn=matrix.org\u0026amp;color=blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ipfs/ipfs-companion/releases\"\u003e\u003cimg alt=\"GitHub release\" src=\"https://img.shields.io/github/v/release/ipfs/ipfs-companion?filter=!*rc*\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ipfs-shipyard/ipfs-companion/blob/main/docs/LOCALIZATION-NOTES.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/i18n-translated-blue.svg\" alt=\"i18n status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ipfs/ipfs-companion/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/ipfs/ipfs-companion/ci.yml?branch=main\" alt=\"ci\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ca href=\"https://docs.ipfs.tech/install/ipfs-companion/\"\u003e\u003cimg src=\"https://gateway.ipfs.io/ipfs/QmSsGphTN1eWMhkFFNFb23jWTXyhNbo47PF9FbmC6ZaRNg\" alt=\"Companion UX demo\" title=\"Companion UX demo\" width=\"100%\"\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \n| \u003cimg src=\"https://unpkg.com/@browser-logos/firefox/firefox_16x16.png\" width=\"16\" height=\"16\"\u003e [Firefox](https://www.mozilla.org/firefox/new/) \\| [Firefox for Android](https://play.google.com/store/apps/details?id=org.mozilla.firefox) | \u003cimg src=\"https://unpkg.com/@browser-logos/chrome/chrome_16x16.png\" width=\"16\" height=\"16\"\u003e [Chrome](https://www.google.com/chrome/) \\| \u003cimg src=\"https://unpkg.com/@browser-logos/brave/brave_16x16.png\" width=\"16\" height=\"16\"\u003e [Brave](https://brave.com/) \\| \u003cimg src=\"https://unpkg.com/@browser-logos/opera/opera_16x16.png\" width=\"16\" height=\"16\"\u003e [Opera](https://www.opera.com/)  \\| \u003cimg src=\"https://unpkg.com/@browser-logos/edge/edge_16x16.png\" width=\"16\" height=\"16\"\u003e [Edge](https://www.microsoftedgeinsider.com/)\n|------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [![Install From AMO](https://ipfs.io/ipfs/QmWNa64XjA78QvK3zG2593bSMizkDXXcubDHjnRDYUivqt)\u003cbr\u003e![](https://img.shields.io/amo/users/ipfs-companion?label=AMO%20users\u0026style=social)](https://addons.mozilla.org/firefox/addon/ipfs-companion/) | [![Install from Chrome Store](https://ipfs.io/ipfs/QmU4Qm5YEKy5yHmdAgU2fD7PjZLgrYTUUbxTydqG2QK3TT)\u003cbr\u003e![](https://img.shields.io/chrome-web-store/users/nibjojkomfdiaoajekhjakgkdhaomnch?label=Chrome%20Web%20Store%20users\u0026style=social)](https://chrome.google.com/webstore/detail/ipfs-companion/nibjojkomfdiaoajekhjakgkdhaomnch) |\n\n\u003c/div\u003e\n\n\u003chr /\u003e\n\n## Table of contents\n\n- [About IPFS Companion](#about-ipfs-companion)\n- [Features](#ipfs-companion-features)\n- [Install](#install-ipfs-companion)\n- [Contribute](#contribute)\n- [Help \u0026 Troubleshooting](#help--troubleshooting)\n- [Privacy \u0026 Licenses](#privacy--license-info)\n\n## About IPFS Companion\n\nIPFS Companion harnesses the power of your locally running IPFS node (either through the [IPFS Desktop](https://docs.ipfs.io/install/ipfs-desktop/) app or the [command-line daemon](https://docs.ipfs.io/install/command-line/)) directly inside your favorite Chromium-based or Firefox browser, enabling support for [`ipfs://` addresses](https://docs.ipfs.io/how-to/address-ipfs-on-web/#native-urls), redirecting content-addressed  websites and file paths to your local [Gateway](https://docs.ipfs.io/concepts/glossary/#gateway), easy IPFS file import and sharing, and more.\n\nIPFS is a peer-to-peer hypermedia protocol designed to make the web faster, safer, more resilient, and more open. It enables the creation and dissemination of completely distributed sites and applications that don’t rely on centralized hosting and stay true to the original vision of an open, flat web. Visit [the IPFS Project website](https://ipfs.io) to learn more.\n\n## IPFS Companion features\n\n### Automatically detect and redirect IPFS resources\n\n#### Detect URLs with IPFS paths\n\nIPFS Companion detects and tests requests for IPFS-like paths ( such as `/ipfs/{cid}` or `/ipns/{peerid_or_host-with-dnslink}`) on any website. If a path is a [valid IPFS address](https://github.com/ipfs/is-ipfs), it is redirected to load from your local gateway. The gateway at `localhost` will also automatically switch to a subdomain to provide a unique origin for each website:\n\u003e `https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR`\n\u003e → `http://localhost:8080/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR`\n\u003e → `http://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi.ipfs.localhost:8080`\n\n#### Detect DNSLink-enabled URLs\n\nIPFS Companion [detects DNSLink info](http://docs.ipfs.io/how-to/dnslink-companion/) in the DNS records of websites. If a site uses DNSLink (a few examples are https://docs.ipfs.io, https://ipld.io, and http://tr.wikipedia-on-ipfs.org), IPFS Companion redirects the HTTP request to your local gateway:\n\n\u003e `http://docs.ipfs.tech`\n\u003e → `http://localhost:8080/ipns/docs.ipfs.tech` → `http://docs.ipfs.tech.ipns.localhost:8080/`\n\n#### Detect pages with `x-ipfs-path` headers\n\nIPFS Companion also upgrades transport to IPFS if it finds the `x-ipfs-path` in any HTTP response headers; this also acts as a fallback for cases when an IPFS path is not present in the URL. [Learn more.](http://docs.ipfs.io/how-to/companion-x-ipfs-path-header/)\n\n\n#### Toggle redirects globally or per site\n\nYou can disable and re-enable local gateway redirects by several means:\n- Suspend redirects **globally** in IPFS Companion's preferences\n- Suspend redirects **per site** using the toggle under \"Current tab\" ([illustrated below](#toggle-gateway-redirects-on-a-per-website-basis)) or in IPFS Companion's preferences\n- Add `x-ipfs-companion-no-redirect` to the URL itself as a hash ([example](https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR#x-ipfs-companion-no-redirect)) or query parameter ([example](https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR?x-ipfs-companion-no-redirect))\n\n### Access frequently-used IPFS actions from your browser bar\n\nIPFS Companion enables you to quickly and easily access common actions from your browser bar with just a few clicks:\n\n- See how many peers you're connected with a glance at the cube icon in your browser bar\n- Check your IPFS API and gateway status by clicking the cube icon to reveal the main menu\n- Right-click images and other page assets to easily add them to IPFS (including the option to preserve file names)\n- Choose the _Import_ option in the main menu for quick drag-and-drop import from a browser tab\n- Pin or unpin IPFS resources (via API) directly from the main menu\n- Copy shareable public gateway links, IPFS content paths, or CIDs of IPFS resources directly from the main menu\n- Launch the [IPFS Web UI dashboard](https://github.com/ipfs-shipyard/ipfs-webui) from the main menu with a single click\n- Toggle gateway redirects or switch all IPFS Companion features on/off quickly and easily from the main menu (illustrations below)\n\n#### Toggle gateway redirects on a per-website basis\n\nYou can toggle redirects (of any IPFS sub-resources) for an individual website under the _Current Tab_ section of the main menu. If that site uses DNSLink, toggling off will restore the site's original URL, too.\n\n![Toggle per-site opt-out](https://gateway.ipfs.io/ipfs/QmYWXd4TSjk1RSzqzpaUbYp42obYjWtRme1oeYaTUdqkWu)\n\n#### Switch all IPFS Companion features on/off\n\nTo temporarily suspend all IPFS integrations (redirects, API status content scripts, protocol handlers, etc.), use the on/off button at the top of the IPFS Companion menu.\n\n![Turn IPFS Companion off and on again](https://gateway.ipfs.io/ipfs/QmZqyBnLY1jatj2ppJEbJqyj8oJecZt7chNB62jhhq8f9g)\n\n### Try out experiments!\n\nIPFS Companion ships with a variety of experimental features. Some are disabled by default, so be sure to check out IPFS Companion's Preferences to see them all.\n\n- Make plaintext IPFS links clickable ([demo](https://ipfs.io/ipfs/bafybeidvtwx54qr44kidymvhfzefzxhgkieigwth6oswk75zhlzjdmunoy/linkify-demo.html))\n- Re-route requests made via the following [experimental protocols](https://github.com/ipfs/ipfs-companion/issues/164) to an HTTP gateway (public or custom):\n    - `ipfs://$cid`\n    - `ipns://$cid_or_fqdn`\n\n## Install IPFS Companion\n\n### Latest stable release\n\n| \u003cimg src=\"https://unpkg.com/@browser-logos/firefox/firefox_16x16.png\" width=\"16\" height=\"16\"\u003e [Firefox](https://www.mozilla.org/firefox/new/) \\| [Firefox for Android](https://play.google.com/store/apps/details?id=org.mozilla.firefox) | \u003cimg src=\"https://unpkg.com/@browser-logos/chrome/chrome_16x16.png\" width=\"16\" height=\"16\"\u003e [Chrome](https://www.google.com/chrome/) \\| \u003cimg src=\"https://unpkg.com/@browser-logos/brave/brave_16x16.png\" width=\"16\" height=\"16\"\u003e [Brave](https://brave.com/) \\| \u003cimg src=\"https://unpkg.com/@browser-logos/opera/opera_16x16.png\" width=\"16\" height=\"16\"\u003e [Opera](https://www.opera.com/) \\| \u003cimg src=\"https://unpkg.com/@browser-logos/edge/edge_16x16.png\" width=\"16\" height=\"16\"\u003e [Edge](https://www.microsoftedgeinsider.com/)\n|------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [![Install From AMO](https://ipfs.io/ipfs/QmWNa64XjA78QvK3zG2593bSMizkDXXcubDHjnRDYUivqt)\u003cbr\u003e![](https://img.shields.io/amo/users/ipfs-companion?label=AMO%20users\u0026style=social)](https://addons.mozilla.org/firefox/addon/ipfs-companion/) | [![Install from Chrome Store](https://ipfs.io/ipfs/QmU4Qm5YEKy5yHmdAgU2fD7PjZLgrYTUUbxTydqG2QK3TT)\u003cbr\u003e![](https://img.shields.io/chrome-web-store/users/nibjojkomfdiaoajekhjakgkdhaomnch?label=Chrome%20Web%20Store%20users\u0026style=social)](https://chrome.google.com/webstore/detail/ipfs-companion/nibjojkomfdiaoajekhjakgkdhaomnch) |\n\n**Important!** Make sure you have [IPFS installed](https://ipfs.io/#install) on your computer as well. Because IPFS Companion (in its standard configuration) talks to your computer’s local IPFS node to work its browser magic, you’ll need to have IPFS running on your computer, too.\n\nIt's also possible to grab [vendor-specific packages for each release](https://github.com/ipfs-shipyard/ipfs-companion/releases),\nbut these builds are not signed, nor will automatically update. `.zip` bundles are meant only to be manually loaded via `chrome://extensions` (Chromium) or `about:debugging` (Firefox) for smoke-testing.\n\n### Development\n\nTo work on IPFS Companion's code, you'll need to install it from source. Quick steps are below, but see the full [developer notes](./docs/DEVELOPER-NOTES.md) for more detailed instructions and tips.\n\n1. Clone https://github.com/ipfs-shipyard/ipfs-companion.git\n2. Run this all-in-one dev build to install dependencies, build, and launch in the browser of your choice:\n    * Chromium\n        ```console\n        $ npm run dev-build chromium\n        ```\n    * Firefox\n        ```console\n        $ npm run dev-build firefox    # firefox:nightly works too!\n        ```\n\n## Contribute\n\n[![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](./docs/CONTRIBUTING.md)\n\nAll are welcome to help make IPFS Companion even better!\n- Check out the [contribution guide](./docs/CONTRIBUTING.md) for how to get started as a developer\n- Open an [issue](https://github.com/ipfs/ipfs-companion/issues)\n- Make sure you read and abide by the [IPFS Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md)\n\n## Release Process\n\nThe release process has been [documented here](./docs/RELEASE-PROCESS.md).\n\n## Help \u0026 troubleshooting\n\n### Ask a question\nThe best place to ask about IPFS Companion (or IPFS in general!) is in the [official IPFS Forums](https://discuss.ipfs.io/), where you can search past discussions for others who may have had the same questions, too. There's also an active [#ipfs](https://webchat.freenode.net/?channels=ipfs) community on IRC.\n\n### Common troubleshooting steps\nThese frequently encountered troubleshooting situations may be helpful:\n- **Import via right-click does not work in Firefox:** See [this workaround](https://github.com/ipfs/ipfs-companion/issues/227).\n- **HTTP-to-HTTPS redirects fail when using Ghostery:** [Ghostery](https://addons.mozilla.org/en-US/firefox/addon/ghostery/) is known to toy with HTTP-to-HTTPS redirect, which in some setups breaks websites utilizing public gateways [(more details)](https://github.com/ipfs-shipyard/ipfs-companion/issues/466). Until this is fixed upstream, a workaround is to [whitelist](https://user-images.githubusercontent.com/157609/39089525-5834c104-45c9-11e8-9e17-4459a97e5676.png) affected sites.\n- **NoScript breaks IPFS Companion:** By default, [NoScript](https://addons.mozilla.org/en-US/firefox/addon/noscript/) breaks IPFS Companion by blocking assets loaded from an IPFS gateway running on localhost. To fix this, extend the SYSTEM ruleset and prepend it with IPFS whitelist (feel free to modify this, but get familiar with [ABE rule syntax](https://noscript.net/abe/abe_rules.pdf) first):\n```\n# Enable IPFS redirect to LOCAL\nSite ^http://127.0.0.1:8080/(ipfs|ipns)*\nAnonymize\n\n# Prevent Internet sites from requesting LAN resources.\nSite LOCAL\nAccept from LOCAL\nDeny\n```\n\n## Privacy \u0026 license info\n\n- IPFS Companion [Privacy policy](./PRIVACY-POLICY.md)\n- The IPFS logo belongs to the [IPFS Project](https://github.com/ipfs) and is licensed under a \u003ca rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/3.0/legalcode\"\u003eCC-BY-SA 3.0\u003c/a\u003e license\n- [is-ipfs](https://github.com/ipfs-shipyard/is-ipfs), [js-multihash](https://github.com/multiformats/js-multihash), and other npm dependencies are under MIT license, unless stated otherwise\n- IPFS Companion itself is released under [CC0](LICENSE); to the extent possible under law, the author has waived all copyright and related or neighboring rights to this work, effectively placing it in the public domain\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs%2Fipfs-companion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipfs%2Fipfs-companion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs%2Fipfs-companion/lists"}