Set up your development machine
Set up the development machine you use to write automation code. This is separate from the lab computer running GroundControl. You need the registry credentials from Get access. Allow about 20 minutes.
Install an editor
We recommend Visual Studio Code with the Python extension by Microsoft, installed from the Extensions sidebar. Any editor you know well works too; where these docs show an editor, it is VS Code.
Install Git
Check whether Git is already installed:
git --version
If a version number prints, continue with the next section. Otherwise:
macOS may open a popup offering to install the Xcode Command Line Tools. That works, but downloads about 1 GB; the standalone installer is much smaller.
- Standalone installer (recommended): download from git-scm.com/download/mac, open the
.dmg, and run the.pkginside. - Xcode Command Line Tools: run
xcode-select --installand confirm the prompt. This also installs Apple's C compiler, which this setup does not need. - Homebrew:
brew install git, only if you already use Homebrew. Do not install Homebrew just for this.
Close and reopen the terminal, then verify with git --version.
- Check which build you need:PowerShell
systeminfo | findstr "System Type"
An x64-based PC needs the x64 setup, an ARM-based PC the ARM64 setup. - Download the matching installer from git-scm.com/downloads/win and keep the default settings. The installation includes Git Bash.
- Close and reopen the terminal, then verify with
git --version.
Install Git through your distribution's package manager, for example sudo apt install git on Debian and Ubuntu or sudo dnf install git on Fedora. Verify with git --version.
Install uv
uv manages Python versions, virtual environments, and dependencies, and it is what the UniteLabs guides and trainings use. Check whether it is already installed with uv --version. If not:
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Close and reopen the terminal, then verify with uv --version. Other options are listed in the official uv installation instructions.
Install Python
The UniteLabs packages require Python 3.10 or newer; 3.13 is what the guides and trainings use. Install it through uv:
uv python install 3.13
Verify with uv python list --only-installed; Python 3.13 should appear in the list.
Set up registry access
The UniteLabs Python packages are not on public PyPI; they install from a private registry. uv and pip read the credentials for it from a .netrc file in your home directory:
machine gitlab.com
login <username>
password <password>
<username> and <password> are the registry credentials from Get access. If UniteLabs sent you a prepared netrc.txt, move it into place as shown below.
Place the file at ~/.netrc and restrict its permissions:
mv ~/Downloads/netrc.txt ~/.netrc
chmod 600 ~/.netrc
The chmod 600 step is required: most tools silently ignore a .netrc that other users can read. Verify:
ls -la ~/.netrc
The output should start with -rw-------. Files starting with a dot are hidden in Finder; press Cmd+Shift+. to toggle visibility.
Place the file at C:\Users\<your-username>\.netrc and point the NETRC environment variable at it so every tool finds it:
Move-Item "$env:USERPROFILE\Downloads\netrc.txt" "$env:USERPROFILE\.netrc"
[System.Environment]::SetEnvironmentVariable("NETRC", "$env:USERPROFILE\.netrc", "User")
Close and reopen the terminal, then verify with notepad "$HOME\.netrc". The Windows specifics below cover file name extensions, pip, and profiles on a network drive.
Registry access is exercised the first time you install packages in SDK installation. If installs download from pypi.org instead of GitLab, or fail with a 302 or 401 error, the .netrc is not being picked up: check the location, the permissions, and that the name carries no hidden .txt extension.
Verify
git --version
uv --version
uv python list --only-installed
Troubleshooting
Windows specifics
- If you rename the file in File Explorer instead of moving it with the command above, enable View, Show, File name extensions first, so no hidden
.txtextension survives. - Pip looks for
%USERPROFILE%\_netrcwhen theNETRCvariable is not set; if you use pip directly, keep a copy under that name. - If your Windows profile lives on a network drive, check where the terminal resolves your home directory with
echo $HOME, and either copy the file there or point theNETRCvariable at the actual location.
Corporate networks and SSL
If your organization inspects TLS traffic with its own certificate authority, Python may reject connections that your browser accepts. Add the truststore package to your project (uv add truststore) and activate it at program start with import truststore; truststore.inject_into_ssl(), so Python uses the operating system's trust store. If uv itself fails with certificate errors while downloading packages, run it with --native-tls or set UV_NATIVE_TLS=1, so uv uses the system trust store too. If certificate errors persist, ask your IT to confirm the root CA is present in the system trust store.
Next steps
SDK installation creates a first project, installs the UniteLabs packages through the registry access you just set up, and sends a first request to your tenant.