> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.itential.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.itential.com/_mcp/server.

# Offline installation method

> How to perform an offline install of Itential Gateway on systems disconnected from the internet.

The following instructions explain how to perform an offline install of Itential Gateway. Use this process when the target system is disconnected from the internet.

More information on download distribution is available in the [pip download](https://pip.pypa.io/en/stable/cli/pip_download/) reference guide.

> **Info**
>
> Refer to the [Gateway system requirements](/itential-gateway/4/system-requirements) page for information regarding the software repository and registry credentials that can be used with the various Gateway installation methods.

## Prepare PIP packages

#### Download packages on an internet-connected VM

Run the following to download packages from a VM **with internet access** of the same OS and Python version (Gateway requires Python 3) as the target system.

```bash
echo "## CUSTOMIZE THESE VARIABLES BEFORE RUNNING THIS SCRIPT: ##" && \
export AUTOMATION_GATEWAY_VERSION="" && \
export REGISTRY_USERNAME="" && \
export REGISTRY_PASSWORD="" && \
export REGISTRY_URL="https://registry.aws.itential.com/repository/automation-gateway-release/simple" && \
mkdir dist && \
cd dist && \
pip3 -v download --extra-index-url $REGISTRY_USERNAME:$REGISTRY_PASSWORD@$REGISTRY_URL automation-gateway==$AUTOMATION_GATEWAY_VERSION
```

> **Info**
>
> The `pip download` command supports `--platform`, `--python-version`, `--implementation`, and `--abi` options to target a different platform. See the [command reference](https://pip.pypa.io/en/stable/cli/pip_download/) for more information. The command above uses credentials for the Nexus repository. For JFrog repository credentials, see [Gateway system requirements](./system-requirements#customer-accounts-assigned-to-jfrog).

#### Verify downloaded files

Multiple `.whl` files are downloaded — these are all the prerequisites required by Gateway.

```bash
[root@centos-7 d]# ls
automation_gateway-1.45.1-py3-none-any.whl      MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
ansible_runner-1.2.0-py2.py3-none-any.whl    netifaces-0.10.9-cp36-cp36m-manylinux1_x86_64.whl
argparse-1.4.0-py2.py3-none-any.whl          pexpect-4.7.0-py2.py3-none-any.whl
attrs-19.1.0-py2.py3-none-any.whl            psutil-5.6.1.tar.gz
certifi-2019.3.9-py2.py3-none-any.whl        ptyprocess-0.6.0-py2.py3-none-any.whl
chardet-3.0.4-py2.py3-none-any.whl           pyrsistent-0.14.11.tar.gz
Click-7.0-py2.py3-none-any.whl               python_daemon-2.2.3-py2.py3-none-any.whl
clickclick-1.2.2-py2.py3-none-any.whl        python_dateutil-2.8.0-py2.py3-none-any.whl
connexion-1.5.3-py2.py3-none-any.whl         PyYAML-3.13.tar.gz
docutils-0.14-py3-none-any.whl               requests-2.21.0-py2.py3-none-any.whl
Flask-1.0.2-py2.py3-none-any.whl             setuptools-41.0.1-py2.py3-none-any.whl
Flask_SQLAlchemy-2.3.2-py2.py3-none-any.whl  six-1.12.0-py2.py3-none-any.whl
idna-2.8-py2.py3-none-any.whl                SQLAlchemy-1.3.3.tar.gz
inflection-0.3.1.tar.gz                      swagger_spec_validator-2.4.3-py2.py3-none-any.whl
itsdangerous-1.1.0-py2.py3-none-any.whl      textfsm-0.4.1.tar.gz
Jinja2-2.10.1-py2.py3-none-any.whl           tomlkit-0.4.6-py2.py3-none-any.whl
jsonschema-3.0.1-py2.py3-none-any.whl        urllib3-1.24.1-py2.py3-none-any.whl
lockfile-0.12.2-py2.py3-none-any.whl         Werkzeug-0.15.2-py2.py3-none-any.whl
```

#### Create a tar archive

Create a tar file of all `.whl` and `.tar.gz` files.

```bash
[root@centos-7 d]# tar -zcvf automation_gateway-dist.tar.gz *
automation_gateway-1.45.1-py3-none-any.whl
ansible_runner-1.2.0-py2.py3-none-any.whl
argparse-1.4.0-py2.py3-none-any.whl
attrs-19.1.0-py2.py3-none-any.whl
certifi-2019.3.9-py2.py3-none-any.whl
chardet-3.0.4-py2.py3-none-any.whl
Click-7.0-py2.py3-none-any.whl
clickclick-1.2.2-py2.py3-none-any.whl
connexion-1.5.3-py2.py3-none-any.whl
docutils-0.14-py3-none-any.whl
Flask-1.0.2-py2.py3-none-any.whl
Flask_SQLAlchemy-2.3.2-py2.py3-none-any.whl
idna-2.8-py2.py3-none-any.whl
inflection-0.3.1.tar.gz
itsdangerous-1.1.0-py2.py3-none-any.whl
Jinja2-2.10.1-py2.py3-none-any.whl
jsonschema-3.0.1-py2.py3-none-any.whl
lockfile-0.12.2-py2.py3-none-any.whl
logger-1.4.tar.gz
MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
netifaces-0.10.9-cp36-cp36m-manylinux1_x86_64.whl
pexpect-4.7.0-py2.py3-none-any.whl
psutil-5.6.1.tar.gz
ptyprocess-0.6.0-py2.py3-none-any.whl
pyrsistent-0.14.11.tar.gz
python_daemon-2.2.3-py2.py3-none-any.whl
python_dateutil-2.8.0-py2.py3-none-any.whl
PyYAML-3.13.tar.gz
requests-2.21.0-py2.py3-none-any.whl
setuptools-41.0.1-py2.py3-none-any.whl
six-1.12.0-py2.py3-none-any.whl
SQLAlchemy-1.3.3.tar.gz
swagger_spec_validator-2.4.3-py2.py3-none-any.whl
textfsm-0.4.1.tar.gz
tomlkit-0.4.6-py2.py3-none-any.whl
urllib3-1.24.1-py2.py3-none-any.whl
Werkzeug-0.15.2-py2.py3-none-any.whl
```

## Transfer PIP packages

#### Transfer the tar file

Transfer `automation_gateway-dist.tar.gz` to the target machine.

#### Verify OS and Python versions

Confirm the OS and Python versions match what you chose when preparing the distribution, then extract the archive.

```bash
# mkdir tmp
# cd tmp
# tar -zxvf automation_gateway-dist.tar.gz
```

#### Install tar.gz dependencies

Install all `.tar.gz` files and dependencies from the pre-packaged Gateway distribution before installing the `.whl` files.

```bash
pip3 install *.tar.gz
```

#### Install .whl files

Run the `pip` command to install all `.whl` files.

```bash
pip3 install *.whl -f ./ --no-index
```