Skip to content

Guides

Command line

Script installs and launches with the arctic CLI.

arctic.exe is a headless companion to the launcher. It uses the same data folder, accounts, settings and downloads as the GUI, so you can script installs and launches, make desktop shortcuts, or run Minecraft on a machine you only reach over SSH.

arctic launch                       # latest release as the active account
arctic launch 1.21.4
arctic launch latest --account Alex --memory 6G --wait
arctic launch --instance fabric     # an instance, with its own version and mods
arctic open --launch 1.20.1         # open the launcher window and start 1.20.1

Download arctic-windows-x64.exe or arctic-linux-x64 from the latest release and put it on your PATH as arctic.

Global options#

OptionMeaning
-p, --profile <NAME>Work in this profile instead of the active one (also ARCTIC_PROFILE)
--data-dir <DIR>Use another data folder (also ARCTIC_DATA_DIR)
--jsonMachine-readable output: one JSON object per line on stdout
-v, --verbosePrint launcher log messages to stderr

Exit codes: 0 success, 1 error, 2 bad usage. launch --wait returns the game's own exit code.

Commands#

arctic versions#

arctic versions [--all] [--installed] [-n <LIMIT>]

Lists releases, newest first. --all includes snapshots and old alpha/beta versions. --installed shows only downloaded versions.

26.3                   2026-09-15  installed  latest
26.2                   2026-06-16

JSON: {"id","type","released","installed","latest"} per version.

arctic install [VERSION]#

Downloads everything a version needs (Java runtime, libraries, assets) without starting it. It uses the same parallel downloader as the launcher. VERSION may be an id, latest (default) or latest-snapshot.

arctic launch [VERSION] [options]#

Downloads whatever is missing, then starts Minecraft.

OptionMeaning
-i, --instance <NAME>Launch an instance (id or name). Custom instances use their own Minecraft version
-a, --account <NAME>Saved account by username, UUID or id (default: the active account)
-m, --memory <SIZE>Max heap, e.g. 4G, 6144M, 6144
--width <PX> / --height <PX>Window size
--fullscreenStart fullscreen
--java <PATH>Use this java(w).exe instead of the managed runtime
-w, --waitStay attached: print the game log, exit with the game's code
--dry-runPrepare everything and print the command line (token redacted)

Without --wait, the game is started detached: it keeps running after arctic exits, and its output goes to profiles\<profile>\logs\game-vanilla.log. Microsoft sessions are refreshed automatically when needed.

arctic instances#

arctic instances list
arctic instances create <NAME> [--version <VERSION>] [--loader <LOADER>] [--loader-version <V>]
arctic instances remove <INSTANCE>

--loader is vanilla (default), fabric, quilt, neoforge or forge. Without --loader-version, the newest stable loader build for that Minecraft version is used. Removing an instance moves its folder (worlds included) to instances/.trash.

arctic instances create "Fabric" --version 26.3 --loader fabric
Created Fabric (Fabric 0.19.5, Minecraft 26.3). Start it with: arctic launch --instance fabric

JSON (list): {"id","name","version","loader","loader_version"} per instance.

arctic mods#

Mods come from Modrinth and are matched to the instance's Minecraft version and loader. Required dependencies are installed too.

arctic mods search <QUERY> --instance <INSTANCE> [-n <LIMIT>]
arctic mods install <SLUG_OR_ID> --instance <INSTANCE>
arctic mods list --instance <INSTANCE>
arctic mods toggle <FILE> on|off --instance <INSTANCE>
arctic mods remove <FILE> --instance <INSTANCE>
arctic mods install sodium-extra --instance fabric
Installed Sodium Extra 0.6.1
Installed Sodium 0.6.13 (dependency)

JSON: search prints {"id","slug","title","author","downloads","description"}, install prints one {"event":"installed",...} per file, list prints {"file","enabled","title","size"}.

arctic accounts#

arctic accounts list
arctic accounts login [--browser]     # device code by default (works over SSH)
arctic accounts use <ACCOUNT>
arctic accounts remove <ACCOUNT>

<ACCOUNT> is a username (case-insensitive), a Minecraft UUID (with or without dashes), or the internal id.

arctic profiles#

arctic profiles list
arctic profiles create <NAME> [--switch]
arctic profiles use <PROFILE>
arctic profiles rename <PROFILE> <NEW_NAME>
arctic profiles remove <PROFILE>        # folder moves to profiles/.trash

Every command works on the active profile unless you pass -p, --profile <NAME> (or set ARCTIC_PROFILE), e.g. arctic -p Speedruns launch 1.16.1.

arctic java <VERSION>#

Prints the Java executable that version uses, installing the runtime if needed. This is handy for running tools against the same JVM.

arctic paths#

Shows the data folder layout: settings, accounts, versions, libraries, assets, runtimes, instances and logs.

arctic update [--beta]#

Checks GitHub Releases for a newer launcher. It only checks; installing happens in the GUI.

arctic open [options]#

Starts the launcher window, detached. Options are passed through to the GUI:

OptionMeaning
--launch <VERSION>Start that version as soon as the version list loads
--account <NAME>Select this account first
--tab <TAB>play, accounts, instances, logs, settings, about
--no-introSkip the intro animation
--profile <NAME>Open in this profile

The launcher exe is looked up next to arctic.exe (as arctic-launcher.exe or Arctic Launcher.exe) or via ARCTIC_LAUNCHER_EXE.

GUI flags#

The same flags work on the launcher itself, which is useful for desktop shortcuts:

"Arctic Launcher.exe" --launch 1.21.4 --account Steve --profile Speedruns --no-intro

JSON output#

With --json, every line on stdout is one JSON object. Long operations emit progress events:

{"event":"progress","stage":"Downloading game files","files_done":812,"files_total":5634,"bytes_done":201326592,"bytes_total":695500800}
{"event":"launched","version":"26.3","account":"Steve","pid":12345,"log":"C:\\...\\logs\\game-vanilla.log"}

With launch --wait --json you also get the parsed game output and the exit:

{"event":"log","level":"info","text":"[Render thread/INFO] Setting user: Steve"}
{"event":"window_ready"}
{"event":"exited","code":0}

Errors are reported as {"event":"error","message":"…"} with exit code 1.

Edit this page on GitHub