SoulFire LogoSoulFire

CLI Mode

Run SoulFire from a terminal for automation, SSH, or a server without a desktop.

When to use the CLI

If you are not familiar with command-line tools, start with the GUI Mode guide.

Use the CLI for terminal automation, SSH sessions, or systems without a desktop. The GUI supports more features, but the CLI covers the most common tasks.

The CLI distribution runs without a desktop or display. Use the separate GUI client when you want the desktop interface.

Set up the CLI

Install Java 25, then download the CLI .jar from the SoulFire releases. The commands below use SoulFireCLI.jar; replace it with your downloaded filename.

The base command is this:

java -Djava.awt.headless=true -Xmx$RAM -XX:+EnableDynamicAgentLoading -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+UseCompactObjectHeaders -XX:+AlwaysActAsServerClassMachine -XX:+UseNUMA -XX:+UseFastUnorderedTimeStamps -XX:+UseVectorCmov -XX:+UseCriticalJavaThreadPriority -Dsf.flags.v2=true -jar SoulFireCLI.jar

Replace $RAM with the amount of memory for the CLI process. If you omit -Xmx$RAM, Java uses up to 25% of the total system memory. For example, use -Xmx120G to set a 120 GB limit. When the bots run on a remote server, -Xmx1G is usually enough for the local CLI.

Next, choose where the bots will run. For a local server, continue to CLI flags. For a remote dedicated server, set these JVM properties:

PropertyDescription
sf.remoteAddressThe address to connect to
sf.remoteTokenThe token to login with

Put the properties before -jar:

java -Dsf.remoteAddress=domain.com -Dsf.remoteToken=abcdefg -Djava.awt.headless=true -Xmx$RAM -XX:+EnableDynamicAgentLoading -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+UseCompactObjectHeaders -XX:+AlwaysActAsServerClassMachine -XX:+UseNUMA -XX:+UseFastUnorderedTimeStamps -XX:+UseVectorCmov -XX:+UseCriticalJavaThreadPriority -Dsf.flags.v2=true -jar SoulFireCLI.jar

CLI flags

After the CLI connects, it gets the available flags from the server. See CLI Flags for the full list.

Here is an example of how to use them:

java -Xmx$RAM -XX:+EnableDynamicAgentLoading -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+UseCompactObjectHeaders -XX:+AlwaysActAsServerClassMachine -XX:+UseNUMA -XX:+UseFastUnorderedTimeStamps -XX:+UseVectorCmov -XX:+UseCriticalJavaThreadPriority -Dsf.flags.v2=true -jar SoulFireCLI.jar --account-file accounts.txt --account-type OFFLINE --bot-address 127.0.0.1:25565 --bot-protocol-version 26.3 --bot-join-delay-min 1000 --bot-join-delay-max 3000 --start

Replace $RAM with the memory limit for the CLI process. This command imports the accounts in accounts.txt and connects them to 127.0.0.1:25565. It starts each bot after a random delay of one to three seconds.

Terminal flags

Set -Dterminal.jline=true or -Dterminal.jline=false to enable or disable the interactive terminal. The interactive terminal uses JLine, the same library used by Minecraft and Velocity. Set -Dterminal.ansi=true or -Dterminal.ansi=false to enable or disable terminal colors.

Importing data

Use CLI flags to import profiles, accounts, and proxies. You must select an account type when you import accounts. The proxy type is optional. SoulFire treats the file as a universal proxy file when you omit the type.

Run commands

The interactive shell accepts the same commands as GUI mode. See the Commands reference for details.

How is this page?

Last updated on

On this page