02 · basicswap desktop · power user

No coordinator.
Just your node.

The full BasicSwap protocol, self-hosted and running end to end on your own machine.

Post swap offers, run automated market making strategies, and settle straight to your wallets across 14 chains. No operator stands in between. Trustless by your node, not by anyone's promise.

0% fees
No protocol fees for makers or takers.
pay only the on-chain network cost
BasicSwap Desktop · localhost
BasicSwap Desktop ยท Network Order Book
no shortcuts

The protocol, uncompromised.

This is BasicSwap with nothing held back. Your own coin core wallets, your own full nodes, and the strongest privacy, decentralization, and security the protocol can offer. Whether you're making markets or just taking a trade.

01

Fully self-hosted

Runs the actual coin core wallets on your machine, each one a validating node. Funds stay in wallets only you control, and your node checks every swap against the chains itself.

02

Truly decentralized

A distributed order book carried over peer-to-peer messaging. No coordinator, no matching engine, no operator who can throttle, censor, or front-run your offers.

03

Maximum privacy

Everything runs locally, optionally over Tor, and no one logs your trades. Adaptor signatures leave no fingerprint on-chain, so nothing proves a transaction is a swap or links its two legs across chains to reveal who you traded with.

04

0% protocol fees

The protocol takes no cut, for makers or takers. You pay only the on-chain network cost of each swap.

05

All 14 coins

Bitcoin, Monero, Litecoin (with MWEB), Particl (with anon variants), Bitcoin Cash, Dash, Decred, Firo, Dogecoin, Namecoin, PIVX, Wownero. The complete protocol coin list, every supported pair.

06

Built-in AMM

Run automated market making, manage liquidity across pairs, and schedule offer refreshes. The same surface partner integrators build on.

14 coins · one protocol

Cross-chain, end to end.

Not every coin can swap with every other, and the cryptographic method depends on the pair. Here is exactly what is possible, and how each swap settles.

BTCBCHDASHDCRDOGEFIROLTCNMCPARTPARTanonPARTblindPIVXWOWXMR
BTCAA HA HAAA HA HA HAAA HAA
BCHAAAAAVAVV
DASHA HA HA HA HA HAH
DCRA HAA HAAA HA HA HAAA HAA
DOGEAAAAAA
FIROAAAAAA
LTCA HAA HA HAAA HA HAAA HAA
NMCA HAA HA HAAA HA HAAA HAA
PARTA HAA HA HAAA HA HAAA HAA
PART anonAVAAAAA
PART blindAAAAAAAAAAAA
PIVXA HHA HA HA HA H
WOWAVAAAAA
XMRAVAAAAA
A adaptor signature H secret hash V one-time VES blank not compatible
columns send · rows receive
runs on

Wherever you run software.

Every method below builds BasicSwap and its coin cores from source.

install guide ↗

Linux

Debian, Ubuntu, Arch, Fedora
Script suite

The community script suite (nahuhh/basicswap-bash) builds BasicSwap and its coin cores and installs the bsx-* management commands.

prerequisites
sudo apt install curl git   # pacman / dnf on Arch / Fedora
install
git clone https://github.com/nahuhh/basicswap-bash && cd basicswap-bash
./basicswap-install.sh

# Scripts move to ~/.local/bin, so the clone can go
cd .. && rm -rf basicswap-bash
basicswap-bash
run BasicSwap
bsx-update
update BSX + coin cores
bsx-addcoin
enable a coin
bsx-removecoin
disable a coin
bsx-enabletor
route through Tor
bsx-clientauth
set a client password
Docker

The official Docker path (basicswap/basicswap). Builds the image from source and runs it with Compose.

install
# Dependencies + Docker engine
sudo apt install curl jq git
# install Docker -> docs.docker.com/engine/install

# Build the image
git clone https://github.com/basicswap/basicswap.git
cd basicswap/docker && cp example.env .env
docker compose build

# Configure (example: monero + bitcoin)
export COINDATA_PATH=/var/data/coinswaps
CURRENT_XMR_HEIGHT=$(curl -s http://node2.monerodevs.org:18089/get_info | jq .height)
docker run --rm -t --name swap_prepare -v $COINDATA_PATH:/coindata i_swapclient \
  basicswap-prepare --datadir=/coindata --withcoins=monero,bitcoin \
  --htmlhost=0.0.0.0 --wshost=0.0.0.0 \
  --xmrrestoreheight=$CURRENT_XMR_HEIGHT --usebtcfastsync

# Start, then open http://localhost:12700
docker compose up

macOS

Intel + Apple Silicon
Build from source

macOS builds from source with Homebrew. Docker is not available on macOS.

prerequisites
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python git gnupg pkg-config jq zeromq
build
export SWAP_DATADIR=/Users/$USER/coinswaps
python3 -m venv "$SWAP_DATADIR/venv"
. $SWAP_DATADIR/venv/bin/activate && python3 -V
cd $SWAP_DATADIR
git clone https://github.com/basicswap/basicswap.git
cd $SWAP_DATADIR/basicswap
sudo python3 bin/install_certifi.py
pip3 install --require-hashes -r requirements.txt
pip3 install .
configure + run
CURRENT_XMR_HEIGHT=$(curl -s http://node2.monerodevs.org:18089/get_info | jq .height)
basicswap-prepare --datadir=$SWAP_DATADIR --withcoins=monero,bitcoin \
  --xmrrestoreheight=$CURRENT_XMR_HEIGHT --usebtcfastsync

basicswap-run --datadir=$SWAP_DATADIR
# open http://localhost:12700

Windows

Windows 10/11 · via WSL
Script suite (WSL)

Inside WSL2, the community script suite (nahuhh/basicswap-bash) builds BasicSwap and its coin cores and installs the bsx-* management commands. An unstable .exe installer also exists but is not recommended.

open wsl
# Windows + R  ->  type "wsl"  ->  Enter
sudo apt update && sudo apt install curl git
install
git clone https://github.com/nahuhh/basicswap-bash && cd basicswap-bash
./basicswap-install.sh
cd .. && rm -rf basicswap-bash
basicswap-bash
run BasicSwap
bsx-update
update BSX + coin cores
bsx-addcoin
enable a coin
bsx-removecoin
disable a coin
bsx-enabletor
route through Tor
bsx-clientauth
set a client password
Docker

The official Docker path (basicswap/basicswap). Builds the image from source and runs it with Compose.

install
# Dependencies + Docker engine
sudo apt install curl jq git
# install Docker -> docs.docker.com/engine/install

# Build the image
git clone https://github.com/basicswap/basicswap.git
cd basicswap/docker && cp example.env .env
docker compose build

# Configure (example: monero + bitcoin)
export COINDATA_PATH=/var/data/coinswaps
CURRENT_XMR_HEIGHT=$(curl -s http://node2.monerodevs.org:18089/get_info | jq .height)
docker run --rm -t --name swap_prepare -v $COINDATA_PATH:/coindata i_swapclient \
  basicswap-prepare --datadir=/coindata --withcoins=monero,bitcoin \
  --htmlhost=0.0.0.0 --wshost=0.0.0.0 \
  --xmrrestoreheight=$CURRENT_XMR_HEIGHT --usebtcfastsync

# Start, then open http://localhost:12700
docker compose up
cross-link

Just want to swap, not run a node?

BasicSwap Mobile is the consumer side of the protocol. Browser, mobile, partner wallets. Same atomic swap guarantee, none of the daemons.

Open BasicSwap Mobile