Desktop Application
Installation & Startup Issues
Application won't start
Application won't start
-
macOS: Check if the app is blocked by Gatekeeper
- Go to System Preferences → Security & Privacy
- Click “Open Anyway” if you see a message about KaleidoSwap
-
Windows: Run as Administrator
- Right-click the app → Run as Administrator
- Check Windows Defender hasn’t quarantined the file
-
Linux: Check execution permissions
-
Check system requirements:
- 4GB RAM minimum
- 500MB free disk space
- Supported OS version (macOS 12+, Windows 10+ 64-bit, Ubuntu 22.04+)
Binary verification fails
Binary verification fails
- Re-download the application from the official GitHub releases
- Ensure you’re downloading the correct file for your platform
- Use a reliable download connection (corrupted downloads can cause mismatches)
- Verify you’re comparing against the correct version’s checksum
App crashes on startup
App crashes on startup
-
Check the log files:
- macOS:
~/Library/Logs/com.kaleidoswap.dev/ - Windows:
%APPDATA%\com.kaleidoswap.dev\logs - Linux:
~/.local/share/com.kaleidoswap.dev/logs
- macOS:
-
Common causes:
- Corrupted configuration: Delete the config file and restart
- Port conflict: Another app is using the required ports (9735, 3001)
- Missing dependencies: Reinstall the application
- If the crash persists, attach the most recent log file from the directory above when contacting support or opening a GitHub issue.
Node & Connection Issues
Cannot connect to LSP
Cannot connect to LSP
-
Check your internet connection
- Ensure you have a stable internet connection
- Try accessing other websites to verify connectivity
-
Verify LSP URL
- Default:
https://api.signet.kaleidoswap.com - Check Settings → LSP Configuration
- Default:
-
Firewall/VPN issues
- Disable VPN temporarily to test
- Allow KaleidoSwap through your firewall
- Required ports: 9735 (Lightning P2P), 3001 (node API)
-
Check LSP status
- Visit the LSP’s status page or contact support
- Try switching to a different LSP if available
Node sync is very slow
Node sync is very slow
-
Normal behavior: Initial sync can take 30 minutes to several hours depending on:
- Your internet speed
- Your system’s disk speed
- Network congestion
-
Check sync progress:
- Look for block height in the UI
- Compare against current network height
-
Stuck sync troubleshooting:
- Restart the application
- Check available disk space (need at least 10GB free)
- Clear peer list and reconnect
- Check firewall isn’t blocking P2P connections
Peer connection issues
Peer connection issues
- Wait: Peer discovery can take a few minutes
-
Check network settings:
- Ensure UPnP is enabled on your router (for incoming connections)
- Manually forward port 9735 if UPnP unavailable
-
Bootstrap nodes:
- The app should connect to bootstrap nodes automatically
- If not, check your internet connection and firewall
-
Network selection:
- Verify you’re on the correct network (Mainnet/Testnet/Signet/Regtest)
- Peers must be on the same network
Wallet & Asset Issues
Wallet balance shows zero
Wallet balance shows zero
- Wait for sync: Balance won’t show until node is fully synced
- Check the correct network: Ensure you’re on the network where you have funds
- Verify wallet recovery: If you restored from seed, ensure you used the correct mnemonic
- Check asset vs BTC balance: Toggle between Bitcoin and RGB asset views
- Refresh: Try restarting the application
Cannot unlock wallet
Cannot unlock wallet
- Verify password: Passwords are case-sensitive
- Caps Lock: Check if Caps Lock is accidentally on
- Different keyboard layout: Ensure same keyboard layout as when password was set
- Wallet recovery: If password is truly lost, you’ll need to recover using your mnemonic seed
- Contact support: As a last resort, contact support with your wallet public key (never share private keys)
RGB asset not appearing
RGB asset not appearing
- Wait for confirmation: RGB asset transfers require Bitcoin confirmations
- Import consignment: You may need to manually import the consignment data
- Check asset ID: Verify you’re looking at the correct asset
- Refresh asset list: Settings → Assets → Refresh
- Verify sender completed transfer: Contact sender to confirm they finished the send process
Channel Operations
Channel opening failed
Channel opening failed
- Check order status: Use Order ID to check status via API or support
-
Common failure reasons:
- Insufficient funds: Need to cover channel amount + fees
- Payment timeout: Invoice expired before payment
- Invalid parameters: Check min/max channel sizes
- LSP unavailable: Temporary LSP downtime
-
Refund process:
- If order fails, refunds are automatic to your refund address
- Refunds may take 6+ confirmations to appear
-
Retry:
- Wait a few minutes and try again
- Reduce channel size if at maximum
- Verify sufficient inbound liquidity
Channel shows as inactive
Channel shows as inactive
-
Wait for confirmations: Channels need blockchain confirmations to become active
- Typically 3-6 confirmations required
- Check confirmation count in channel details
-
Peer offline: Your channel partner needs to be online
- Wait for peer to come back online
- Check “Last Seen” timestamp
-
Channel reserves: Cannot spend below channel reserve amount
- Lightning channels require keeping a reserve balance
- This is normal protocol behavior
-
Force close: If channel is permanently stuck, you can force-close
- This puts funds back on-chain after a delay
- Should be last resort
Asset delivery pending
Asset delivery pending
-
Normal delay: Asset delivery via keysend can take a few minutes
- Automatic retry mechanism in place
- Can take up to 30 minutes in some cases
-
Check delivery status:
- Order details show asset delivery status
- Statuses: PENDING → IN_PROGRESS → COMPLETED
-
Manual retry:
- Use “Retry Delivery” button if available
-
Failed delivery:
- Contact LSP support with Order ID
- Refund may be available if delivery cannot complete
Trading & Swaps
Swap failed or timed out
Swap failed or timed out
-
Quote expiration: RFQ quotes are short-lived — about 60 seconds by default, and each quote carries its own
expires_at- Complete swap before expiration
- Request new quote if expired
-
Rate changed: Market rate changed significantly
- Accept new rate when prompted
- Or cancel and get refund
-
Payment routing failed: Lightning payment couldn’t find a route
- Try smaller amount
- Open additional channels for more liquidity
- Wait and retry
-
Swap stuck:
- Check swap status:
POST /api/v1/swaps/atomic/status(by payment hash) - Contact support with the payment hash for assistance
- Check swap status:
Unexpected swap price
Unexpected swap price
-
Check quote details: Review the RFQ response carefully
from_amountvsto_amount- Applied fees
- Precision of assets
-
Fee structure:
- Base fee + variable fee
- Fee asset and precision
- Total fee shown in quote
-
Precision confusion:
- BTC uses 8 decimals
- USDT typically uses 6 decimals
- Check asset precision in glossary
-
Slippage:
- For market orders, price can move slightly
- Use limit orders if you need exact price
Browser Extension
The cases below are specific to how the closed beta is installed and how its accounts are backed.Installation & Updates
Load unpacked fails, or the extension disappears later
Load unpacked fails, or the extension disappears later
chrome://extensions rejects the folder, or a working extension stops loading after a while.Solutions:- Select the right folder: Choose the folder that contains
manifest.json. If the archive has adistfolder, selectdist. - Don’t move or delete the extracted folder: The browser loads the extension from that path every time. Moving it to another disk, renaming it, or clearing a Downloads folder breaks the install.
- Extract first: Point the browser at the extracted folder, not at the zip.
- Re-add it: Remove the broken card in
chrome://extensionsand load the folder again. Your wallet is not stored in that folder, so this does not touch your funds.
A new beta build doesn't take effect
A new beta build doesn't take effect
- Closed beta builds do not auto-update — there is no store listing to push them.
- After extracting the new zip, go to
chrome://extensionsand click Reload on the KaleidoSwap card. - If you extracted into a different folder, remove the old unpacked extension and load the new folder instead — otherwise the browser keeps running the old one.
- Confirm the version under Settings > About.
The extension won't install in my browser
The extension won't install in my browser
- The closed beta targets Chromium-based browsers: Chrome, Brave, Edge, Opera.
- Firefox is not part of the first closed beta unless a Firefox build is provided, and Safari is not supported yet.
- Developer mode must be toggled on in
chrome://extensionsbefore Load unpacked appears. - Install only archives from the official invite or support channel — never a forwarded copy.
Accounts & Balances
RGB assets disappeared after connecting a node
RGB assets disappeared after connecting a node
- Disconnect RLN in Settings > Accounts > RGB to return to the node-less RGB-L1 backing.
- Decide which backing you want: node-less for RGB on Bitcoin L1, RLN for RGB Lightning channels and maker-based swaps.
- Before switching, make sure the backing you are leaving is backed up — RGB-L1 to its cloud (VSS) and local backups, RLN to the node’s own backup material.
Restored wallet is missing its RGB state
Restored wallet is missing its RGB state
- RGB-L1 state is not derived from the recovery phrase — it is restored from the encrypted cloud (VSS) backup, and only if you explicitly consent at that onboarding step. Skipping the prompt leaves the state behind.
- Re-import the wallet and accept the restore prompt when it appears.
- If you use RLN instead, RGB state must be recovered from the node’s own backup material, not from the extension.
Imported a Nostr key and now funds are missing
Imported a Nostr key and now funds are missing
nsec1… key and the wallet is empty.Solutions:- A Nostr key does not control funds. Importing one only replaces the Nostr identity.
- Always restore with the BIP39 recovery phrase — it is what derives the Spark, Arkade, Liquid, and RGB-L1 accounts.
- Re-import using the recovery phrase; you can import the Nostr key afterwards from Settings.
Swaps & Bridge
Cannot quote the full balance
Cannot quote the full balance
- The amount input is gated by your spendable balance for the source asset, not the total balance, so you cannot quote more than the wallet can actually send.
- On-chain sends also reserve the network fee — Max accounts for this automatically.
- Check that the balance is on the account the selected route uses; balances are tracked per layer.
Swap fails instead of executing
Swap fails instead of executing
- This is slippage protection working as intended: the minimum output is derived from your configured tolerance, and the swap fails rather than executing beyond it.
- Re-quote — quotes expire, and the rate may have moved since.
- Adjust your slippage tolerance if the market is genuinely volatile, or reduce the size.
A bridge order seems lost
A bridge order seems lost
- Bridge orders are saved locally as a session. Reopening the bridge screen restores the pending order and resumes tracking, even after the service worker restarts.
- Completed and failed orders show a final status with the relevant transaction references.
- Deposits confirm on the source chain first — an order can sit in progress while that happens.
API & Integration
Authentication & Connection
422 Validation errors
422 Validation errors
- Check request body: Ensure all required fields are present
- Data types: Verify integers, strings, booleans are correct type
- Field validation: Check min/max values, formats
- Read error details: The response includes which fields failed validation
CORS errors in browser
CORS errors in browser
-
Use backend: Make API calls from your backend, not frontend
- CORS is disabled for security on most endpoints
- Browser-based apps need a backend proxy
-
Development workaround:
- Use browser CORS plugin (development only)
- Configure your dev server as proxy
- Production: Always use server-side API calls
RFQ & Order Issues
RFQ expired before use
RFQ expired before use
- Check expires_at: Quotes are valid for about 60 seconds by default; always read the quote’s own
expires_atrather than assuming a fixed window - Request new quote: Call
/api/v1/market/quoteagain - Faster integration: Minimize time between quote and order creation
- Use expiration time: Build UI countdown showing time remaining
Order stuck in PENDING state
Order stuck in PENDING state
- Payment required: Check if you need to pay an invoice or send to an address
-
Check payment status:
-
Automatic transitions: Some states transition automatically
- PENDING_PAYMENT → PAID (after payment confirmed)
- CHANNEL_OPENING → COMPLETED (after channel opens)
-
Timeouts: Orders expire if not paid within time limit
- Check
expires_atfield - Unpaid orders auto-expire and refund
- Check
SDK
Both SDK guides cover TypeScript and Python side by side — every example shows both. Pick by what you need:Error Handling
SDK Troubleshooting
- Catch
KaleidoError— every SDK exception extends it, andisRetryable()/is_retryable()tells you whether a retry is safe - Enable debug logging for full request and response detail
- Check your runtime: Node.js 18+ / Python 3.10+
General Best Practices
Check Logs First
Verify Network
Keep Updated
Test on Testnet
Still Need Help?
If these troubleshooting steps don’t resolve your issue:Check the FAQ for your surface
Search Documentation
Check GitHub Issues
Contact Support
- Email: support@kaleidoswap.com
- Telegram: https://t.me/kaleidoswap
- GitHub Issues: open one in the repository that matches your setup, for example Desktop App, KaleidoSDK, or KaleidoCLI.