> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bloodydash.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

The **Solmm Module** (Solana Market-Maker) allows you to perform market-making, ladder actions and volume-making on a token. Instead of a single swap, the bot runs a continuous loop of buys and sells ("ticks") across your wallets, following an mcap ladder that you define in the preset.

Two modes are available:

| Mode                          | Description                                                                                                          |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [**Default**](/solmm/default) | Requires an existing pool / token address. Optionally performs an initial buy (snipe) and then starts market-making. |
| [**Watch**](/solmm/watch)     | Waits for a pool deploy from a specific dev wallet (like snipe), snipes the launch and then starts market-making.    |

<Note>
  The **WALLET** field is NOT used in solmm tasks. All buys / sells are distributed between the wallets defined in the **wallet cluster** (see below).
</Note>

### How it works

1. The bot enters the first phase whose `start_mcap_usd` matches the current mcap.
2. Every `tick_ms` it picks **buy** or **sell** based on `buy_bias_percentage` and executes a trade within `min_trade_size` / `max_trade_size` limits.
3. When `end_mcap_usd` of the phase is reached -> the bot moves to the next phase.
4. After the last phase end mcap is reached -> behavior is controlled by `after_last_phase`:
   * `stop` = exit MM
   * `rewind` = reverse back through the ladder

<Tip>
  Think about **phases** as strategies -> each rung of the staircase can have its own bias, trade sizes, tick rate, budget and duration.
</Tip>

### Preset settings

All configuration is focused inside the preset. **PLEASE PASTE \[\[solana.mm.phases]] SECTION MANUALLY IN PRESET!**

```toml theme={null}
# settings specific to solmm module
[solana.mm]
# base cadence between MM ticks in milliseconds (jittered)
# 0 = default 2000
tick_ms = 3000
# max in-flight swaps across all MM wallets
# 0 = default 4
max_concurrent = 4
# hard spend cap on buys
# 0 = unlimited
max_budget = 0.1
# stop MM once cumulative external (non-own) buy volume on the pool reaches this amount (stable units)
# 0 = unlimited
external_buy_limit = 1000.0
# MM run duration limit in milliseconds
# 0 = until task stop
duration_ms = 26000
# percentage of external buy inflow to sell (0..100)
# 0 = farm off
farm_percentage = 60.0
# what to do after the last phase end mcap is reached:
# stop = exit MM
# rewind = reverse through the ladder
after_last_phase = 'stop'

# required. wallets used for MM buys / sells
# all MM wallets come from this cluster (solmm does not use the task WALLET column)
[solana.mm.wallet_cluster]
# enable wallet clustering (distribute buys / sells between different wallets)
enabled = true
# randomize buy amount for each wallet
# if disabled the bot will use = buy amount / number of wallets
randomize_buy_amount = false
# the list of wallet names to use for clustering
# if no wallets are specified, this feature won't work'
wallet_names = ['1', '2', '3']

# optional one-shot buy before MM starts
# default mode: buy the existing pool immediately
# watch mode: buy as soon as the watched token is deployed
[solana.mm.snipe]
# enable the snipe buy before MM starts
enabled = true
# total buy amount in stable units, split across snipe cluster wallets
buy_amount = '0.1'

# required when snipe is enabled. wallets that execute the snipe buy
# independent from solana.mm.wallet_cluster
[solana.mm.snipe.wallet_cluster]
# enable wallet clustering (distribute buys / sells between different wallets)
enabled = true
# randomize buy amount for each wallet
# if disabled the bot will use = buy amount / number of wallets
randomize_buy_amount = true
# the list of wallet names to use for clustering
# if no wallets are specified, this feature won't work'
wallet_names = ['1', '2']

# mcap ladder phases
[[solana.mm.phases]]
# enter phase when mcap crosses this (USD)
start_mcap_usd = 0.0
# climb target for this phase (USD)
end_mcap_usd = 10000.0
# probability a tick chooses buy vs sell (0..100)
# e.g. 60 = 60% buys
buy_bias_percentage = 70.0
# minimum trade size for this phase
min_trade_size = 0.05
# maximum trade size for this phase
max_trade_size = 0.1
# minimum percentage of tokens to sell on a sell tick (0..100)
sell_percentage_min = 10.0
# maximum percentage of tokens to sell on a sell tick (0..100)
sell_percentage_max = 40.0
# optional per-phase tick override
# 0 = use global tick_ms
tick_ms = 0
# optional per-phase buy budget override
# 0 = use global max_budget
max_budget = 0.0
# optional per-phase duration override in milliseconds
# 0 = no per-phase limit
duration_ms = 0
```

<Note>
  To add more phases, simply add more `[[solana.mm.phases]]` blocks -> phases are processed in order of `start_mcap_usd`.
</Note>

### Zip-out

Simply find MM section in bot main menu, zip-out action is right there!

**Zip-out** action = emergency exit:

1. Stops the task
2. Sells **100%** on every MM wallet + snipe wallets
