1. Preparing
Review the requirements
Choose in what way you will run the Inference Node
2. Installing the Inference Node
Fortytwo App
Fortytwo Container
Fortytwo CLI
- macOS
- Windows
- Linux (Ubuntu/Debian)
3. Operating Your Node
The node will remain fully operational until it is stopped by the user, the application is closed by the user or the system restarts. You can minimize or close the application window, switch to other applications – the node will continue running in the background and will be available in system tray.Updating Fortytwo App
Fortytwo App updates automatically. Sometimes the user might be asked to restart the application to install the most recent updates.If you face issues with the updates, you can manually check the current version of።‖ Fortytwo App on the Changelog page, and then manually download and reinstall the app using the current version links:You can find your current app version in the About window.macOS: Updating from Versions 0.2.1 and Earlier
Unwrap for details
Unwrap for details
- You can safely enter your password and click “Always Allow” to avoid future prompts
- Or you can delete the previous data and restore your profile in the new version as described below:
Steps for macOS users to reset the app data
Steps for macOS users to reset the app data
Export your private key
- Right click on the Fortytwo App icon in the Menu Bar.
- Select
Account>Export Private Key. - Select destination and confirm.
Delete the old app
Delete the files left from the old app
~/Fortytwo
/users/{username}/Fortytwo
Delete the old record
security delete-generic-password -s "Fortytwo Safe Storage" || true
Install the latest version of the Fortytwo App
Launch the App
hardware
Nvidia graphic card(s) on Windows or Linux
CPU on x86_64 architecture
software
Installed NVIDIA Container Toolkit
Installed Docker
Installed Git
Get the repository
Fortytwo Inference Node Setup
Cloning the Repository from GitHub
Cloning the Repository from GitHub
- Windows
- Linux (Ubuntu/Debian)
Install Git .
cd command, or run the following command to continue installation in the default location in your home directory:New-Item -Path "$HOME\FortytwoContainer" -ItemType Directory -Force; Set-Location "$HOME\FortytwoContainer"
git clone https://github.com/Fortytwo-Network/fortytwo-inference-node-setup
cd fortytwo-inference-node-setup
cd command, or run the following command to continue installation in the default location in your home directory:mkdir -p ~/FortytwoContainer && cd ~/FortytwoContainer
git clone https://github.com/Fortytwo-Network/fortytwo-inference-node-setup
cd fortytwo-inference-node-setup
(Windows only) Download utils
FortytwoUtilsWindows.exe into the folder.$UTILS_VERSION = (Invoke-RestMethod "https://download.swarminference.io/utilities/latest").Trim()
Start-BitsTransfer -Source "https://download.swarminference.io/utilities/v$UTILS_VERSION/FortytwoUtilsWindows.exe" -Destination FortytwoUtilsWindows.exe
Get the private key of your Web3 account
For example: if you intend to run 8 nodes on 8×GPU rig at the same time, you will need 8 private keys.
Wallet and Account Management
A. Create a new Web3 account with an activation code
A. Create a new Web3 account with an activation code
- Create a new account
- Windows
- Linux (Ubuntu/Debian)
.\FortytwoUtilsWindows.exe --create-wallet <PATH_WHERE_TO_SAVE_YOUR_KEY> --drop-code <ACTIVATION_CODE>
make get-drop PRIVATE_KEY_PATH=$PATH_WHERE_TO_SAVE_YOUR_KEY CODE=$ACTIVATION_CODE
$PATH_WHERE_TO_SAVE_YOUR_KEY — The path where the file with your private key will be generated.- Make sure that the defined path exists.
- If
.account_private_keyalready exists in this locaiton, it will be ovewritten.
$ACTIVATION_CODE — Your activation code. It can only be used once.When executed, a new private key named .account_private_key will be generated at the defined path.- Get your private key address.
.account_private_key file is a hidden file by default. Reveal it. Text inside it is your private key.Platform-specific notes on how to reveal hidden files
Platform-specific notes on how to reveal hidden files
- macOS
- Windows
- Open the folder in Finder.
- Press
Command + Shift + .to toggle hidden file visibility.
- Open File Explorer.
- Select the View tab from the top menu.
- Click Show → Hidden items.
- Hidden files and folders (including
.account_private_key) will now be visible.
B. Connect the existing Web3 account with an activation code
B. Connect the existing Web3 account with an activation code
- Connect your wallet to the program
- Windows
- Linux (Ubuntu/Debian)
.\FortytwoUtilsWindows.exe --drop-wallet <PUBLIC_WALLET_ADDRESS> --drop-code <ACTIVATION_CODE>
make get-drop WALLET=$PUBLIC_WALLET_ADDRESS CODE=$ACTIVATION_CODE
$PUBLIC_WALLET_ADDRESS — Your Web3 EVM-compatible account’s public address.$ACTIVATION_CODE — Your activation code. It can be used only once.This command will add the wallet you defined to the gas compensation program.- Get your private key address.
C. Migrate to Fortytwo Container from an already existing node
C. Migrate to Fortytwo Container from an already existing node
D. Fund an existing Web3 account on your own
D. Fund an existing Web3 account on your own
- One node per machine
- Multi-node setup on a single machine
Setup the `.env` file
.env file from the .env.example reference file and update the environment variables:cp .env.example .env
.env file and specify unique credentials for the node:FT_ACCOUNT_PRIVATE_KEY— Unique Web3 account private keyFT_CAPSULE_LLM_HF_REPOandFT_CAPSULE_LLM_HF_MODEL_NAME— Unique model credentials
Unwrap for .env setup example
Unwrap for .env setup example
# protocol
FT_ACCOUNT_PRIVATE_KEY=$YOUR-UNIQUE-PRIVATE-KEY
FT_NODE_LISTENER_PORT=42042
# capsule
FT_CAPSULE_HTTP_HOST="0.0.0.0"
FT_CAPSULE_HTTP_PORT=42442
FT_CAPSULE_LLM_HF_REPO=Fortytwo-Network/Strand-Rust-Coder-14B-v1-GGUF
FT_CAPSULE_LLM_HF_MODEL_NAME=Fortytwo_Strand-Rust-Coder-14B-v1-Q4_K_M.gguf
INPUT_MODEL_CACHE=./model_cache
Pre-download the model
.env file.Use this command to download a model:
- Windows
- Linux (Ubuntu/Debian)
.\FortytwoUtilsWindows.exe --hf-repo <LLM_HF_REPO> --hf-model-name <LLM_HF_MODEL_NAME> --model-cache model_cache
.\FortytwoUtilsWindows.exe --hf-repo Fortytwo-Network/Strand-Rust-Coder-14B-v1-GGUF --hf-model-name Fortytwo_Strand-Rust-Coder-14B-v1-Q4_K_M.gguf --model-cache model_cache
make download-llm LLM_HF_REPO=$REPO_ID LLM_HF_MODEL_NAME=$MODEL_ID
make download-llm LLM_HF_REPO=Fortytwo-Network/Strand-Rust-Coder-14B-v1-GGUF LLM_HF_MODEL_NAME=Fortytwo_Strand-Rust-Coder-14B-v1-Q4_K_M.gguf
Setup the `.env` files
.env file. Since we want to run 3 nodes, we will be creating 3 environment files from the .env.example reference file and update the environment variables:cp .env.example .env.strand-rust-coder
cp .env.example .env.vibethinker
cp .env.example .env.qwen
.env file and specify the unique credentials for each node:FT_ACCOUNT_PRIVATE_KEY— Unique Web3 account private keyFT_NODE_LISTENER_PORT— Unique portFT_CAPSULE_LLM_HF_REPOandFT_CAPSULE_LLM_HF_MODEL_NAME— Unique model credentials
.env.strand-rust-coder
.env.strand-rust-coder
# protocol
FT_ACCOUNT_PRIVATE_KEY=$YOUR-FIRST-UNIQUE-PRIVATE-KEY
FT_NODE_LISTENER_PORT=42042
# capsule
FT_CAPSULE_HTTP_HOST="0.0.0.0"
FT_CAPSULE_HTTP_PORT=42442
FT_CAPSULE_LLM_HF_REPO=Fortytwo-Network/Strand-Rust-Coder-14B-v1-GGUF
FT_CAPSULE_LLM_HF_MODEL_NAME=Fortytwo_Strand-Rust-Coder-14B-v1-Q4_K_M.gguf
INPUT_MODEL_CACHE=./model_cache
.env.vibethinker
.env.vibethinker
# protocol
FT_ACCOUNT_PRIVATE_KEY=$YOUR-SECOND-UNIQUE-PRIVATE-KEY
FT_NODE_LISTENER_PORT=42043
# capsule
FT_CAPSULE_HTTP_HOST="0.0.0.0"
FT_CAPSULE_HTTP_PORT=42442
FT_CAPSULE_LLM_HF_REPO=mradermacher/VibeThinker-1.5B-GGUF
FT_CAPSULE_LLM_HF_MODEL_NAME=VibeThinker-1.5B.Q4_K_M.gguf
INPUT_MODEL_CACHE=./model_cache
.env.qwen
.env.qwen
# protocol
FT_ACCOUNT_PRIVATE_KEY=$YOUR-THIRD-UNIQUE-PRIVATE-KEY
FT_NODE_LISTENER_PORT=42044
# capsule
FT_CAPSULE_HTTP_HOST="0.0.0.0"
FT_CAPSULE_HTTP_PORT=42442
FT_CAPSULE_LLM_HF_REPO=unsloth/Qwen3-1.7B-GGUF
FT_CAPSULE_LLM_HF_MODEL_NAME=Qwen3-1.7B-Q4_K_M.gguf
INPUT_MODEL_CACHE=./model_cache
Pre-download models
.env file.Use this command to download a model:
- Windows
- Linux (Ubuntu/Debian)
.\FortytwoUtilsWindows.exe --hf-repo <LLM_HF_REPO> --hf-model-name <LLM_HF_MODEL_NAME> --model-cache model_cache
.\FortytwoUtilsWindows.exe --hf-repo Fortytwo-Network/Strand-Rust-Coder-14B-v1-GGUF --hf-model-name Fortytwo_Strand-Rust-Coder-14B-v1-Q4_K_M.gguf --model-cache model_cache
.\FortytwoUtilsWindows.exe --hf-repo mradermacher/VibeThinker-1.5B-GGUF --hf-model-name VibeThinker-1.5B.Q4_K_M.gguf --model-cache model_cache
.\FortytwoUtilsWindows.exe --hf-repo unsloth/Qwen3-1.7B-GGUF --hf-model-name Qwen3-1.7B-Q4_K_M.gguf --model-cache model_cache
make download-llm LLM_HF_REPO=$REPO_ID LLM_HF_MODEL_NAME=$MODEL_ID
make download-llm LLM_HF_REPO=Fortytwo-Network/Strand-Rust-Coder-14B-v1-GGUF LLM_HF_MODEL_NAME=Fortytwo_Strand-Rust-Coder-14B-v1-Q4_K_M.gguf
make download-llm LLM_HF_REPO=mradermacher/VibeThinker-1.5B-GGUF LLM_HF_MODEL_NAME=VibeThinker-1.5B.Q4_K_M.gguf
make download-llm LLM_HF_REPO=unsloth/Qwen3-1.7B-GGUF LLM_HF_MODEL_NAME=Qwen3-1.7B-Q4_K_M.gguf
Create Docker Compose files
docker-compose.yml reference:cp docker-compose.yml docker-compose-strand-rust-coder.yml
cp docker-compose.yml docker-compose-vibethinker.yml
cp docker-compose.yml docker-compose-qwen.yml
Plan the GPU usage
nvidia-smi
- For Fortytwo_Strand-Rust-Coder — Use GPU #1 and #2
- For VibeThinker — Use GPU #0
- For Qwen3 — Use GPU #3
GPU order doesn’t matter here.
nvidia-smi output should be as follows:+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.195.03 Driver Version: 570.195.03 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A10G Off | 00000000:00:1B.0 Off | 0 |
| 0% 29C P0 58W / 300W | 0MiB / 23028MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA A10G Off | 00000000:00:1C.0 Off | 0 |
| 0% 28C P0 56W / 300W | 0MiB / 23028MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 2 NVIDIA A10G Off | 00000000:00:1D.0 Off | 0 |
| 0% 28C P0 58W / 300W | 0MiB / 23028MiB | 3% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 3 NVIDIA A10G Off | 00000000:00:1E.0 Off | 0 |
| 0% 28C P0 56W / 300W | 0MiB / 23028MiB | 2% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
Assign GPUs to Each Node
docker-compose-strand-rust-coder.yml
docker-compose-strand-rust-coder.yml
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['1', '2'] # Assign to GPUs 1 and 2
capabilities:
- gpu
docker-compose-vibethinker.yml
docker-compose-vibethinker.yml
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['0'] # Assign to GPU 0
capabilities:
- gpu
docker-compose-qwen.yml
docker-compose-qwen.yml
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['3'] # Assign to GPU 3
capabilities:
- gpu
device_ids: ['all'] will assign all available GPUs for that node.3. Operating Your Node
With Fortytwo Container, you can choose the way you run your node:- One node per machine
- Multi-node setup on a single machine
Launching Fortytwo Container
If restarting your node after relaunching the terminal/OS, don’t forget that the following should be executed from the node repository folder, where your.env and docker-compose.yml are located.Update the repository
git pull command:git pull
(Windows only) Update Utils
$UTILS_VERSION = (Invoke-RestMethod "https://download.swarminference.io/utilities/latest").Trim()
Start-BitsTransfer -Source "https://download.swarminference.io/utilities/v$UTILS_VERSION/FortytwoUtilsWindows.exe" -Destination FortytwoUtilsWindows.exe
Launch Docker
Build the Docker Compose services
docker compose build
Run the services in the background
docker compose up -d
.env file is not pre-downloaded, then your node will download it at startup. In that case Capsule module might report unhealthy status if the download is too big:
docker compose up -d command:
fortytwo-capsule container, then start the fortytwo-protocol container from inside the Docker application.The easiest way to not catch this behavior right now is to pre-download the models from step #5.How to Make Sure it Works?
If everything went successfully, after launch, you can verify that the nodes are running correctly with:docker ps
fortytwo-inference-node-setup process running.If you unwrap it, you can see the logging of the node running successfully with two containers:fortytwo-capsule— Capsule reports on the model loading and performing. Starts first.fortytwo-protocol— Protocol reports on the network. Protocol starts only after Capsule is all set and ready.
Launching Fortytwo Container
If you are restarting your node after relaunching the terminal/OS, don’t forget that the following should be executed from the node repository folder, where your.env and custom docker compose .yml files are located.Update the repository
git pull command:git pull
(Windows only) Update Utils
$UTILS_VERSION = (Invoke-RestMethod "https://download.swarminference.io/utilities/latest").Trim()
Start-BitsTransfer -Source "https://download.swarminference.io/utilities/v$UTILS_VERSION/FortytwoUtilsWindows.exe" -Destination FortytwoUtilsWindows.exe
Launch Docker
Build the Docker Compose services
docker compose build
Run the services in the background
docker compose -f docker-compose-strand-rust-coder.yml --env-file .env.strand-rust-coder -p strand-rust-coder up -d
docker compose -f docker-compose-vibethinker.yml --env-file .env.vibethinker -p vibethinker up -d
docker compose -f docker-compose-qwen.yml --env-file .env.qwen -p qwen up -d
.env file is not pre-downloaded, then your node will download it at startup. In that case Capsule module might report unhealthy status if the download is too big:
docker compose up -d command:
fortytwo-capsule container, then start the fortytwo-protocol container from inside the Docker application.The easiest way to not catch this behavior right now is to pre-download the models from step #5.How to Make Sure it Works?
After launch, you can verify that the nodes are running correctly with this command:docker ps
strand-rust-coder, vibethinker, and qwen processes running.If you unwrap each one of them, you can see the logging of the node running successfully with two containers:fortytwo-capsule— Capsule reports on the model loading and performance. Starts first.fortytwo-protocol— Protocol reports on the network. Protocol starts only after Capsule is set and ready.
Updating Fortytwo Container
The node components update automatically every time it is launched and while operational.However, you need to manually update the repository to get the latest environment updates.At every start, execture the following command.git pull
⊡ Fortytwo Container update available, stop your node, run the git pull command, and then restart the node. These commands will let you compare your current version to remote version:git fetch
git log -1 origin/main --format="Remote: %h %ci"
git log -1 --format="Local: %h %ci"
$UTILS_VERSION = (Invoke-RestMethod "https://download.swarminference.io/utilities/latest").Trim()
Start-BitsTransfer -Source "https://download.swarminference.io/utilities/v$UTILS_VERSION/FortytwoUtilsWindows.exe" -Destination FortytwoUtilsWindows.exe
Stopping Fortytwo Container
To stop a running container, either stop it from the Docker interface, or execute the following command from the folder where thedocker-compose.yml is located:docker compose down
docker-compose-name.yml with that process’s name.docker compose -f docker-compose-name.yml down
- macOS
- Windows
- Linux (Ubuntu/Debian)
cd command, or run the following command to continue installation in the default location in your home directory:mkdir -p ~/FortytwoCLI && cd ~/FortytwoCLI
curl -L -o fortytwo-console-app.zip https://github.com/Fortytwo-Network/fortytwo-console-app/archive/refs/heads/main.zip
unzip fortytwo-console-app.zip -d . && rm fortytwo-console-app.zip
cd fortytwo-console-app-main
chmod +x macos.sh && ./macos.sh
cd command, or run the following command to continue installation in the default location in your home directory:New-Item -Path "$HOME\FortytwoCLI" -ItemType Directory -Force; Set-Location "$HOME\FortytwoCLI"
Invoke-WebRequest -Uri "https://github.com/Fortytwo-Network/fortytwo-console-app/archive/refs/heads/main.zip" -OutFile "fortytwo-console-app.zip"
Expand-Archive -Path fortytwo-console-app.zip -DestinationPath . -Force; Remove-Item -Path fortytwo-console-app.zip
cd fortytwo-console-app-main
Unblock-File -Path .\windows.ps1
powershell -ExecutionPolicy Bypass -File .\windows.ps1
cd command, or run the following command to continue installation in the default location in your home directory:mkdir -p ~/FortytwoCLI && cd ~/FortytwoCLI
curl -L -o fortytwo-console-app.zip https://github.com/Fortytwo-Network/fortytwo-console-app/archive/refs/heads/main.zip
unzip fortytwo-console-app.zip
cd fortytwo-console-app-main
chmod +x linux.sh && ./linux.sh
3. Operating Your Node
The node will remain fully operational until it is terminated by the user or the system restarts. You can minimize the terminal window or switch to other applications – the node will continue running in the background.Launching or Restarting Fortytwo CLI
Fortytwo to FortytwoCLI. If you’ve installed your Fortytwo CLI before this date, your default path will differ. To access the folder, look for Fortytwo instead of FortytwoCLI.- macOS
- Windows
- Linux (Ubuntu/Debian)
cd ~/FortytwoCLI/fortytwo-console-app-main
./macos.sh
Set-Location "$HOME\FortytwoCLI\fortytwo-console-app-main"
powershell -ExecutionPolicy Bypass -File .\windows.ps1
cd ~/FortytwoCLI/fortytwo-console-app-main
./linux.sh
Updating Fortytwo CLI
Fortytwo node automatically updates every time it is launched. When you start the node, it checks for the latest available version and installs any updates before running.If you face issues with the updates, you can manually check the current version of>_ Fortytwo CLI on the Changelog page, and then manually download and reinstall the app.You can find your current version under ◰ Setup script — version validation when lauhcing the CLI script.