ipfs-desktop
An unobtrusive and user-friendly desktop application for IPFS on Windows, Mac and Linux.
Top Related Projects
:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS
❤️ Streaming torrent app for Mac, Windows, and Linux
Brave browser for Android, iOS, Linux, macOS, Windows.
Open Source Continuous File Synchronization
Official Transmission BitTorrent client repository
qBittorrent BitTorrent client
Quick Overview
IPFS Desktop is a user-friendly application that integrates the InterPlanetary File System (IPFS) into your operating system. It provides a graphical interface for managing IPFS nodes, files, and peers, making it easier for users to interact with the decentralized web without needing command-line expertise.
Pros
- Easy-to-use graphical interface for IPFS
- Cross-platform support (Windows, macOS, Linux)
- Automatic updates and IPFS node management
- Integration with operating system file explorers
Cons
- May consume more system resources compared to command-line IPFS
- Limited advanced configuration options compared to manual IPFS setup
- Potential security concerns due to automatic execution of IPFS node
- Dependency on Electron framework, which can lead to larger application size
Getting Started
To get started with IPFS Desktop:
- Visit the IPFS Desktop releases page
- Download the appropriate installer for your operating system
- Install and run the application
- The IPFS node will start automatically, and you can begin using IPFS through the graphical interface
For more detailed instructions and usage guidelines, refer to the IPFS Desktop documentation.
Competitor Comparisons
:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS
Pros of Electron
- Broader application scope, suitable for various desktop apps
- Larger community and ecosystem with extensive documentation
- More frequent updates and active development
Cons of Electron
- Larger application size due to bundled Chromium
- Higher memory usage compared to native applications
- Potential security concerns due to full system access
Code Comparison
IPFS Desktop (main.js):
const { app, BrowserWindow } = require('electron')
const path = require('path')
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
win.loadFile('index.html')
}
Electron (quick-start example):
const { app, BrowserWindow } = require('electron')
const path = require('path')
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
win.loadFile('index.html')
}
The code snippets are nearly identical, as IPFS Desktop is built on Electron. The main difference lies in the specific implementation and features added to IPFS Desktop for its unique functionality.
❤️ Streaming torrent app for Mac, Windows, and Linux
Pros of WebTorrent Desktop
- User-friendly interface for streaming and downloading torrents
- Supports video streaming with built-in player
- Lightweight and cross-platform application
Cons of WebTorrent Desktop
- Limited to BitTorrent protocol, not as versatile as IPFS
- Lacks some advanced features present in IPFS Desktop
- Smaller developer community compared to IPFS
Code Comparison
WebTorrent Desktop:
const WebTorrent = require('webtorrent')
const client = new WebTorrent()
client.add(torrentId, (torrent) => {
torrent.files.forEach(file => file.appendTo('body'))
})
IPFS Desktop:
const IPFS = require('ipfs')
const node = await IPFS.create()
const cid = 'QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco'
const stream = node.cat(cid)
for await (const chunk of stream) {
console.log(chunk.toString())
}
Both projects aim to provide decentralized file sharing solutions, but IPFS Desktop offers a more comprehensive approach to content addressing and distribution. WebTorrent Desktop focuses on a simpler, torrent-specific experience with a user-friendly interface. IPFS Desktop provides a broader range of features and integrations with the IPFS ecosystem, while WebTorrent Desktop excels in ease of use for traditional torrent users.
Brave browser for Android, iOS, Linux, macOS, Windows.
Pros of Brave Browser
- Comprehensive web browser with built-in privacy features and ad-blocking
- Larger user base and more active development community
- Integrated cryptocurrency wallet and rewards system
Cons of Brave Browser
- More complex codebase due to broader feature set
- Higher resource usage compared to a focused IPFS desktop client
- Less emphasis on decentralized content distribution
Code Comparison
IPFS Desktop (JavaScript):
const IPFS = require('ipfs')
const node = await IPFS.create()
const fileAdded = await node.add('Hello world')
console.log('Added file:', fileAdded.path)
Brave Browser (C++):
#include "brave/browser/brave_content_browser_client.h"
bool BraveContentBrowserClient::WillCreateURLLoaderFactory(
content::BrowserContext* browser_context,
content::RenderFrameHost* frame,
int render_process_id,
URLLoaderFactoryType type,
const url::Origin& request_initiator,
base::Optional<int64_t> navigation_id,
ukm::SourceIdObj ukm_source_id,
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
header_client,
bool* bypass_redirect_checks) {
// Implementation details...
}
The code snippets highlight the different focus areas of the projects. IPFS Desktop emphasizes IPFS node operations, while Brave Browser deals with complex browser functionalities and network requests.
Open Source Continuous File Synchronization
Pros of Syncthing
- Decentralized and direct device-to-device synchronization without relying on central servers
- Supports selective sync, allowing users to choose specific folders to synchronize
- Lightweight and efficient, with low resource usage
Cons of Syncthing
- Requires manual setup and configuration for each device
- Less user-friendly interface compared to IPFS Desktop
- Limited integration with other applications and services
Code Comparison
Syncthing (Go):
func (m *Model) Index(folder string, fs fs.Filesystem, sub string) error {
m.fmut.RLock()
cfg := m.folderCfgs[folder]
m.fmut.RUnlock()
if cfg.Type == config.FolderTypeReceiveOnly {
return errors.New("folder is receive-only")
}
// ...
}
IPFS Desktop (JavaScript):
const addFiles = async (files) => {
const { cid } = await ipfs.add(files, {
progress: (bytes) => {
onProgress(bytes)
}
})
return cid
}
The code snippets show different approaches to file handling. Syncthing focuses on folder synchronization, while IPFS Desktop emphasizes content-addressable file addition to the IPFS network.
Official Transmission BitTorrent client repository
Pros of Transmission
- Mature and well-established BitTorrent client with a long history
- Lightweight and efficient, consuming fewer system resources
- Supports a wide range of torrent-specific features and optimizations
Cons of Transmission
- Limited to BitTorrent protocol, not supporting newer decentralized technologies
- Less user-friendly interface compared to modern alternatives
- Slower development cycle and fewer frequent updates
Code Comparison
Transmission (C):
static void
tr_peerMgrGotBadPiece(tr_torrent * tor, tr_piece_index_t pieceIndex)
{
assert(tr_isTorrent(tor));
assert(pieceIndex < tor->info.pieceCount);
tr_peerMgrLock(tor);
IPFS Desktop (JavaScript):
const addFile = async (file) => {
const filesAdded = await ipfs.add(file, {
progress: (bytes) => onProgress(file.name, bytes)
})
return filesAdded
}
Summary
Transmission is a robust, lightweight BitTorrent client, while IPFS Desktop offers a more modern approach to decentralized file sharing. Transmission excels in efficiency and torrent-specific features, but IPFS Desktop provides a broader range of decentralized technologies and a more user-friendly interface. The code comparison highlights the different languages and approaches used in each project.
qBittorrent BitTorrent client
Pros of qBittorrent
- Mature and well-established BitTorrent client with a large user base
- Supports a wide range of torrent-specific features like RSS feeds and IP filtering
- Cross-platform compatibility (Windows, macOS, Linux)
Cons of qBittorrent
- Limited to BitTorrent protocol, not designed for decentralized file storage
- Lacks built-in content addressing and content-based networking features
- May face legal challenges in some jurisdictions due to association with copyright infringement
Code Comparison
qBittorrent (C++):
void TorrentHandle::addTrackers(const QVector<QUrl> &trackers)
{
const libtorrent::torrent_handle handle = m_nativeHandle;
for (const QUrl &tracker : trackers)
handle.add_tracker(tracker.toString().toStdString());
}
IPFS Desktop (JavaScript):
const addFile = async (file) => {
const result = await ipfs.add(file)
return result.cid.toString()
}
This comparison highlights the fundamental differences between a traditional BitTorrent client (qBittorrent) and a decentralized file system application (IPFS Desktop). While qBittorrent focuses on torrent-specific functionality, IPFS Desktop provides a broader approach to content-addressed, peer-to-peer file sharing and storage.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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:
- Mac: ipfs-desktop-0.37.0-mac.dmg
- Windows: IPFS-Desktop-Setup-0.37.0.exe
- Linux: ipfs-desktop-0.37.0-linux-x86_64.AppImage
- If you prefer to manage updates on your own, see other package formats below.
Table of Contents
- IPFS Desktop
- Quick-install shortcuts
- Table of Contents
- Features
- Start your node at system startup and control it from your OS
- Quickly import files, folders, and screenshots to IPFS
- Easily manage the contents of your node
- Visualize your IPFS peers worldwide
- Explore the "Merkle Forest" of IPFS files
- Enjoy OS-wide support for IPFS files and links
- Learn IPFS commands as you go
- Install
- Contribute
- FAQ & Troubleshooting
- Why am I missing the system tray menu on Linux?
- Why can't I install IPFS Desktop under Debian 11?
- Why can't I start IPFS Desktop under Debian 10?
- Where are my IPFS configuration and log files?
- How does IPFS Desktop select the IPFS repo location?
- Which version of IPFS does IPFS Desktop use?
- Which flags does IPFS Desktop boot with?
- I got a
repo.lock
error. How do I resolve this? - I got a network error (e.g.
Error fetching
). What should I do? - I need more help!
- License
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 theFiles
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
- Installer: ipfs-desktop-0.37.0-mac.dmg
- Homebrew (community-maintained):
brew install --cask ipfs
- â¹ï¸ update checks from existing users:
Windows
- Installer: IPFS-Desktop-Setup-0.37.0.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
- â¹ï¸ update checks from existing users:
Linux/FreeBSD
- AppImage: ipfs-desktop-0.37.0-linux-x86_64.AppImage
- Tarball (tar.gz) (use this for building packages for distros): ipfs-desktop-0.37.0-linux-x64.tar.xz
- Debian (DEB) (experimental): ipfs-desktop-0.37.0-linux-amd64.deb
- Red Hat (RPM) (experimental): ipfs-desktop-0.37.0-linux-x86_64.rpm
- FreeBSD (experimental): ipfs-desktop-0.37.0-linux-x64.freebsd (requires Linux Binary Compatibility to be enabled)
- 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:
- Node.js â pick the current LTS
- Any platform-specific dependencies required by
node-gyp
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:
- https://webui.ipfs.io/#/welcome
- http://127.0.0.1:5001/webui (shipped with kubo)
- IPFS Desktop itself
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).
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:
- https://www.transifex.com/ipfs/ipfs-desktop/
- https://www.transifex.com/ipfs/ipfs-webui/
- https://www.transifex.com/ipfs/ipld-explorer/
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?
[!IMPORTANT] IPFS Desktop app configuration is separate from the configuration and repository of Kubo IPFS node.
You can open Desktop app and log 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?
[!IMPORTANT] IPFS Desktop uses Kubo implementation of IPFS node, which has its own configuration and repository, separate from the Desktop app.
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
. 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.
The ideal solution is to ensure you're running the latest version of ipfs-desktop, as upward migrations happen automatically.
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://dweb.link", "https://cloudflare-ipfs.com", "HTTP"]
From the terminal
For this method, you have to have the ipfs
binary available on your command line:
ipfs config --json Migration.DownloadSources '["IPFS", "https://dweb.link", "https://cloudflare-ipfs.com", "HTTP"]'
Manually in an editor (not recommended)
You can also edit the config file (~/.ipfs/config
or C:\Users\Username\.ipfs\config
) manually. Just make sure the json file is valid when you finish.
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
Top Related Projects
:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS
❤️ Streaming torrent app for Mac, Windows, and Linux
Brave browser for Android, iOS, Linux, macOS, Windows.
Open Source Continuous File Synchronization
Official Transmission BitTorrent client repository
qBittorrent BitTorrent client
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot