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.jarReplace $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:
| Property | Description |
|---|---|
sf.remoteAddress | The address to connect to |
sf.remoteToken | The 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.jarCLI 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 --startReplace $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
