Your pool needs its own Bitcoin wallet. The agent keeps this key on your machine only — kray.space never sees it. The daemon uses it to sign swaps 24/7, so a dedicated wallet (not your everyday one) is strongly recommended.
✨ Generate new
Creates a fresh 24-word phrase. Recommended — clean, dedicated pool wallet.
📥 Import phrase
Use an existing 12 or 24-word recovery phrase you already control.
⚠️ If this phrase is your everyday wallet, your personal funds will share the pool address and the key stays hot while the daemon runs. A dedicated phrase is safer.
This password encrypts the wallet file on disk (AES-256-GCM). You'll type it every time you start the daemon.
🔑 Write these words down on paper, in order. This is the ONLY way to recover the pool funds if you lose the password or this machine. They will never be shown again.
2 · Pool configuration
This defines how your pool appears on the kray.space swap. The owner address is your personal wallet (KrayWallet) — it signs management actions only (fee, pause, pairs) and never holds pool funds. It is NOT the pool wallet from step 1: funds and swap fees stay at the pool address, always yours via the 24 words.
Static pool (BTC + 1 rune)
Isolated market with a static price rule: the price is always the on-chain ratio (real BTC ÷ rune balance at the address — anyone can audit it). The AMM (x·y=k) moves it automatically on every swap; you cannot set or edit a price — only change deposits. Simplest, ready in one step. No price peg available.
Stable pool (BTC + 1 rune, pegged)
One rune pegged to an asset (USDT, USDC, USD, BRL, CNY, EUR…). Oracle mid every 10s — fixed price, zero AMM slippage (like a bank desk). You also choose optional bank spread, max swap size, and pool fee (plus a small Kray service fee in sats per swap). If the daemon stops for >60s, the pool pauses.
Multi-rune
One shared BTC treasury serving several rune markets at the same address (BTC is split across pairs). One daemon, one funding, N markets. Best for liquidity operators running many pairs. An optional Price peg oracle can glue a pair to USD/USDT — but it adjusts virtual reserves on the AMM curve, so swaps still have slippage. Want ONE rune pegged at a fixed price with zero slippage? Pick the Stable pool instead.
Recommended on Stable: cap size so bots need many txs (each pays your fee + Kray 546 sats + miner).
Parity = price. The pool always quotes 1 rune = the amount of the asset you set here, converted to sats by your daemon's oracle (median of CoinGecko, Binance, Coinbase, Kraken). There is no other price setting — deposits do NOT set the price on a stable pool.
Not automatic. Leave 0 to quote at oracle mid (same as before). Set e.g. 50 for ±0.50%: BUY slightly above mid, SELL slightly below. Cap 500. Does not add AMM curve slippage. Pool fee + Kray 546-sat service fee stay separate.
Set the parity above, then preview what your pool would quote right now.
3 · Sign & register
To prove you own the owner address, sign the registration message below with your KrayWallet. One click if the extension is installed — kray.space then registers your pool.
…
4 · Fund the pool
Send liquidity to the pool address. The pool goes live on the swap once it holds both sides of the market: BTC and the rune.
…
₿
Send BTC — the sats side of the pool. This is what buyers of the rune receive quotes against.
ᚱ
Send the rune — your registered rune. Use your KrayWallet "Send" on the rune, to this address.
⚖️
The deposit ratio IS the price — there is no price setting anywhere. Opening price = BTC sats ÷ rune amount you deposit at the address. After that, only swaps (x·y=k) and your own deposits/withdrawals move it.
⏱️
Wait for 1 confirmation. You can continue now and fund later — the pool stays hidden until funded.
₿
Send BTC — this pays out buyers who SELL the rune to your pool.
ᚱ
Send the rune — your registered rune. This is the stock buyers purchase at the pegged price.
🪙
Any proportion works — the deposit ratio does NOT set the price. On a stable pool the price is your parity converted to sats by the oracle. Deposits only set how much can be traded before the pool runs dry on one side.
⏱️
Wait for 1 confirmation. The pool starts quoting when the daemon is online (first oracle tick) and the address is funded.
₿
Send BTC first — this is the shared treasury for all your rune markets.
ᚱ
Send a rune to this same address (any rune you want to offer).
🔍
After step 5: open the dashboard → Scan pool address → Activate the pair with your starting price. Runes never trade until you activate them.
⚓
Optional: enable Price peg in the dashboard to glue the price to USD, USDT, etc.
🧮 Deposit calculator — nothing is saved or set here
This is ONLY a calculator. It does not register or configure any price on kray.space. Your pool's opening price will be exactly the BTC ÷ rune ratio you actually deposit at the pool address. Fill any two fields — the third is computed — then send that exact deposit.
Enter a target price and one amount to see the exact deposit.
5 · Start the daemon
The daemon connects to kray.space and verifies + signs each swap locally against on-chain data. Keep this terminal window open — it hosts the daemon.
Multi-rune pool? After the daemon starts, go to the dashboard → Trading pairs → Scan → Activate each rune with your starting price. Then you're live on /swap.
Portfolio
all pools
Accounting across every pool on this machine — Static, Stable and Multi. Click a row to open that pool’s desk.
Loading…
Loading portfolio…
🎮 Your pool quest
Complete each step — the checklist updates as you go.
Pool
—
Fee
—
Reserves live
—
Price live
—
Pool address
—
Owner
—
Accounting
this pool
Fees, volume, flow and desk knobs for the active pool. Same controls for Static, Stable and Multi. Updates every minute.
—
Fees earned (BTC)
—
Fees earned (rune)
—
Total volume
—
Volume 24h
—
Swaps 24h
—
Total swaps
—
BUY volume
—
SELL volume
—
Rejected
—
Avg trade size
—
Volume — last 14 days
Loading…
Ledger
history
Every swap request for this pool — amounts, pool fee, status, wallet and on-chain links. Rejected rows show why the daemon refused.
Loading activity…
Daemon
Start the signer with your wallet password. Stop it any time — the pool shows offline on the swap while stopped.
Live logs
Daemon not running.
Pool settings
…
Your owner desk: fee, size limits, and (on Stable) bank spread. Sign once with KrayWallet — live on kray.space and picked up by the daemon on the next swap (no restart needed for these knobs). Pause hides the pool from /swap; funds stay on-chain.
Taken from each swap. Separate from Bitcoin miner fees and the fixed Kray 546-sat service fee.
Caps how big one trade can be. Smaller limit = more txs (and more fees) for anyone trying to arb.
You set this.0 = quote at oracle mid. 50 = ±0.50% (BUY above / SELL below mid). Optional desk margin vs oracle lag — still zero AMM curve slippage.
Danger zone
Delete pool removes it permanently from the kray.space swap router and from this agent. Your funds are NOT touched — they stay on-chain at the pool address, recoverable with the recovery phrase you backed up at setup (a copy of the encrypted wallet is also archived locally). This cannot be undone; to trade again you'd register a new pool.
Trading pairs
Each pair is a rune market inside your multi-rune pool. Runes sent to the pool address never trade automatically — scan detects them, and only your owner signature activates each one.
Detected at the pool address
Scans the pool address on-chain and lists every rune sitting there. Activate the ones you want to offer, with the starting price you choose.
Add pair manually (advanced)
Price peg · oracle
OFF
Glue a pair's price to a real-world asset. Your daemon polls CoinGecko, Binance, Coinbase and Kraken, takes the median (outliers discarded — no single source can lie), and keeps the pool price updated automatically. Example: peg 1 rune = 0.01 USD and your rune trades like a dollar cent, full time, no room for arbitrage.
Pick an asset and amount, then preview the live price.
Funding & price
Top up liquidity any time by sending BTC or runes to the pool address. Price is not a setting — it's the ratio of the reserves (BTC ÷ rune). To push the price up, add BTC; to push it down, add rune. Every swap also moves it, and arbitrage keeps it near market.
Top up liquidity any time by sending BTC or the rune to the pool address — any proportion. On a stable pool the price is the oracle peg, never the reserve ratio: deposits only set how much can be traded before one side runs dry. BTC pays out sellers; the rune stocks buyers.
🧮 Price calculator — what to deposit (nothing is saved)
Static pool: the price cannot be edited — only your deposits move it. This calculator uses your live on-chain reserves to show exactly what to send to reach a target price. Typing here changes nothing on kray.space.
Waiting for live reserves…
Multi-rune pool: each pair's price comes from its virtual BTC allocation — adjust it per pair on /swap (owner panel), not by deposit ratio.
…
Withdrawing liquidity
Your pool wallet is a standard BIP-86 address — the recovery phrase from setup works in any wallet (KrayWallet, Xverse, etc.). To withdraw, import the phrase elsewhere and send normally. We deliberately do not add a withdraw button here — the agent only signs valid swaps, never arbitrary sends, so malware or an LLM agent on your machine cannot drain the pool through this dashboard. Pause the pool on /swap before moving large amounts.