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.
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.
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.
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.
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.
0% protocol fees
The protocol takes no cut, for makers or takers. You pay only the on-chain network cost of each swap.
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.
Built-in AMM
Run automated market making, manage liquidity across pairs, and schedule offer refreshes. The same surface partner integrators build on.
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.
| BTC | BCH | DASH | DCR | DOGE | FIRO | LTC | NMC | PART | PARTanon | PARTblind | PIVX | WOW | XMR | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BTC | A | A H | A H | A | A | A H | A H | A H | A | A | A H | A | A | |
| BCH | A | A | A | A | A | V | A | V | V | |||||
| DASH | A H | A H | A H | A H | A H | A | H | |||||||
| DCR | A H | A | A H | A | A | A H | A H | A H | A | A | A H | A | A | |
| DOGE | A | A | A | A | A | A | ||||||||
| FIRO | A | A | A | A | A | A | ||||||||
| LTC | A H | A | A H | A H | A | A | A H | A H | A | A | A H | A | A | |
| NMC | A H | A | A H | A H | A | A | A H | A H | A | A | A H | A | A | |
| PART | A H | A | A H | A H | A | A | A H | A H | A | A | A H | A | A | |
| PART anon | A | V | A | A | A | A | A | |||||||
| PART blind | A | A | A | A | A | A | A | A | A | A | A | A | ||
| PIVX | A H | H | A H | A H | A H | A H | ||||||||
| WOW | A | V | A | A | A | A | A | |||||||
| XMR | A | V | A | A | A | A | A |
Wherever you run software.
Every method below builds BasicSwap and its coin cores from source.
install guide ↗Linux
Debian, Ubuntu, Arch, FedoraThe community script suite (nahuhh/basicswap-bash) builds BasicSwap and its coin cores and installs the bsx-* management commands.
sudo apt install curl git # pacman / dnf on Arch / Fedora
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-bashbsx-updatebsx-addcoinbsx-removecoinbsx-enabletorbsx-clientauthThe official Docker path (basicswap/basicswap). Builds the image from source and runs it with Compose.
# 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 SiliconmacOS builds from source with Homebrew. Docker is not available on macOS.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python git gnupg pkg-config jq zeromq
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 .
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 WSLInside 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.
# Windows + R -> type "wsl" -> Enter
sudo apt update && sudo apt install curl git
git clone https://github.com/nahuhh/basicswap-bash && cd basicswap-bash
./basicswap-install.sh
cd .. && rm -rf basicswap-bash
basicswap-bashbsx-updatebsx-addcoinbsx-removecoinbsx-enabletorbsx-clientauthThe official Docker path (basicswap/basicswap). Builds the image from source and runs it with Compose.
# 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
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.