A SimpleX Chat bot that lets users swap cryptocurrency via CypherGoat — privately, without accounts
Users add the bot as a SimpleX contact and can compare rates across 23+ exchanges, execute swaps, and track transactions — all from within their SimpleX chat.
Try out the CypherGoat SimpleX chat bot here
- Compare live swap rates across 23+ exchanges
- Interactive exchange selection — see all rates then pick
- Direct swap with a specific exchange
- Transaction tracking by CGID
- All cyphergoat supported coins with multi-network support (ETH, Tron, BSC, Lightning, etc.)
- Auto-accepts contact requests and sends a welcome message
- Rate limiting, swap timeout, and persistent state across restarts
- Python 3.11+
simplex-chatbinary- CypherGoat API key — request one at support@cyphergoat.com
Download the latest binary from the SimpleX releases page and put it on your $PATH.
First-run setup (creates a profile):
simplex-chatFollow the prompts to create your bot's profile, then exit.
git clone https://github.com/cyphergoat/simplex-bot
cd simplex-botpip install -r requirements.txtcp .env.example .envEdit .env:
CYPHERGOAT_API_KEY=your_api_key_here
SIMPLEX_WS_URL=ws://localhost:5225You can an API key here
Start simplex-chat in WebSocket mode in one terminal:
simplex-chat -p 5225Start the bot in another:
python3 bot.pyAdd the bot as a contact in SimpleX. It will auto-accept and send a welcome message.
| Command | Description |
|---|---|
estimate <amount> <from> <to> |
Compare rates across all exchanges |
swap <amount> <from> <to> <address> |
See rates and pick an exchange |
swap <amount> <from> <to> <exchange> <address> |
Swap directly with a specific exchange |
track <cgid> |
Check swap status by CypherGoat ID |
coins [search] |
List supported coins and networks |
help |
Show the help message |
cancel |
Cancel a pending exchange selection |
estimate 0.1 btc xmr
swap 0.1 btc xmr <your_xmr_address>
swap 100 usdt:tron xmr QuickEx <your_xmr_address>
track 443eeccf-e620-403d-a2d3-e25141152f28
coins usdt
Some coins exist on multiple blockchains. Use ticker:network to be explicit:
usdt:tron usdt:eth usdt:bsc
btc:lightning
Run coins usdt to see all available networks for a coin.
| Variable | Default | Description |
|---|---|---|
CYPHERGOAT_API_KEY |
— | Required. CypherGoat API key |
SIMPLEX_WS_URL |
ws://localhost:5225 |
SimpleX WebSocket address |
STATE_DB |
state.db |
Path to the SQLite state file |
├── bot.py # Main bot — SimpleX connection, command routing, state management
├── cyphergoat.py # CypherGoat API client
├── coins.json # Supported coins and network mappings
├── requirements.txt
├── .env.example
└── state.db # Runtime state (created automatically, not committed)
GNU General Public License v3.0 — see LICENSE.