Get your model running, then scale up your experiments.
This checklist is for researchers getting started with OsxNode M4-16. First, connect to your dedicated Mac, check Python and MLX, then run a short generation to see how much memory is available. This model has an M4 chip, 16GB of unified memory and a 256GB SSD.
Have your order number ready before connecting, and export your results before expiry. A successful connection does not mean every model will fit in 16GB of unified memory.
Check your access details
Open macOS from your node card
Access is provisioned on the day your payment is confirmed. Your instance is ready when the node and connection details appear in the console. If payment is complete but you can’t see your credentials, check the relevant order before placing another one.
01
Sign in and check your node
Sign in to the console with the email address used for your order. Open the instance or subscription details and check the order number, node name and expiry time. The node name should match your selection; use the connection address, username and port shown in the instance details.
02
Open the remote desktop
Select “Open remote desktop” on the relevant node card or details page, then use the credentials provided in the console to access macOS. Make sure your browser allows the connection page to run. The public help pages are not a remote desktop entry point.
03
Change the initial password
After signing in for the first time, change the account’s initial password under Users & Groups in System Settings, then save it in your password manager. Verify that the new password works before ending your current session. Never send your initial or new password in a support ticket.
Each physical Mac is assigned to one renter for the duration of the rental; it is not a virtual machine. Closing your browser ends the current viewing session, not your rental. To keep a task running, use a separate session as described below.
Set up your environment
Isolate dependencies before installing MLX
Run the commands below in Terminal on your remote Mac, not on your own computer. A dedicated virtual environment keeps this experiment’s Python packages separate from other tasks. Don’t install packages globally into the system Python.
Check the architecture and Homebrew
uname -m
command -v brew
brew --version
The expected architecture is arm64. The last two commands should return the Homebrew path and version. If brew isn’t installed, follow the official Homebrew installation instructions. Don’t paste installation scripts from unverified sources into Terminal.
After installation, the check should print arm64, the installed versions of both packages, and an array with the value [2, 3, 4]. Package versions vary over time, so don’t use a specific version string as the only sign of success.
If there are no dependency conflicts, the last command will usually return No broken requirements found. When you reopen Terminal, go to your experiment directory and run source .venv/bin/activate before running inference. Don’t migrate only the virtual environment directory; keep the dependency list and your scripts too.
Understand memory usage
Run a short inference to check available memory
The 16GB of unified memory is shared by the CPU, GPU and system; it is not all available to the model. Context cache, runtime processes and other apps need memory too. Even models with the same parameter count can have different peak memory usage depending on quantisation format and context length.
Check storage before downloading
Check the model file size, licence and available disk space first. If you’ll reuse weights and datasets, consider storing them on an additional drive you’ve purchased. Confirm the drive’s mount path in Finder or Disk Utility.
More SSD capacity does not increase the 16GB of unified memory. Without an additional drive, use a directory on the main drive and keep the cache size under control. Don’t copy a volume name that doesn’t exist.
Monitor memory while loading
Open Activity Monitor → Memory and check both memory pressure and swap usage. Close GUI apps you don’t need, limit the output length and increase the context gradually. Record the model name, quantisation and command-line arguments.
If memory pressure turns yellow, stop increasing concurrency, shorten the context or switch to a smaller quantised model. If the system keeps swapping or the process is terminated, don’t rerun the same task with the same settings.
Generate a short sample first
cd "$HOME/experiments/mlx-first"
source .venv/bin/activate
export HF_HOME="$HOME/model-cache"
mkdir -p "$HF_HOME"
df -h "$HF_HOME"
python -m mlx_lm.generate \
--model mlx-community/Qwen2.5-3B-Instruct-4bit \
--prompt "Explain unified memory in three sentences." \
--max-tokens 128
The first run downloads the specified model. On success, it prints generated text; some versions also show generation statistics. This example makes no promises about download time or tokens per second. If you’re using an additional drive, set HF_HOME to a confirmed, writable directory on that drive and keep using the same path in later sessions.
Start by testing a 3B 4-bit model or a 7B 4-bit model with a short context. The 16GB tier offered here is not recommended for 13B or larger 8-bit models. LoRA fine-tuning also needs memory for training states and activations, so successful inference does not mean training will fit.
Move data in and results out
Get your data onto the Mac and bring results back
Use SSH to run commands, scp for a one-off copy, and rsync for repeat syncs or resuming interrupted transfers. Check in the console whether SSH is enabled and review its connection details first. Having browser desktop access does not mean SSH is already configured.
These commands use Bash syntax and should be run in a local Bash shell. Enter the actual host, username and port shown in your instance details. Check the host fingerprint the first time you connect; don’t bypass a warning by disabling fingerprint checks. The rsync examples do not use a deletion option. The trailing slash on the source directory means “sync the directory contents”.
Split large files and verify them
If your connection is unreliable, split a large archive into 1024MB volumes and upload them one at a time. Splitting only changes how the file is transferred; it does not compress the original or reduce the disk space needed at the destination.
shasum -a 256 dataset.tar
split -b 1024m dataset.tar dataset.part-
cat dataset.part-* > dataset-restored.tar
shasum -a 256 dataset-restored.tar
Split the archive on the source machine and reassemble it on the destination. Compare the SHA-256 values before extracting. If the archive and all its parts are stored together, allow space for both copies.
Keep long-running tasks in a separate session
Install tmux on the remote Mac and create a session to run your inference command. Press Ctrl+B, then D to detach; you can reconnect to the session later.
Start the task in a new session, then run attach after reconnecting. tmux can help with SSH disconnections, but it cannot keep a task running through instance shutdown, restart or the end of your rental.
Plan around your rental
Renew and export your work before expiry
Mac rentals are prepaid by the day, week, month or quarter. If you don’t renew, the instance shuts down automatically at expiry, with no further charges. Use the expiry time shown in the console to plan tasks and backups; don’t rely on whether the browser still displays the desktop.
01
Renew early if you need more time
Before expiry, open the relevant subscription in the console, review the available renewal options and complete payment. Then confirm the updated expiry time. The only accepted payment methods are USDT-TRC20 and Visa / Mastercard / Amex via Stripe. Payments are settled in US dollars; available payment gateways are confirmed in the console.
02
Check your backup if you’re not renewing
Before expiry, export your datasets, experiment scripts, dependency lists, logs and result files, then confirm you can open them locally. Verify checksums for important archives. Closing the remote desktop does not mean your results have synced; a file you can’t see locally is not backed up.
03
Shutdown is not a data retention service
Service stops at expiry. After a node is reclaimed, its disks are erased and the system is reinstalled before the node is assigned to another renter. We do not guarantee that data will remain accessible for any period after shutdown, or that erased data can be recovered. If your order includes specific data handling arrangements, refer to the terms confirmed for that order and support ticket.
We do not guarantee a standard period of data retention after shutdown. If you’re unsure whether your backup is complete, confirm it through a support ticket while your rental is active. Don’t rely on renting again after expiry to recover data from the original disk.
Understand your instance details
Key terms for your experiments
Capacity, connection methods and billing periods are separate things. Understanding the difference can help you tell whether an issue is caused by model size, network access or your rental status.
Physical node
The location of the physical machine providing your cloud Mac. Refer to the relevant instance details for connection information.
Dedicated
Each physical Mac is assigned to one renter for the duration of the rental. Its unified memory and GPU cores are not shared with other renters.
Unified memory
A shared pool of memory used by the CPU and GPU. This model has 16GB, which is used by the system, model and runtime.
VNC
A connection method for viewing and controlling a remote desktop. It transmits the screen and input; it does not replace SSH for file transfers.
Screen sharing
A way to control a remote macOS desktop using a compatible client. Get the connection address and credentials from the console.
Self-hosted runner
A CI runner process that you deploy on your rented machine. Build jobs stop when the instance shuts down at the end of your rental.
Quantisation
The number of bits used to represent model weights. It affects weight size and output quality; reducing the bit width does not reduce runtime memory by the same ratio.
Memory pressure
An Activity Monitor metric showing memory usage. If it turns yellow, reduce concurrency, context length or model size rather than relying only on the remaining-memory figure.
Capture what happened
Narrow down the issue by symptom
Save the error message and the time it occurred before making changes. Don’t keep restarting in the hope that it will work; a restart may interrupt unsaved experiments and remove useful diagnostic information.
I’m connected to the remote desktop, but the screen is black
The browser connection may not have completed, the desktop session may be in an unexpected state, or the node may be unreachable. A black screen alone does not mean the machine is shut down.
Check the instance status and expiry time in the console to confirm the rental is still active.
Close the current connection tab and reopen the desktop from the same instance details. Temporarily disable browser extensions that may block the connection, then try again.
If SSH is configured, use it to check whether the machine is still reachable. Don’t change network settings repeatedly just to test the connection.
If you still can’t connect, note when the screen went black, your browser version and whether SSH is reachable, then submit a support ticket. Mention any unsaved tasks and don’t use power controls immediately.
The keys I press don’t match the symbols that appear
Different input methods, macOS input sources and client keyboard mappings can cause symbols to appear in the wrong place. You usually don’t need a new instance.
Test letters, numbers and symbols in a regular text editor on the remote Mac. Don’t guess in a password field.
Check the input source in the remote menu bar and review the keyboard and input method settings in System Settings.
If shortcuts behave unexpectedly, check your connection client’s keyboard mapping, especially the mappings for Command, Option and Control.
When reporting the issue, say what you pressed and what appeared. Don’t use a real password or private key as test text.
The model shows “Killed” or exits while loading
Insufficient memory is one possible cause, but check disk space, model file integrity and dependency errors too. A single exit message is not a substitute for the full log.
Save the full command, the end of the error output, the model name, quantisation and context settings.
Check memory pressure and swap usage in Activity Monitor. Close other workloads and test with a shorter output and a smaller model.
Run df -h to check the disk containing the cache and confirm the download wasn’t interrupted by a lack of space.
In the activated virtual environment, run python -m pip check. If a smaller model fails too, include the error and environment versions in your support ticket.
Help us reproduce the issue
Include these four details in your support ticket
For issues with an active instance, submit a support ticket from the console after signing in so it can be linked to your order. For pre-sales questions or sign-in issues, see the email options on our Contact Us page. Our public support email is support@osxnode.com.
Order and node
Include your order number, node name and current instance status. For renewal or payment issues, add the payment method and status. Don’t provide a full card number, sign-in password or SSH private key.
Time and time zone
Give the time the issue started, whether it’s ongoing and your time zone. Avoid vague descriptions like “just now”. For availability requests, include the affected time period and node name.
Steps and errors
Describe the prerequisites, steps to reproduce, expected result and actual result. For MLX issues, include the model identifier, quantisation, command and dependency versions. Remove sensitive information from paths.
Checks you’ve done
List the results of checks such as reconnecting in the browser, SSH connectivity, memory pressure and disk space. Say whether any tasks are running or still need to be backed up to help avoid unnecessary interruptions.
Stuck on a step? Include what happened at that step.
Link the instance, time and error details in your support ticket. If you’re not sure whether a model will fit in 16GB, tell us its size and quantisation before asking for advice.