Parameters

my_pubkey

(required)

Your wallet pubkey address.

grpc_url

(required)

Your gRPC url.

grpc_token

default: None

Your gRPC token, if required by your provider.

grpc_type

default: yellowstone

Supports both yellowstone and thorstream gRPC.

grpc_light

default: false

Some gRPC providers block any subscription stream. Setting this to true should resolve this issue. Only enables it you encounter an error message like this:

[2025-07-29T18:57:30.772Z ERROR] Geyser stream error: Status { code: InvalidArgument, message: "failed to create filter: Subscribe on full stream with any is not allowed, at least one filter required", source: None }

copy_pubkeys

default: []

Addresses of other wallets you want to copy. If empty, copy_all must be enabled.

copy_all

default: false

Copy (or monitor) every wallets.

smb_config

default: ./config.toml

Full path to the original smb-onchain configuration file.

smb_onchain_binary

default: ./smb-onchain

Full path to the smb-onchain binary file.


[sessions]

blacklisted_mints

default: []

A list of mint public key addresses on which sessions should never be started.

timeout

default: 5

Timeout in seconds after which this tool should stop copying a session. A higher value means the tool will continue sending transactions longer after the copied wallet has stopped. A value that’s too low may cause frequent "start/stop" session spam.

copy_jito_no_failure_only

default: true

When this option is enabled and Jito sending is active in your SMB config, the tool will only copy sessions where no_failure_mode = true. This is because Jito transactions with no_failure_mode = false only include successful instructions, making it very difficult for the tool to reliably track sessions without hitting timeouts.

fees_history_size

default: 40

Maximum number of past transactions to consider for Jito tips (or priority fees) calculation. Only used when the SMB tip strategy (or CU price strategy) is set to File. See here for more info.


[sending]

process_delay

default: 400

Same as SMB configuration process_delay for [[routing.mint_config_list]] .

The bot will send out a tx, wait for process_delay ms, then send again and repeat [...]

default_lookup_tables

default: ["4sKLJ1Qoudh8PJyqBeuKocYdsZvxTcRShUt9aKqwhgvC"]

Additional Address Lookup Tables (ALT, LUT, or ALUT) to include in each session. Even though this tool copies the ALTs used by other users, you can specify extra ALTs here.

The default one is the same as recommended by SMB.

compute_units_limit

default: { source = "Local" }

Compute units are set for each sent transaction using the following options:

  • source :

    • Local : uses the parameter defined in your SMB configuration file [bot] compute_unit_limit.

    • Copy : dynamically uses the same as the copied wallet.

  • percentage : if you want 20% more compute units than the copied wallet, set this to 120

    • { source = "Copy", percentage = 120 }

spam_compute_unit_price

default: { source = "Local" }

Available parameters are:

  • source :

    • Local : uses the parameter defined in your SMB configuration file [spam] compute_unit_price.

    • Copy : automatically and dynamically adjusted based on copied wallets and fees_history_size. A strategy parameter (see detailed below) can be used to adjust your strategy.

    • Helius : uses Helius Priority Fee API (see more info below helius_fee_api).

  • strategy: used when source = "Copy" . Defaults to Random. Can be:

    • Random, Linear, Exponential or ExponentialRandom : works the same as in SMB.

    • ExponentialRandomReverse : works the same as ExponentialRandom but biases numbers toward the higher end of the range instead of the lower end.

  • count: number of transactions to send at once. Defaults to 1.

  • percentage: adjusts the final amount. Default is 100, which effectively does nothing.

  • minimum_lamports: minimum CU price in lamports. These are not compute unit prices. Defaults to 0. They will be used to compute priority fees (compute unit price x compute units requested) as shown in Solscan:

    2794 lamports in this case

  • maximum_lamports: maximum CU price in lamports. These are not compute unit prices. Defaults to 1_000_000 , which is 0.001 SOL priority fees.

Here are some examples:

copy-config.toml
[...]

[sending]
spam_compute_unit_price = { source = "Copy" }
copy-config.toml
[...]

[sending]
spam_compute_unit_price = { source = "Copy", strategy = "Linear" }  # count defaults to 1
copy-config.toml
[...]

[sending]
spam_compute_unit_price = { source = "Local" } # uses your SMB configuration

jito_tip

default: { source = "Local" }

Same as spam_compute_unit_price, overrides [jito] tip_config.

Parameter source can be Local, Copy or Jito. When set to Jito, it uses the Jito Tip Floor API (see configuration details below jito_tip_api).

vendors_tip

default: { source = "Local" }

Same as spam_compute_unit_price, overrides each [sending_venders] tip_amount SMB configuration.

Parameter source can only be Local , Copy or Temporal.

vendors_compute_unit_price

default: { source = "Local" }

Same as Parameters, overrides each [sending_venders] compute_unit_price SMB configuration.

Parameter source can be Local, Copy or Helius. When set to Helius, it uses the Helius Priority Fee API (see configuration details below helius_fee_api).

jito_tip_api

default: None

  • update_interval : in seconds. Defaults to 15.

  • percentile : the percentile range to use. Can be a number (0-100) or ema50. Numbers are interpolated, so any value between 0 and 100 is valid. Defaults to { from = "ema50", to = "ema50" }.

Example:

copy-config.toml
[sending]
jito_tip = { source = "Jito" }

[sending.jito_tip_api]
percentile = { from = "ema50", to = 75 }

temporal_tip_api

default: None

  • update_interval : in seconds. Defaults to 15.

  • percentile : the percentile range to use. Must be a number in range [0, 100]. Numbers are interpolated, so any value between 0 and 100 is valid. Defaults to { from = 25, to = 50 }.

Example:

copy-config.toml
[sending]
vendors_tip = { source = "Temporal" }

[sending.temporal_tip_api]
percentile = { from = 25, to = 50 }

helius_fee_api

default: None

  • api_keys : an array of Helius API keys. Requests will rotate between these to avoid rate limit, if needed.

  • update_interval : in seconds. Default to 15.

  • percentile : the percentile range to use, derived from Helius "low/medium/high/veryHigh" levels. Numbers are interpolated, so any value between 0 and 100 is valid. Default to { from = 50, to = 50} , which is equivalent to Helius medium level.

  • lookback_slots : adjust the number of slots analyzed for fee estimation. See Helius documentation. Default to 150.

  • account_keys : see Helius documentation. Default to SMB and NotArb programs address.

The account keys method provides a simpler alternative to transaction serialization when you need quick fee estimates or want to estimate fees before constructing the complete transaction.

Example:

copy-config.ctoml
[sending]
spam_compute_unit_price = { source = "Helius" }

[sending.helius_fee_api]
api_keys = ["xxx", "yyy"]
percentile = { from = 45, to = 55 }

[automation]

enabled

default: false

Enable or disable automation in run mode.

max_concurrent

default: 1

Maximum number of wallets copied concurrently.

blacklisted_pubkeys

default: []

List of blacklisted wallets that will never trigger automation.


[[automation.filters.start]]

Start filters are checked against the statistics of copied wallets.

enabled

(required)

Enable or disable this filter.

lookback_window

(required)

The window size, in seconds, to look back when checking this filter.

interval

default: 1

Interval, in seconds, at which the tool should check if this filter is valid.

min_tx

Minimum number of transactions (successes + fails).

min_successes

Minimum number of successful arbitrages.

min_raw_profit

Minimum raw profit, without accounting fees, in lamports.

min_net_profit

Minimum net profit (raw profit - fees), in lamports.

min_risk_reward

Minimum R/R ratio.

A value of 1.0 means the wallet is profitable (positive PnL).

max_fails

Maximum number of failed transactions.

max_fees

Maximum fees spent (priority fees + 3rd party tips), in lamports.

[[automation.filters.stop]]

Stop filters are checked against your statistics.

enabled

(required)

Enable or disable this filter.

lookback_window

(required)

The window size, in seconds, to look back when checking this filter.

interval

default: 1

Interval, in seconds, at which the tool should check if this filter is valid.

min_tx

Minimum number of transactions (successes + fails).

min_successes

Minimum number of successful arbitrages.

min_raw_profit

Minimum raw profit, without accounting fees, in lamports.

min_net_profit

Minimum net profit (equivalent to PnL), in lamports.

min_risk_reward

Minimum R/R ratio.

A value of 1.0 means you are profitable (positive PnL).

max_loss

Maximum loss allowed (equivalent to PnL), in lamports.

This parameter is expressed as a positive number. For example, if you want to stop as soon as your PnL reaches -0.001 SOL, you should set max_loss = 1_000_000

max_fees

Maximum fees allowed, in lamports.


[misc]

default: 1

Time interval in seconds between showing session stats.

default: 20

Number maximum of wallets to show on the live statistics view.

stop_sol_threshold

default: 0.1

Threshold in SOL (not lamports) at which this tool should stop running. Use this configuration option to stop execution once the balance reaches a minimum floor or to keep some SOL in your wallet instead of emptying it completely on gas.

You can also set it to 0.0 to disable this completly.

log_session_start

default: true

Wheher or not to log sessions start. Log messages look like this:

✨ Starting 1 session with base mints {"So11111111111111111111111111111111111111112"}
[...]

log_session_end

default: true

Wheher or not to log sessions end. Log messages look like this:

[1] Final group statistics:
[1]  Wallet |        Session | Duration | Arbitrages (mean | norm.) |       ...vs yours |          PnL |  ...vs yours 
[1] --------+----------------+----------+---------------------------+-------------------+--------------+--------------
[1]  AzD814 | (S--) 7f0b1a52 |      32s |         1/173 (2.4 | 0.8) | 0/139 (1.7 | 0.6) | -0.003099304 | -0.003099980 
[1]         |        (total) |      32s |                     1/173 |             0/139 | -0.003099304 | -0.003099980 

stats_timespan

default: 5

Defines the time window in minutes used to compute windowed statistics such as Reward/Risk multiplier, raw profit, and fees in monitor mode. See Live statisticsfor more details.

Last updated