IPFS Desktop gives you all the power of IPFS in a convenient desktop app: a complete IPFS node, plus handy OS menubar/taskbar shortcuts and an all-in-one file manager, peer map, and content explorer.
Use IPFS Desktop to get acquainted with IPFS without needing to touch the terminal — or, if you're already experienced, use the powerful menubar/taskbar shortcuts alongside the command line to make your IPFS workflow faster.
IPFS Desktop is a desktop application designed to provide users with seamless access to the IPFS (InterPlanetary File System) network. It simplifies interaction with decentralized storage by offering a complete IPFS node, alongside intuitive OS menubar/taskbar shortcuts and an all-in-one file manager, peer map, and content explorer.
Key Features:
Full-fledged IPFS node integrated into a user-friendly desktop interface.
Handy menubar/taskbar shortcuts for quick access to IPFS commands.
Built-in file manager and content explorer for easy navigation of decentralized data.
Peer map visualization to monitor network connections and interactions.
Can be installed via winget for seamless setup on supported platforms.
Audience & Benefit:
Ideal for developers, content creators, researchers, and educators seeking a reliable tool to interact with the IPFS ecosystem. Whether you're new to IPFS or an experienced user, IPFS Desktop enhances workflow efficiency by eliminating terminal complexity while providing powerful shortcuts for advanced operations. It empowers users to store, share, and access data in a censorship-resistant manner, ensuring data integrity through verifiable content addressing. Additionally, it supports offline-native productivity tools and serves as a resilient platform for digital art, scientific research, and Web3 applications.
README
IPFS Desktop
IPFS Desktop gives you all the power of IPFS in a convenient desktop app: a complete IPFS node, plus handy OS menubar/taskbar shortcuts and an all-in-one file manager, peer map, and content explorer.
Use IPFS Desktop to get acquainted with IPFS without needing to touch the terminal — or, if you're already experienced, use the powerful menubar/taskbar shortcuts alongside the command line to make your IPFS workflow faster.
Files screen
Explore screen
Peers screen
Settings screen
Menubar/taskbar
Quick-install shortcuts
When in doubt, pick one of package formats with built-in automatic update mechanism:
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg.
It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast, stable and provides unicode support as well as many features.
Transmission - A Fast, Easy and Free Bittorrent Client For macOS, Windows and Linux
Transmission is designed for easy, powerful use. We've set the defaults to just work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. When Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve.
Unlike many cross-platform applications, Transmission integrates seamlessly with your operating system.
The Qt-based Windows UI has been modernized and is fully Windows 11 ready.
Syncthing is a continuous file synchronization program.
It synchronizes files between two or more computers in real time, safely protected from prying eyes.
Your data is your data alone and you deserve to choose where it is stored,
whether it is shared with some third party, and how it's transmitted over the internet.
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. 1.
Auto Ban Xunlei, QQ, Baidu, Xfplay, DLBT and Offline downloader 2.
Temporary IP Filter API for advanced user 3.
Update MessageBox with changelog if NEW version is available 4.
Auto Ban Unknown Peer from China Option 5.
Auto Update Public Trackers List 6.
Auto Ban BitTorrent Media Player Peer Option
Nicotine+ aims to be a lightweight, pleasant, free and open source (FOSS) alternative to the official Soulseek client, while also providing a comprehensive set of features.
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg.
It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast, stable and provides unicode support as well as many features.
Transmission - A Fast, Easy and Free Bittorrent Client For macOS, Windows and Linux
Transmission is designed for easy, powerful use. We've set the defaults to just work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. When Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve.
Unlike many cross-platform applications, Transmission integrates seamlessly with your operating system.
The Qt-based Windows UI has been modernized and is fully Windows 11 ready.
Syncthing is a continuous file synchronization program.
It synchronizes files between two or more computers in real time, safely protected from prying eyes.
Your data is your data alone and you deserve to choose where it is stored,
whether it is shared with some third party, and how it's transmitted over the internet.
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. 1.
Auto Ban Xunlei, QQ, Baidu, Xfplay, DLBT and Offline downloader 2.
Temporary IP Filter API for advanced user 3.
Update MessageBox with changelog if NEW version is available 4.
Auto Ban Unknown Peer from China Option 5.
Auto Update Public Trackers List 6.
Auto Ban BitTorrent Media Player Peer Option
Nicotine+ aims to be a lightweight, pleasant, free and open source (FOSS) alternative to the official Soulseek client, while also providing a comprehensive set of features.
IPFS Desktop combines a complete IPFS node (running kubo) and the IPFS Web UI into a single, convenient desktop app — plus adds a menu to your OS menubar/system tray for easy access to a variety of common IPFS tasks.
If you already have an IPFS node on your computer, IPFS Desktop will act as a control panel and file browser for that node. If you don't have a node, it'll install one for you. And either way, IPFS Desktop will automatically check for updates.
Start your node at system startup and control it from your OS
IPFS Desktop enables you to stop or restart your node straight from the IPFS logo menu in your OS menubar/system tray. For Mac and Windows users, IPFS Desktop can also be set to launch at system startup, ensuring that your node is running whenever your computer is on.
Quickly import files, folders, and screenshots to IPFS
Import files and folders to your IPFS node in a variety of convenient ways:
Drag and drop items onto IPFS Desktop's Files screen
Click the Import button on the Files screen to add items from your computer or an IPFS content ID (CID)
(Windows) Right-click a file/folder's icon to add it to IPFS from the pop-up menu
(Mac) Drag and drop a file/folder onto the IPFS logo in your menubar
Plus, you can use the Take Screenshot command under the IPFS logo menu to take a screenshot, import it to your node, and copy a shareable link to your clipboard with one click.
Easily manage the contents of your node
IPFS Desktop's Files screen gives you an easy, familiar interface for working with the contents of your node:
Easily rename, move, or remove files and folders
Preview many common file formats directly in IPFS Desktop
Copy a file/folder's IPFS content ID (CID) or a shareable link to your clipboard
"Pin" files to your IPFS node or (coming soon!) to a third-party pinning service
Visualize your IPFS peers worldwide
Visit the Peers screen to see what nodes you're connected to, where they are, the connections they're using, and more.
Explore the "Merkle Forest" of IPFS files
Use the Explore screen to explore some example datasets — or your own files — and see firsthand how items stored on IPFS are broken down into content-addressed pieces.
Enjoy OS-wide support for IPFS files and links
IPFS Desktop enables most operating systems (Mac, Windows and some Linux flavors) to support protocols including ipfs:// and ipns://. This means that if an app on your computer tries to open a link starting with one of those protocol identifiers (for example, if your web browser encounters a link to ipns://en.wikipedia-on-ipfs.org), it'll automatically open in IPFS Desktop.
For an even better experience with ipfs://, and ipns:// addresses, we also recommend installing IPFS Companion to add support in your favorite browser!
Learn IPFS commands as you go
If you're interested in learning how to use IPFS from the command line, IPFS Desktop's CLI Tutor Mode can show you common IPFS commands as you go. Just check the CLI Tutor Mode box on the Settings screen to switch on this feature.
Install
Release notes and older versions of IPFS Desktop can be found on the releases page.
Don't see your favorite package manager? Visit our package managers page and help us add support for it!
Snapcraft support is deprecated and discouraged due to confinement issues, use .AppImage instead
ℹ️ update checks from existing users:
Additional third-party packages exist, but have the built-in auto-update mechanism disabled.
Instead, update cycle is maintained by respective communities:
Install from source
To install and run IPFS Desktop from source, you'll also need:
Then, follow the steps below to clone the source code, install dependencies, and run the app.
git clone https://github.com/ipfs/ipfs-desktop.git
cd ipfs-desktop
npm ci
npm run build
npm start
> Build Note:npm ci will download the webui code to run in electron from IPFS using the ipfs-or-gateway npm package. For details, see the build process and the webui code.
IPFS Desktop in itself is a simple container that makes sure Kubo and IPFS Webui can work together in a standalone fashion and has access to other os-specific features like tray and contextual integrations.
There are multiple ways to access IPFS Webui:
All of these instances of IPFS Webui are the same but shipped slightly differently. The file you're seeing being downloaded is a specific release of IPFS Webui, i.e. v4.1.1 has content identifiers (CID) bafybeiamycmd52xvg6k3nzr6z3n33de6a2teyhquhj4kspdtnvetnkrfim which can be verified on the IPFS Webui release page.
Contribute
We welcome all contributions to IPFS Desktop! The best way to get started is to check the current open issues (or drill down specifically for issues labeled "help wanted") and find something interesting. All issues are categorized by the standard label taxonomy used across the IPFS project, so you can also drill by topic (for example, UX-related issues).
Contributing translations in your language is particularly valuable! We use Transifex to manage internationalization, which means you don't need to change a single line of code to add your translations — just sign up for a Transifex account.
Because IPFS Desktop app includes text from IPFS Web UI and IPLD Explorer Components, you'll want to join all three Transifex projects in order to see all the text:
Note for developers: We use English as our source of truth. This means that if you add any new text, make those additions in ./assets/locales/en.json and they will automatically propagate in Transifex for other languages.
Developer notes
For more detailed information about hacking on IPFS Desktop, including a release checklist, please see the full developer notes.
Debian package depends on libappindicator3-1 which does not exist in Debian 11 anymore.
You need to install this missing dependency on your own, or use .AppImage instead.
Why can't I start IPFS Desktop under Debian 10?
Some Linux users may see one of the following errors when trying to launch IPFS Desktop:
When launching by double-clicking the app icon:
> The SUID sandbox helper binary was found, but is not configured correctly.
Rather than run without sandboxing I'm aborting now. You need to make sure that
chrome-sandbox is owned by root and has mode 4755.
When launching from the terminal:
$ ipfs-desktop
$Trace/breakpoint trap
This is a known issue with Electron/Chrome and some hardened kernels. More details can be found here, but a fix is to start IPFS Desktop from the terminal with the following additional parameter:
$ ipfs-desktop --no-sandbox
GTK 2/3 symbols detected. Using GTK 2/3 and GTK 4 in the same process is not supported
How does IPFS Desktop select the IPFS repo location?
IPFS Desktop uses ipfsd-ctl to locate Kubo repository.
First, it checks the IPFS_PATH environment variable.
If that isn't set, it falls back to $HOME/.ipfs (%USERPROFILE%/.ipfs/ on Windows). As soon as the first run has succeeded, repository location info is saved in the configuration file, which becomes the source of truth.
To open your Kubo repo directory from the IPFS logo menu, select Open Repository Directory from the Advanced submenu.
Which version of IPFS does IPFS Desktop use?
IPFS Desktop includes its own embedded binary of Kubo (kubo version defined in package.json); this is the latest version of Kubo that has passed QA for IPFS Desktop use.
You can check which version of IPFS you're running from the IPFS logo menu by looking in the About submenu.
Which flags does IPFS Desktop boot with?
By default, IPFS Desktop starts the IPFS daemon with the flags --migrate=true --enable-gc=true.
You can change this in the IPFS Desktop config file by selecting Open Configuration File from the Advanced submenu.
I got a repo.lock error. How do I resolve this?
In general, this means that a previous process was unable to remove the repository lock (indicator that file is in use) from the repository directory. This is supposed to be handled automatically, but sometimes it isn't. If you get this error, you can generally safely delete this file after shutting down any running IPFS daemon's or applications. Simple process is as follows:
Stop ipfs processes;
Manually delete lock file, located within the repository;
Attempt to start ipfs desktop (or other process that received the repo.lock error) again.
I got a network error (e.g. Error fetching). What should I do?
When upgrading, IPFS may need to perform migrations and for that we need a stable connection to download the required information for the migrations. Sometimes, the Internet connection may fail or be blocked by firewalls or antiviruses, and then you will run into a network error. Before submitting an issue, please try the following:
Check if you are connected to the Internet;
Make sure your firewall or antivirus is not blocking requests, such as P2P traffic;
Try again, by restarting IPFS Desktop.
Error: Initializing daemon...
These errors pop up from ipfsd-ctl when the Kubo daemon fails to start up. Below are some scenarios where you may run into this error.
Error: Your programs version (N) is lower than your repos (N+x).
This means you are attempting to run an older version of ipfs-desktop or Kubo than you have previously ran on your machine. Each Kubo version (which is included with ipfs-desktop) is tied to a specific IPFS repo version, which you can see at https://github.com/ipfs/fs-repo-migrations#when-should-i-migrate.
It is possible that your PATH has different kubo version than the one bundled with IPFS Desktop, in such case you should update it to the latest kubo binary as well.
However, if you are an advanced user and you really need to run the older version that is emitting this error, you will need to run a migration in reverse, manually. You can follow the official instructions here but with additional parameters: fs-repo-migrations -revert-ok -to N. See fs-repo-migrations --help for more information.
Found outdated fs-repo, migrations need to be run. - Error fetching: context deadline exceeded
This happens when there is a problem with downloading migrations needed by fs-repo-migrations. The errors usually look something like this:
Error: Initializing daemon...
Kubo version: 0.22.0
Repo version: 14
System version: amd64/darwin
Golang version: go1.19.12
Found outdated fs-repo, migrations need to be run.
Looking for suitable migration binaries.
Need 1 migrations, downloading.
Downloading migration: fs-repo-13-to-14...
Fetching with HTTP: "https://ipfs.io/ipfs/QmYerugGRCZWA8yQMKDsd9daEVXUR3C5nuw3VXuX1mggHa/fs-repo-13-to-14/versions"
Fetching with HTTP: "https://ipfs.io/ipfs/QmYerugGRCZWA8yQMKDsd9daEVXUR3C5nuw3VXuX1mggHa/fs-repo-13-to-14/versions"
Fetching with HTTP: "https://ipfs.io/ipfs/QmYerugGRCZWA8yQMKDsd9daEVXUR3C5nuw3VXuX1mggHa/fs-repo-13-to-14/versions"
Error fetching: exceeded number of retries. last error was http.DefaultClient.Do error: Get "https://ipfs.io/ipfs/QmYerugGRCZWA8yQMKDsd9daEVXUR3C5nuw3VXuX1mggHa/fs-repo-13-to-14/versions": dial tcp 199.16.156.40:443: i/o timeout
Fetching with IPFS: "fs-repo-13-to-14/versions"
Error fetching: context deadline exceeded
could not get latest version of migration fs-repo-13-to-14: 2 errors occurred:
* exceeded number of retries. last error was http.DefaultClient.Do error: Get "https://ipfs.io/ipfs/QmYerugGRCZWA8yQMKDsd9daEVXUR3C5nuw3VXuX1mggHa/fs-repo-13-to-14/versions": dial tcp 199.16.156.40:443: i/o timeout
*
You can update your Kubo config to try different sources of the migration files.
With IPFS-Desktop
Go to the Settings tab
Find "Migrations" in the config, and update the DownloadSources array to be ["IPFS", "https://trustless-gateway.link", "HTTP"]
From the terminal
For this method, you have to have the ipfs binary available on your command line:
eMule is a free and open-source peer-to-peer file sharing client, allowing you to connect to millions of users to download and share files with them. By using the ED2K and Kademlia Network it supports semi-centralized as well as decentralized searches and operations. All of it free and without any adware or advertising.
eMule is a free and open-source peer-to-peer file sharing client, allowing you to connect to millions of users to download and share files with them. By using the ED2K and Kademlia Network it supports semi-centralized as well as decentralized searches and operations. All of it free and without any adware or advertising.
eMule is a free and open-source peer-to-peer file sharing client, allowing you to connect to millions of users to download and share files with them. By using the ED2K and Kademlia Network it supports semi-centralized as well as decentralized searches and operations. All of it free and without any adware or advertising.
eMule is a free and open-source peer-to-peer file sharing client, allowing you to connect to millions of users to download and share files with them. By using the ED2K and Kademlia Network it supports semi-centralized as well as decentralized searches and operations. All of it free and without any adware or advertising.
Use libp2p to establish a TCP tunnel (does not support UDP). The underlying transmission can be implemented using QUIC, TCP, WebSocket, WebTransport. Use noise protocol to encrypt the transmission. Support NAT. Can be used in multi-layer combinations.
If there is no public network IP, you can use the node ID to connect. In some situations, directly specify the IP and communication protocol to connect.
The node private key is stored in .key files in the current directory, and the default file name is user.key. If it was deleted, a new node ID will be created automatically when the program is restarting.
Use libp2p to establish a TCP tunnel (does not support UDP). The underlying transmission can be implemented using QUIC, TCP, WebSocket, WebTransport. Use noise protocol to encrypt the transmission. Support NAT. Can be used in multi-layer combinations.
If there is no public network IP, you can use the node ID to connect. In some situations, directly specify the IP and communication protocol to connect.
The node private key is stored in .key files in the current directory, and the default file name is user.key. If it was deleted, a new node ID will be created automatically when the program is restarting.
Jackett works as a proxy server, it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software.
This allows for getting recent uploads (like RSS) and performing searches.
Jackett is a single repository of maintained indexer scraping and translation logic - removing the burden from other apps.
Jackett works as a proxy server, it translates queries from apps (Sonarr, Radarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software.
This allows for getting recent uploads (like RSS) and performing searches.
Jackett is a single repository of maintained indexer scraping and translation logic - removing the burden from other apps.
Bisq is a safe, private and decentralized way to exchange bitcoin for national currencies and other digital assets. Bisq uses peer-to-peer networking and multi-signature escrow to facilitate trading without a third party. Bisq is non-custodial and incorporates a human arbitration system to resolve disputes.
Bisq is a safe, private and decentralized way to exchange bitcoin for national currencies and other digital assets. Bisq uses peer-to-peer networking and multi-signature escrow to facilitate trading without a third party. Bisq is non-custodial and incorporates a human arbitration system to resolve disputes.
Bisq is a safe, private and decentralized way to exchange bitcoin for national currencies and other digital assets. Bisq uses peer-to-peer networking and multi-signature escrow to facilitate trading without a third party. Bisq is non-custodial and incorporates a human arbitration system to resolve disputes.
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar)
by Arvid Norberg. It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast,
stable and provides unicode support as well as many features.
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar)
by Arvid Norberg. It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast,
stable and provides unicode support as well as many features.
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar)
by Arvid Norberg. It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast,
stable and provides unicode support as well as many features.