{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["img","admonition","partial"]},"type":"markdown"},"seo":{"title":"Airgap Installation","siteUrl":"https://docs.hiddenlayer.ai","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"airgap-installation","__idx":0},"children":["Airgap Installation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There are 3 parts to deploy for the full Airgap AISec Platform experience:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#airgap-aisec-platform-deployment"},"children":["Airgap AISec Platform Consoles"]}," (Admin Console and Platform Console)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#supply-chain-cli"},"children":["Supply Chain CLI"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#aidr"},"children":["AIDR"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"airgap-aisec-platform-deployment","__idx":1},"children":["Airgap AISec Platform Deployment"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"download","__idx":2},"children":["Download"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Download the AISec Platform file and transfer it to the system where it will be deployed."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the following command in terminal."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<License ID>"]}," with your AISec Platform License ID."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For information about licenses, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/airgap/airgap_prerequisites#licenses"},"children":["Prerequisites"]},"."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"sudo curl -f \"https://updates.hiddenlayer.ai/embedded/aisec-platform/stable?airgap=true\" -H \"Authorization: <License ID>\" -o aisec-platform-stable.tgz\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Transfer the file to the system where the AISec Platform will be deployed."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"install-admin-console","__idx":3},"children":["Install Admin Console"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Admin Console allows you to manage your controller and worker nodes used by the platform. The Admin Console is not the HiddenLayer Console UI (Platform Console)."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":["About the Admin Console (Click to expand)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the Admin Console is deployed, the following are created:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Admin Console"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A controller node"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some Admin Console features include:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add new nodes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Edit the platform configuration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use the troubleshooting feature to collect logs, resources, and other data to send to HiddenLayer for support"]}]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open a terminal and unpack the installer file."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"sudo tar -xvzf aisec-platform-stable.tgz\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Install the the Airgap Platform and follow the on-screen instructions."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"sudo ./aisec-platform install --license license.yaml --airgap-bundle aisec-platform.airgap\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set the Admin Console password. This password will be used to login to the Admin Console in the next step."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Navigate to the outputted URL to login the Admin Console."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/airgap-secure-console-enterpassword.95957d2b140a8a4e2e2802e5509ecc87e7fad038521b78092c98cee80237c0b9.e0455751.png","alt":"Login Admin Console","withLightbox":true,"width":"500px","align":"center"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"admin-console-setup","__idx":4},"children":["Admin Console Setup"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After logging in to the Admin Console, follow the onscreen instructions to complete setup and installation of the HiddenLayer Airgap Platform."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Choose what certificate to use, then click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Continue"]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Self-signed: The installer will create a private key and SSL certificate. Can be used for testing."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Upload your own: You need to upload a private key and an SSL certificate. Recommended for production."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Hostname (optional)"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure the cluster, then click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Continue"]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note"]},": The initial deployment of the Admin Console includes one controller node."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add more controller and worker nodes to meet your organization's requirements."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To add a controller, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["controller"]}," and deselect ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["worker"]},". Use the commands on the systems to run the controller nodes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To add a worker node, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["worker"]}," and deselect ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["controller"]},". Use the commands on the systems to run the worker nodes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Do not install a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["controller"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["worker"]}," on the same system."]}]}]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/airgap-admin-console-configure-cluster-changetoworker.df8251a02b5e421385c8590c9746311933355e76fe2cd6bf18db4494eb3732a5.e0455751.png","alt":"Add nodes to cluster","withLightbox":true,"width":"500px","align":"center"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure HiddenLayer Platform. The following steps describe each configuration field."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/airgappedexamplesetup.9eefcb106790476270396552f2374da2afe6da15efa614d2145dd7abb0b6b0c9.e0455751.png","alt":"Configure HiddenLayer Platform","withLightbox":true,"width":"500px","align":"center"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Notes"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some fields appear when a value is entered into the parent field, such as Database Host or OpenSearch URL."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Leaving the fields blank for Database Host, Kafka Brokers, and OpenSearch URL will cause the installer to enter “Sandbox Mode” and use embedded services."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sandbox Mode is for testing and POC purposes only, it is not supported for production environments. Sandbox Mode may not have all features available."]}]}]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Hostname"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This hostname will be used to login to the Platform Console."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Disable TLS verification"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enable this option if using a self-signed certificate."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This option should not be enabled if using your own certificate."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Email"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This email will be the user name to login to the Platform Console."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The initial user created is an Administrator for the Platform Console."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Password"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This password is for the initial user login."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The password must be a minimum of 8 characters and a maximum of 256."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Database Host"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["your.database.hostname.com"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you enter a hostname, other database fields display. Enter the required information."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Database Port"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["5432"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Database User"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Database Password"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Kafka Brokers"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The broker entries can be entered as comma separated values."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["broker-1.your.kafka.domain.com:9092, broker-2.your.kafka.domain.com:9092,"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["OpenSearch URL"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://your.opensearch.hostname.com:443"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you enter a URL, other Kafka fields display. Enter the required information."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OpenSearch User"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OpenSearch Password"]}]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Continue"]},"."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"validate-the-environment--deploy-hiddenlayer-platform","__idx":5},"children":["Validate the environment & deploy HiddenLayer Platform"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the initial setup is complete, you will be re-directed to the Admin Console."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Airgap AISec Platform will take time to complete installation after the package is deployed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Platform Console will be accessible when the status changes to “Ready” as seen in the Admin Console."]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/airgap-secure-console-ready.f1fc400b13db2c3b553a864b44b2a1951c4d800dc7c20c23ae6342a250363c24.e0455751.png","alt":"Configure HiddenLayer Platform","withLightbox":true,"width":"500px","align":"center"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"platform-console---api-key","__idx":6},"children":["Platform Console - API Key"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To run Supply Chain CLI and AIDR, you need an API client ID and client secret. These are created in the Platform Console."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Log in to the Platform Console. Enter the email and password you used during the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#admin-console-setup"},"children":["Admin Console Setup"]},", or enter your email and password provided by your Platform Console administrator."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the side navigation, click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Admin"]},"."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/airgap-platform-console-navigation-admin.387437ae74100eb7371c58e2b67ddf8e770485b30acbb76bf348d6e791fbe1d5.e0455751.png","alt":"Side Navigation Admin","withLightbox":true,"width":"50px","align":"center"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Keys"]}," (upper-right)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["New"]},". A Create API Key window displays."]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/airgap-platform-console-create-apikey-step1.51b55e2ac3907186d49b02ee34fd8e871b686b103f13319df59ad121d68c4fae.e0455751.png","alt":"Create New API Key","withLightbox":true,"width":"500px","align":"center"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enter a name for the API key, then select an expiration from the drop-down menu."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Next"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select the permissions for this API key. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/console/apikey_aisec_platform#api-permissions-for-console-access"},"children":["API Keys"]}," for details about API key permissions."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For Supply Chain CLI, enable the following permissions:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Model Inventory: Read, Write"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Model Scanner: Write"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For AIDR, enable the following permissions:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Inferences: Read, Write"]}]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create API Key"]},". Copy the Client ID and Client Secret for future use. The Client Secret is only visible when creating an API key. You cannot retrieve or view the Client Secret after you close this window."]}]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/airgap-platform-console-create-apikey-step3.6dc018766355b5fc33586d230ff0a58c3ae8766d80a968e46b20262df56ea108.e0455751.png","alt":"Copy Client ID and Client Secret","withLightbox":true,"width":"500px","align":"center"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"supply-chain-cli","__idx":7},"children":["Supply Chain CLI"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Supply Chain CLI is a container image that can be downloaded and ran via Docker."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For prerequisites, including licenses, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/airgap/airgap_prerequisites"},"children":["Prerequisites"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"download-1","__idx":8},"children":["Download"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Download the Supply Chain CLI file and transfer it to the system where it will be deployed."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Docker Command Fails"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When using Docker commands, like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["docker pull"]},", if you get a permission denied message, try using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sudo docker"]},", like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sudo docker pull"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Alternatively, add the user to the appropriate Docker group for Docker daemon permissions."]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Authenticate using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["docker login"]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The username is the Registry Username."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The password is the Model Scanner License ID."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For information about licenses, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/airgap/airgap_prerequisites#licenses"},"children":["Prerequisites"]},"."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker login images.hiddenlayer.ai\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pull the HiddenLayer image."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker pull --platform linux/amd64 images.hiddenlayer.ai/proxy/aisec-platform/ghcr.io/hiddenlayer-engineering/supply-chain-scanner:26.5.1\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Tag the image for your private registry."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker tag images.hiddenlayer.ai/proxy/aisec-platform/ghcr.io/hiddenlayer-engineering/supply-chain-scanner:26.5.1 %YOUR-REGISTRY%/hiddenlayer-engineering/supply-chain-scanner:26.5.1\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Push the airgapped image to your private registry. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note"]},": Make sure you are logged in to your private registry in order to push the image."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker push %YOUR-REGISTRY%/hiddenlayer-engineering/supply-chain-scanner:26.5.1\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Notes"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You will run the Supply Chain CLI after you deploy the AISec Platform and create an API key."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The above may need to be repeated for each updated release of Supply Chain."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"running-supply-chain-cli","__idx":9},"children":["Running Supply Chain CLI"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Export your HiddenLayer information (product license, API key, and API secret)."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":["HiddenLayer Information Descriptions (Click to expand)"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["%HIDDENLAYER_LICENSE%"]}," with your HiddenLayer License."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["%HL_API_KEY%"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["%HL_API_SECRET%"]}," with your HiddenLayer API client ID and client secret, generated in the Platform Console."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HL_MODEL_SCANNER_PLATFORM_RESULTS_URL"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HL_MODEL_SCANNER_TOKEN_URL"]},", replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["%HIDDENLAYER_PLATFORM_HOSTNAME%"]}," with the URL for your Console. \n",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["http://server1.test.hiddenlayer.com"]},"."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For Windows, replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["export"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["set"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For information about licenses and keys, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/products/airgap/airgap_prerequisites"},"children":["Prerequisites"]},"."]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"export HL_LICENSE=%HIDDENLAYER_LICENSE%\nexport HL_CLIENT_ID=%HL_API_KEY%\nexport HL_CLIENT_SECRET=%HL_API_SECRET%\nexport HL_MODEL_SCANNER_PLATFORM_RESULTS_URL=%HIDDENLAYER_PLATFORM_HOSTNAME%\nexport HL_MODEL_SCANNER_TOKEN_URL=%HIDDENLAYER_PLATFORM_HOSTNAME%\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the Supply Chain command."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":["Supply Chain Command Descriptions (Click to expand)"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$(directory)"]}," with the path on the local machine where models to be scanned are located. Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/Users/username/Downloads"]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To scan a specific file in the folder, update ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--input /files-to-scan"]}," with the file name. Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--input /files-to-scan/test_model.pkl"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<","location of supply chain cli in local registry",">"]}," with the location of the Supply Chain image."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Example for Docker image: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{% partial file=\"/_partials/model_scanner/supply_chain_scanner_image_aisec_platform.md\" /%}"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["$model_name"]}," with either the name of an existing model from the inventory (to add a new scan version to the existing model) or a new, unique name (to create a new model entry in the inventory). Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Test Scan"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--persist"]}," adds the scan results to an existing model in the AISec Platform Console."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the following example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jq"]}," is used to make the output more readable. Remove ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["| jq"]}," if you do not want to use jq."]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker run --rm \\\n    -e HL_LICENSE \\\n    -e HL_CLIENT_ID \\\n    -e HL_CLIENT_SECRET \\\n    -e HL_MODEL_SCANNER_PLATFORM_RESULTS_URL \\\n    -e HL_MODEL_SCANNER_TOKEN_URL \\\n    -v ${directory}:/files-to-scan \\\n    <location of supply chain cli in local registry> --input /files-to-scan --persist --model-name=\"$model_name\" | jq\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The scan results display in the terminal or command prompt. You can also log in to the Platform Console to view the scan results."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information about Supply Chain CLI command-line arguments, for input and output, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/supply-chain/cli/commandline_arguments"},"children":["Command-Line Arguments"]}]}]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":["Supply Chain Sample Output (Click to expand)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following is an example output for a Supply Chain CLI scan using a terminal or command prompt."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"{\n  \"scan_id\": \"eadcb851-bf57-4e57-acbe-c3e7fededd44\",\n  \"start_time\": \"2025-10-24T21:08:51.96Z\",\n  \"end_time\": \"2025-10-24T21:08:52.222Z\",\n  \"status\": \"done\",\n  \"version\": \"25.9.0\",\n  \"$schema_version\": \"3.3.0\",\n  \"inventory\": {\n    \"requested_scan_location\": \"/files-to-scan/test_model_safe.pkl\",\n    \"model_id\": \"00000000-0000-0000-0000-000000000000\",\n    \"model_name\": \"test scan 01\",\n    \"model_version\": \"1761340131\",\n    \"model_version_id\": \"00000000-0000-0000-0000-000000000000\"\n  },\n  \"file_results\": [\n    {\n      \"file_instance_id\": \"0854d4a0-3acf-4e15-b3b5-63090bfd218a\",\n      \"file_location\": \"/files-to-scan/test_model_safe.pkl\",\n      \"status\": \"done\",\n      \"start_time\": \"2025-10-24T21:08:51.96Z\",\n      \"end_time\": \"2025-10-24T21:08:52.222Z\",\n      \"details\": {\n        \"sha256\": \"bce834158f08706277377c50226e31b74e372770fe26fc5bdb4ff74de9924ffa\",\n        \"file_type\": \"pickle\",\n        \"file_type_details\": {\n          \"pickle_header\": {\n            \"pickle_version\": \"3\",\n            \"type\": \"pickle\"\n          },\n          \"pickle_modules\": [\n            \"sklearn.pipeline.pipeline\",\n            \"sklearn.preprocessing._data.standardscaler\",\n            \"callable: numpy.core.multiarray.scalar\",\n            \"callable: numpy.dtype\",\n            \"callable: numpy.core.multiarray._reconstruct\",\n            \"numpy.ndarray\",\n            \"lightgbm.sklearn.lgbmclassifier\",\n            \"lightgbm.basic.booster\",\n            \"callable: collections.defaultdict\",\n            \"collections.ordereddict\",\n            \"sklearn.preprocessing._label.labelencoder\"\n          ],\n          \"subtype\": [\n            \"numpy\",\n            \"scikit\"\n          ]\n        },\n        \"estimated_time\": \"\"\n      },\n      \"seen\": \"2025-10-24T21:08:51.96Z\",\n      \"detections\": []\n    }\n  ],\n  \"detection_count\": 0,\n  \"file_count\": 1,\n  \"files_with_detections_count\": 0,\n  \"summary\": {\n    \"detection_count\": 0,\n    \"file_count\": 1,\n    \"severity\": \"safe\",\n    \"files_with_detections_count\": 0,\n    \"files_failed_to_scan\": 0,\n    \"unknown_files\": 0\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Self-Signed Certificates Breaks Persist Flag"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When using a self-signed certificate for testing, using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--persist"]}," flag results in a failed scan. Scan results never display in the Platform Console."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The container does not trust the internal certificate. To fix this, you must fetch the certificate and mount it into the container."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To fetch the certificate:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"echo | openssl s_client -connect <hostname>:443 \\\n  -servername <hostname> 2>/dev/null \\\n  | openssl x509 > ~/selfsigned.pem\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add these flags to the Docker run command:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"-e SSL_CERT_FILE=/etc/ssl/certs/selfsigned.pem \\\n-e REQUESTS_CA_BUNDLE=/etc/ssl/certs/selfsigned.pem \\\n-v ~/selfsigned.pem:/etc/ssl/certs/selfsigned.pem\n"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"aidr","__idx":10},"children":["AIDR"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Deployment for AIDR requires downloading and deploying as a container to a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Kubernetes"]}," cluster."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For prerequisites, including licenses, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/airgap/airgap_prerequisites"},"children":["Prerequisites"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"download-helm-chart","__idx":11},"children":["Download Helm Chart"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following information is required to download and use AIDR:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the following command in a terminal to log in to the HiddenLayer registry."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<registry username>"]}," with the Registry Username."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<License ID>"]}," with the AIDR License ID. This value is used as the registry password."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For information about licenses, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/airgap/airgap_prerequisites#licenses"},"children":["Prerequisites"]},"."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"helm registry login registry.hiddenlayer.ai --username <registry username> --password <License ID>\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pull the helm chart. Alternatively, use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["helm pull"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"helm fetch oci://registry.hiddenlayer.ai/aidr-genai/aidr-genai --version 3.3.0\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Store the downloaded chart on the system where you will deploy AIDR from."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"download-aidr-images","__idx":12},"children":["Download AIDR Images"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the following commands in the terminal to download the AIDR images."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Docker Command Fails"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When using Docker commands, like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["docker pull"]},", if you get a permission denied message, try using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sudo docker"]},", like ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sudo docker pull"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Alternatively, add the user to the appropriate Docker group for Docker daemon permissions."]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the following command in a terminal to log in to the HiddenLayer image registry."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The username is the Registry Username."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The password is the AIDR License ID."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For information about licenses, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/products/airgap/airgap_prerequisites#licenses"},"children":["Prerequisites"]},"."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker login images.hiddenlayer.ai\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run each of the following commands to pull the images."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker pull --platform linux/amd64 images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/distro-enterprise-aidr-genai:26.5.0\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker pull --platform linux/amd64 images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/replicated-sdk-image:v1.14.0\ndocker pull --platform linux/amd64 images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/replicated-license-enforcer:0.6.0\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Tag the images to a private registry. Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["%YOUR-REGISTRY%"]}," with your private registry information."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker tag images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/distro-enterprise-aidr-genai:26.5.0 %YOUR-REGISTRY%/distro-enterprise-aidr-genai:26.5.0\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker tag images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/replicated-sdk-image:v1.14.0 %YOUR-REGISTRY%/replicated-sdk-image:v1.14.0\ndocker tag images.hiddenlayer.ai/proxy/aidr-genai/ghcr.io/hiddenlayer-engineering/replicated-license-enforcer:0.6.0 %YOUR-REGISTRY%/replicated-license-enforcer:0.6.0\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Push the images to a private registry. Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["%YOUR-REGISTRY%"]}," with your private registry information. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note"]},": Make sure you are logged in to your private registry before pushing the images."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker push %YOUR-REGISTRY%/distro-enterprise-aidr-genai:26.5.0\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"docker push %YOUR-REGISTRY%/replicated-sdk-image:v1.14.0\ndocker push %YOUR-REGISTRY%/replicated-license-enforcer:0.6.0\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"aidr-configyaml","__idx":13},"children":["AIDR: Config.yaml"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To deploy AIDR, a config.yaml file must be generated with the appropriate settings."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following is needed for the config.yaml file:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HiddenLayer Platform Hostname"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This is the hostname you will use for the Airgap AISec Platform."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Client ID and Client Secret"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["These can be generated under in the Platform Console, go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Admin > API Keys"]},"."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Provider information and credentials"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Providers include OpenAI, OpenAI Azure, Gemini, Anthropic, and AWS."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config.yaml"]}," file, set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["imageRegistry"]}," to point to the registry storing the downloaded files."]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Notes"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A Client ID and Secret are only required when connecting AIDR to the Airgapped Platform."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set “type” in the config.yaml to “disabled” to install AIDR without connecting to the Airgapped Platform."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set “type” to “hybrid” to install AIDR and connect to the Airgapped Platform."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If AIDR has already been installed, change the “type” value in the config.yaml and run a helm upgrade command."]}]}]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":["Example config.yaml File (Click to expand)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"global:\n  ## imageRegistry is the FULL registry path — host + project/namespace — i.e. the same value you\n  ## mirrored the images to in the docker tag / docker push steps (%YOUR-REGISTRY%).\n  ## e.g. harbor.example.com/aidr-genai\n  imageRegistry: <registry host>/<project>\n  imagePullSecrets:\n    - name: <name of existing image pull secret>\n\naidr_genai:\n  ## If the HiddenLayer Platform is configured to use your own / private CA certificate,\n  ## uncomment env.SSL_CERT_FILE and config.ca_bundle.crt below so AIDR trusts that CA and\n  ## can communicate with the Platform over TLS.\n  # env:\n  #   SSL_CERT_FILE: $(CONFIG_PATH)/ca_bundle.crt   # makes the proxy trust the CA in ca_bundle.crt below\n  config:\n    # ca_bundle.crt: |                              # uncomment and paste your platform CA certificate (PEM)\n    #   -----BEGIN CERTIFICATE-----\n    #   <your platform CA certificate PEM>\n    #   -----END CERTIFICATE-----\n    settings.yaml: |\n      ## Replace '<HiddenLayer Platform Hostname>' in the base-url fields with desired url.\n      ## This url should be the hostname defined for your airgapped Platform Console.\n      platform:\n        api-connection:\n          base-url: \"https://<HiddenLayer Platform Hostname>\"\n          max-retry-count: 3\n          ## Set type: disabled to install AIDR without a connection to the Platform.\n          ## If AIDR is deployed and you want to change the type, update this yaml file, then run a helm upgrade command.\n          type: \"hybrid\"\n        auth-n:\n          base-url: \"https://<HiddenLayer Platform Hostname>/oauth2/token\"\n          # client-id and client-secret are obtained from the Hiddenlayer Platform Console > Admin > API Keys\n          client-id:\n          client-secret:\n        license: \"<hiddenlayer_license>\"\n\n      aidr-genai:\n        proxy:\n          log-level: \"info\"\n\n          request:\n            default-requester: \"unknown\"\n            max-size-in-bytes: 1000000\n\n          response:\n            max-size-in-bytes: 1000000\n\n          device:\n            type: \"cpu\"  # cuda\n            datatype: \"fp32\"\n\n          security-degradation:\n            enable-unsecured-stream-requests: true\n            enable-unsecured-reverse-proxy-routes: false\n            enable-rule-override-request-headers: false\n            enable-remote-configuration: false\n\n          secrets-manager:\n            - source:  # aws | azure\n              url:\n              secrets:\n                ## a mapping of AIDR-G setting names to secret names in the manager, e.g.:\n                # HL_LICENSE: \"arn:aws:secretsmanager:us-east-1:545009838560:secret:HL_LICENSE-ogIwCH\"\n\n          provider:\n            timeout-in-seconds: 600\n\n            openai:\n              default-model:\n              base-url:  # \"https://api.openai.com\"\n              api-key:\n\n            openai-azure:\n              base-url:\n                scheme:  # \"https\"\n                host:  # \".openai.azure.com\"\n              api-key:\n\n            openai-tgi-variants:\n              #- provider-name:\n              #  endpoint-name:\n              #  base-url:\n              #  api-key:\n\n            openai-custom-routes:\n              #- provider-name:\n              #  route-prefix:\n              #  base-url:\n              #  enrich-response:\n              #  api-key:\n\n            azure:\n              base-url:  # \"https://\"\n              region:  # \"eastus\"\n              tenant-id:\n              client-id:\n              client-secret:\n\n            gemini:\n              base-url:  # \"https://generativelanguage.googleapis.com\"\n              api-key:\n\n            anthropic:\n              base-url:  # \"https://api.anthropic.com\"\n              version:  # \"2023-06-01\"\n              api-key:\n\n            aws:\n              region:  # \"us-east-1\"\n              enable-instance-profile-credentials: false\n              credential-provider: \"instance\"  # container\n\n              sagemaker:\n                base-url:  # \"https://runtime.sagemaker.{region}.amazonaws.com\"\n\n              bedrock:\n                base-url:  # \"https://bedrock-runtime.{region}.amazonaws.com\"\n\n              credentials:\n                #- name:\n                #  access-key-id:\n                #  secret-access-key:\n                #  session-token:\n                #  region:\n                #  sagemaker-base-url:\n                #  bedrock-base-url:\n\n        detector:\n          engine:\n            chat-context-window: \"last\"  # full\n            log-chat-context: true\n\n            on-block:\n              message: \"Message was blocked.\"\n              include-reason: true\n\n            modalities:\n              - type: \"image\"\n                severity: \"medium\"\n                on-alert:\n                  proxy-action: \"allow\"  # block\n              - type: \"tool-use\"\n                severity: \"medium\"\n                on-alert:\n                  proxy-action: \"allow\"  # block\n\n          prompt-injection:\n            enabled: true\n            severity: \"high\"\n            scan-type: \"full\"\n            batching:\n              max-count: 10\n            on-alert:\n              proxy-action: \"allow\"  # block\n            overrides:\n              #- name:\n              #  action: \"suppress-alert\"  # generate-alert\n              #  match:\n              #    value:\n              #    type: \"substring\"\n\n          personally-identifiable-information:\n            enabled: true\n            severity: \"medium\"\n            entity-exclusions:\n            on-alert:\n              proxy-action: \"allow\"  # block, redact\n              redaction-type: \"replace-with-entity\"  # replace-with-redacted\n            overrides:\n              #- name:\n              #  action: \"suppress-alert\"  # generate-alert\n              #  match:\n              #    value:\n              #    type: \"regex\"\n            scope:\n              input:\n                # enabled:\n                # entity-exclusions:\n                # on-alert:\n                #   proxy-action:\n                #   redaction-type:\n              output:\n                # enabled:\n                # entity-exclusions:\n                # on-alert:\n                #   proxy-action:\n                #   redaction-type:\n\n          code:\n            enabled: true\n            on-alert:\n              proxy-action: \"allow\"  # block\n            timeout:\n              in-seconds: 0\n              is-detection: true\n            scope:\n              input:\n                # enabled:\n                # on-alert:\n                #   proxy-action:\n              output:\n                # enabled:\n                # on-alert:\n                #   proxy-action:\n\n          url:\n            enabled: true\n            scope:\n              input:\n                # enabled:\n              output:\n                # enabled:\n\n          denial-of-service:\n            enabled: true\n            severity: \"high\"\n            token-threshold:\n            on-alert:\n              proxy-action: \"allow\"  # block\n\n          guardrail:\n            enabled: true\n            severity: \"low\"\n            classifier:\n              refusal:\n                enabled: true\n            on-alert:\n              proxy-action: \"allow\"  # block\n\n          language:\n            enabled: false\n            severity: \"medium\"\n            allowed-languages:\n              # - EN\n              # - ES\n            on-alert:\n              proxy-action: \"allow\"  # block\n\n","lang":"yaml"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"install","__idx":14},"children":["Install"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a config.yaml file to customize installation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["See above for an example config.yaml file."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the following command to deploy AIDR."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"helm install aidr-genai [locationofdownloadedhelmchart] -f config.yaml -n aidr-genai --create-namespace\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"known-issue","__idx":15},"children":["Known Issue"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is a known issue for where provider credentials for AWS are not utilized when using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config.yaml"]}," file."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Environment variables cannot be used with the  installer to set AWS credentials."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Work around"]},": Add an Authorization header in the request to the  LLM Proxy."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"#Example\nAuthorization: Credential=AWSAccessKeyId\n"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"#Example\ncurl -XPOST http://localhost:8000/api/v1/proxy/bedrock/model/meta.llama2-13b-chat-v1 \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Credential=AWSAccessKeyId\" \\\n  -d '{\n    \"prompt\": \"Hello, how are you?\",\n    \"max_tokens_to_sample\": 300\n  }'\n"},"children":[]}]}]}]},"headings":[{"value":"Airgap Installation","id":"airgap-installation","depth":1},{"value":"Airgap AISec Platform Deployment","id":"airgap-aisec-platform-deployment","depth":2},{"value":"Download","id":"download","depth":3},{"value":"Install Admin Console","id":"install-admin-console","depth":3},{"value":"Admin Console Setup","id":"admin-console-setup","depth":3},{"value":"Validate the environment & deploy HiddenLayer Platform","id":"validate-the-environment--deploy-hiddenlayer-platform","depth":3},{"value":"Platform Console - API Key","id":"platform-console---api-key","depth":3},{"value":"Supply Chain CLI","id":"supply-chain-cli","depth":2},{"value":"Download","id":"download-1","depth":3},{"value":"Running Supply Chain CLI","id":"running-supply-chain-cli","depth":3},{"value":"AIDR","id":"aidr","depth":2},{"value":"Download Helm Chart","id":"download-helm-chart","depth":3},{"value":"Download AIDR Images","id":"download-aidr-images","depth":3},{"value":"AIDR: Config.yaml","id":"aidr-configyaml","depth":3},{"value":"Install","id":"install","depth":3},{"value":"Known Issue","id":"known-issue","depth":2}],"frontmatter":{"seo":{"title":"Airgap Installation"}},"lastModified":"2026-06-16T22:48:11.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/products/airgap/airgap_install","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}