• Stars
    star
    5,842
  • Rank 6,941 (Top 0.2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An unobtrusive and user-friendly desktop application for IPFS on Windows, Mac and Linux.

IPFS Desktop

total download count latest release download count

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.

Status screen of IPFS Desktop

Files screen Explore screen Peers screen Settings screen Menubar/taskbar
Screenshot of the Files screen Screenshot of the Explore screen Screenshot of the Peers screen Screenshot of the Settings screen Screenshot of Mac/Windows menus

Quick-install shortcuts

When in doubt, pick one of package formats with built-in automatic update mechanism:

Table of Contents

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!

Mac

Windows

  • Installer: IPFS-Desktop-Setup-0.30.1.exe
  • Chocolatey (community-maintained): choco install ipfs-desktop
  • Scoop (community-maintained): scoop bucket add extras; scoop install extras/ipfs-desktop
  • WinGet (community-maintained): winget install IPFS.IPFS-Desktop

Linux/FreeBSD

Additional third-party packages exist, but have the built-in auto-update mechanism disabled. Instead, update cycle is maintained by respective communities:

Packaging status

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

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).

No matter how you contribute, please be sure you read and follow the IPFS Contributing Guidelines and the IPFS Community Code of Conduct.

Translations

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, 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.

FAQ & Troubleshooting

Why am I missing the system tray menu on Linux?

IPFS Desktop is built using Electron, and unfortunately, poor system tray support has been a longstanding problem with Electron apps.

You may wish to try troubleshooting according to the Electron v9.3.0 docs:

  • On Linux, the app indicator will be used if it is supported; otherwise GtkStatusIcon will be used
  • On Linux distributions that only have app indicator support, you must install libappindicator1 to make the tray icon work

If you've noticed that the old system tray is back in IPFS Desktop v0.13, this is because the Electron team removed support for StatusNotifier and restored the old tray interface on Linux called XEmbed.

Why can't I install IPFS Desktop under Debian 11?

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

Where are my IPFS configuration and log files?

You can open these files from the IPFS logo menu by selecting Open Logs Directory or Open Configuration File from the Advanced submenu. Or, find them in your OS as follows:

  • Mac: ~/Library/Application Support/IPFS Desktop/
  • Windows: %appdata%/IPFS Desktop/
  • Linux: ~/.config/IPFS Desktop/

How does IPFS Desktop select the IPFS repo location?

IPFS Desktop uses ipfsd-ctl, which, by default, checks the IPFS_PATH environment variable. If that isn't set, it falls back to $HOME/.ipfs. As soon as the first run has succeded, repository location info is saved in the configuration file, which becomes the source of truth.

To open your 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:

  1. Stop ipfs processes;
  2. Manually delete lock file, located within the repository;
  3. 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:

  1. Check if you are connected to the Internet;
  2. Make sure your firewall or antivirus is not blocking requests, such as P2P traffic;
  3. Try again, by restarting IPFS Desktop.

I need more help!

If you need help with using IPFS Desktop, the quickest way to get answers is to post them in the official IPFS forums.

If you think you've found a bug or other issue with IPFS Desktop itself, please open an issue.

License

MIT — Protocol Labs, Inc.

More Repositories

1

ipfs

Peer-to-peer hypermedia protocol
22,646
star
2

kubo

An IPFS implementation in Go
Go
15,905
star
3

js-ipfs

IPFS implementation in JavaScript
JavaScript
7,438
star
4

awesome-ipfs

Community list of awesome projects, apps, tools, pinning services and more related to IPFS.
JavaScript
4,307
star
5

ipfs-companion

Browser extension that simplifies access to IPFS resources on the web
JavaScript
2,010
star
6

public-gateway-checker

Checks which public gateways are online or not
TypeScript
1,697
star
7

ipfs-webui

A frontend for an IPFS node.
JavaScript
1,470
star
8

specs

Technical specifications for the IPFS protocol stack
HTML
1,107
star
9

distributed-wikipedia-mirror

Putting Wikipedia Snapshots on IPFS
TypeScript
621
star
10

helia

An implementation of IPFS in JavaScript
TypeScript
568
star
11

go-ipfs-api

The go interface to ipfs's HTTP API
Go
452
star
12

community

Discussion and documentation on community practices
Shell
416
star
13

notes

IPFS Collaborative Notebook for Research
402
star
14

go-ds-crdt

A distributed go-datastore implementation using Merkle-CRDTs.
Go
378
star
15

ipget

Retrieve files over IPFS and save them locally.
Shell
353
star
16

in-web-browsers

Tracking the endeavor towards getting web browsers to natively support IPFS and content-addressing
345
star
17

camp

🏕 IPFS Camp is a 3 day hacker retreat designed for the builders of the Distributed Web.
JavaScript
313
star
18

ipfs-docs

📚IPFS documentation platform
Go
299
star
19

roadmap

IPFS Project && Working Group Roadmaps Repo
296
star
20

team-mgmt

IPFS Team Planning, Management & Coordination threads
JavaScript
267
star
21

go-ds-s3

An s3 datastore implementation
Go
236
star
22

go-datastore

key-value datastore interfaces
Go
219
star
23

go-bitswap

The golang implementation of the bitswap protocol
Go
214
star
24

devgrants

The IPFS Grant platform connects funding organizations with builders and researchers in the IPFS community.
165
star
25

iptb

InterPlanetary TestBed 🌌🛌
Go
161
star
26

go-cid

Content ID v1 implemented in go
Go
156
star
27

js-ipfsd-ctl

Control an IPFS daemon (go-ipfs or js-ipfs) using JavaScript!
TypeScript
149
star
28

boxo

A set of reference libraries for building IPFS applications and implementations in Go.
Go
148
star
29

papers

IPFS Papers (not specs)
TeX
145
star
30

ipfs-update

An updater tool for Kubo IPFS binary
Go
136
star
31

infra

Tools and systems for the IPFS community
Shell
129
star
32

go-ipfs-http-client

[archived] Legacy Kubo RPC client, use kubo/client/rpc instead.
Go
108
star
33

go-unixfs

Implementation of a unix-like filesystem on top of an ipld merkledag
Go
107
star
34

ipfs-gui

Creating standards and patterns for IPFS that are simple, accessible, reusable, and beautiful
104
star
35

go-graphsync

Initial Implementation Of GraphSync Wire Protocol
Go
100
star
36

pinning-services-api-spec

Standalone, vendor-agnostic Pinning Service API for IPFS ecosystem
Makefile
99
star
37

aegir

AEgir - Automated JavaScript project building
JavaScript
93
star
38

js-dag-service

Library for storing and replicating hash-linked data over the IPFS network.
TypeScript
93
star
39

js-ipfs-unixfs

JavaScript implementation of IPFS' unixfs (a Unix FileSystem representation on top of a MerkleDAG)
TypeScript
85
star
40

go-merkledag

The go-ipfs merkledag 'service' implementation
Go
81
star
41

js-ipfs-repo

Implementation of the IPFS Repo spec in JavaScript
JavaScript
79
star
42

js-ipns

Utilities for creating, parsing, and validating IPNS records
TypeScript
74
star
43

js-datastore-s3

Datastore implementation with S3 backend
TypeScript
72
star
44

js-ipfs-bitswap

JavaScript implementation of Bitswap 'data exchange' protocol used by IPFS
TypeScript
65
star
45

go-ipld-format

IPLD Node and Resolver interfaces in Go
Go
61
star
46

apps

Coordinating writing apps on top of ipfs, and their concerns.
59
star
47

go-log

A logging library used by go-ipfs
Go
56
star
48

go-ipld-git

ipld handlers for git objects
Go
54
star
49

fs-repo-migrations

Migrations for the filesystem repository of ipfs clients
Go
54
star
50

go-dnslink

dnslink resolution in go-ipfs
Go
53
star
51

go-ds-badger

Datastore implementation using badger as backend.
Go
53
star
52

go-ipfs-blockstore

[ARCHIVED] This module provides a thin wrapper over a datastore and provides caching strategies.
Go
49
star
53

ipfs-blog

IPFS Blog & News
Vue
48
star
54

distributions

Legacy dist.ipfs.tech website and artifact build tools. Currently only used for notarizing builds of Kubo and IPFS Cluster.
Less
48
star
55

go-ipfs-cmds

IPFS commands package
Go
47
star
56

go-mfs

An in memory model of a mutable IPFS filesystem
Go
46
star
57

local-offline-collab

Local Offline Collaboration Special Interest Group
46
star
58

newsletter

Prepare and store the IPFS Newsletter
44
star
59

go-ds-flatfs

A datastore implementation using sharded directories and flat files to store data
Go
44
star
60

go-ipld-eth

Plugin of the Go IPFS Client for Ethereum Blockchain IPLD objects
Go
43
star
61

dht-node

[ARCHIVED] Run just an ipfs dht node (Or many nodes at once!)
Go
41
star
62

npm-kubo

Install Kubo (go-ipfs) from NPM
JavaScript
40
star
63

go-ipns

Utilities for creating, parsing, and validating IPNS records
Go
39
star
64

interface-go-ipfs-core

[ARCHIVED] this interface is now part of boxo and kubo/client/rpc
Go
38
star
65

dir-index-html

Directory listing HTML for go-ipfs gateways
HTML
38
star
66

rainbow

A specialized IPFS HTTP gateway
Go
37
star
67

go-ds-leveldb

An implementation of go-datastore using leveldb
Go
35
star
68

go-ipfs-files

An old files library, please migrate to `github.com/ipfs/go-libipfs/files` instead.
Go
33
star
69

interop

Interoperability tests for IPFS Implementations (on-the-wire interop)
JavaScript
32
star
70

ipfs-website

Official IPFS Project website
Vue
32
star
71

protons

Protocol Buffers for Node.js and the browser without eval
TypeScript
32
star
72

go-ipld-cbor

A cbor implementation of the go-ipld-format
Go
31
star
73

go-ds-sql

An implementation of ipfs/go-datastore that can be backed by any SQL database.
Go
31
star
74

go-ipfs-chunker

go-ipfs-chunkers provides Splitter implementations for data before being ingested to IPFS
Go
31
star
75

go-blockservice

The go 'blockservice' implementation, combines local and remote storage seamlessly
Go
27
star
76

service-worker-gateway

[WIP EXPERIMENT] IPFS Gateway implemented in Service Worker
TypeScript
25
star
77

go-ipld-eth-import

🌐 Bring Ethereum to IPFS 🌐
Go
25
star
78

ipld-explorer-components

React components for https://explore.ipld.io and ipfs-webui
TypeScript
24
star
79

interface-datastore

datastore interface
JavaScript
22
star
80

js-ipfs-utils

IPFS utils
JavaScript
22
star
81

metrics

Regularly collect and publish metrics about the IPFS ecosystem
JavaScript
21
star
82

js-ipfs-merkle-dag

[DEPRECATED]
JavaScript
20
star
83

js-datastore-level

Datastore implementation with level(up/down) backend
TypeScript
19
star
84

go-ipfs-example-plugin

Demo plugin for Kubo IPFS daemon
Go
19
star
85

benchmarks

Benchmarking for IPFS
JavaScript
19
star
86

ipfs-ds-convert

Command-line tool for converting datastores (e.g. from FlatFS to Badger)
Go
18
star
87

go-ipfs-provider

Go
17
star
88

js-kubo-rpc-client

A client library for the Kubo RPC API
JavaScript
17
star
89

go-pinning-service-http-client

An IPFS Pinning Service HTTP Client
Go
17
star
90

go-ipfs-gateway

Go implementation of the HTTP-to-IPFS gateway -- currently lives in go-ipfs
16
star
91

go-ipld-zcash

An implementation of the zcash block and transaction datastructures for ipld
Go
16
star
92

ipfs-camp-2022

Conference content and other resources for IPFS Camp 2022 in Lisbon, Portugal
16
star
93

go-ipfs-config

[ARCHIVED] config is now part of go-ipfs repo
Go
16
star
94

mobile-design-guidelines

Making IPFS work for mobile
15
star
95

js-datastore-core

Contains various implementations of the API contract described in interface-datastore
TypeScript
15
star
96

ecosystem-directory

Interactive showcase of projects and products built using IPFS, the InterPlanetary File System.
HTML
15
star
97

js-datastore-fs

Datastore implementation with file system backend
TypeScript
14
star
98

go-namesys

go-namesys provides publish and resolution support for the /ipns/ namespace in go-ipfs
Go
14
star
99

helia-unixfs

UnixFS commands for helia
TypeScript
14
star
100

js-stores

TypeScript interfaces used by IPFS internals
TypeScript
14
star