UniteLabs

Set up your development machine

Prepare the computer you write automation code on, with an editor, Git, uv, Python, and access to the UniteLabs package registry.

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:

Terminal
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 .pkg inside.
  • Xcode Command Line Tools: run xcode-select --install and 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.

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:

Terminal
curl -LsSf https://astral.sh/uv/install.sh | sh

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:

Terminal
uv python install 3.13

Verify with uv python list --only-installed; Python 3.13 should appear in the list.

uv installs and selects project-specific Python versions independently of the Python installations already on the machine.

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:

~/.netrc
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:

Terminal
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:

Terminal
ls -la ~/.netrc

The output should start with -rw-------. Files starting with a dot are hidden in Finder; press Cmd+Shift+. to toggle visibility.

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

Terminal
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 .txt extension survives.
  • Pip looks for %USERPROFILE%\_netrc when the NETRC variable 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 the NETRC variable 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.