{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Prerequisites","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":"prerequisites","__idx":0},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"licenses","__idx":1},"children":["Licenses"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["During Onboarding"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Registry Username"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Registry Username is provided during onboarding and is used to authenticate to HiddenLayer registries when downloading product images and Helm charts."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This username is shared across AISec Platform, Supply Chain, and Runtime."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["License IDs"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["License IDs are provided during onboarding and are used as the registry password when downloading HiddenLayer products."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Product"},"children":["Product"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"License ID"},"children":["License ID"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["AISec Platform"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["AISec Platform License ID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Supply Chain"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Model Scanner License ID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Runtime (AIDR)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["AIDR License ID"]}]}]}]}]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HiddenLayer License"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The HiddenLayer License (Supply Chain and AIDR-G) is used for product operation and licensing after deployment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This value is used by Supply Chain and AIDR during runtime and should not be used for registry authentication."]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["After the Airgap AISec Platform is Deployed"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["API client ID and client secret."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Can be created after the Platform Console is deployed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Used with Supply Chain CLI and Runtime."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"hostname","__idx":2},"children":["Hostname"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A hostname for the HiddenLayer AISec Platform."]},{"$$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":"Heading","attributes":{"level":2,"id":"compute","__idx":3},"children":["Compute"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"airgap","__idx":4},"children":["Airgap"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Linux-based operating system"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["x86_64 (ARM64 is not supported)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The controllers and workers require the following minimum specifications:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Controller node:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["CPU: 4 cores/threads"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RAM: 16GB"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Disk space: 75GB (10,000 IOPS speed)"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Worker node:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["CPU: 8 cores/threads"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RAM: 32GB"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Disk space: 75GB (10,000 IOPS speed)"]}]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The number of controllers and workers depends on your organization's high availability (HA) requirements."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The minimum for deployment is one controller node and one worker node."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note"]},": This is not high availability. HiddenLayer validated the deployment with one controller node and two worker nodes."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Using virtual machines is recommended, but using physical systems is an option."]}]}]},{"$$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":["Do not run Kubernetes on the Linux system where the Airgapped AISec Platform is installed."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Kubernetes is installed as part of the Airgapped AISec Platform installation."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Airgapped AISec Platform is not supported as a container deployment."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Example: ECS"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The minimum specifications listed are based off validation performed by HiddenLayer. Node sizing and hardware specifications are dependent on workload needs."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"aidr","__idx":5},"children":["AIDR"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Linux-based operating system"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["x86_64 (ARM64 is not supported)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["AIDR requires the following minimum specifications:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["CPU: 32 cores/threads (per K8s cluster)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RAM: 128GB (per K8s cluster)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Number of K8s clusters: 2"]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Notes"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For the above resource example, a GPU is not required."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Using Azure AKS as an example, one K8s cluster should be the equivalent to an AKS Standard_D32_v3."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"scaling-recommendations","__idx":6},"children":["Scaling Recommendations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["AIDR is horizontally scalable. The latency and throughput for each replica depends on many factors in the deployed environment, including underlying node type, network conditions, and resource contention."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To make the best use of your underlying hardware, we recommend the following:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replica count"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Allocate 8 Kubernetes CPU units for each replica."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Allocate as many replicas as 8 CPU replicas can fit on to the node."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, if the underlying node type is Azure's Standard_D32_v3, we recommend setting the following Kubernetes parameters:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"replicas:\n  min: 4\n  max: 4\nresources:\n  requests:\n    cpu: 8\n    memory: 4096Mi\n"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Thread count per replica"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set the environment variable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OMP_NUM_THREADS: 8"]},"."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This value will only improve performance if the guidance in the previous step (Replica Count) is applied."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"supply-chain","__idx":7},"children":["Supply Chain"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Linux-based operating system"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["x86_64 (ARM64 is not supported)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Supply Chain requires the following minimum specifications:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["CPU: 8 cores/threads"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["RAM: 168GB"]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Notes"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For the above resource example, a GPU is not required."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Performance will vary based on resources. Typically, the more resources the better the performance."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"tools","__idx":8},"children":["Tools"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following tools are required for the controller and worker nodes."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["systemd"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["curl"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following is required for the Supply Chain CLI."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Docker or Docker Desktop"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following is required for AIDR."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Docker or Docker Desktop"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Kubernetes cluster"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Helm"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"services","__idx":9},"children":["Services"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The below services are required for the Platform to be deployed and to function as expected."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Service"},"children":["Service"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Service Type"},"children":["Service Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirements"},"children":["Requirements"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PostgreSQL"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Database"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["PostgreSQL version is 16.8 or higher"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Requires user account with superuser access"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Requires two PostgreSQL extensions"]},{"$$mdtype":"Tag","name":"ul","attributes":{"style":{"listStyleType":"circle"}},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/citusdata/pg_cron","target":"_blank"},"children":["pg_cron"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://github.com/pgpartman/pg_partman","target":"_blank"},"children":["pg_partman"]}]}]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required for storing Supply Chain results permanently."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Apache Kafka"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Event Streaming"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Kafka version is 3.6 or higher"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Requires basic authentication credentials for user name and password"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required for storing scanning results and communications to the Console."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["S3-compatible blob storage service"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["S3 compatible storage"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["N/A"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HiddenLayer tested and validated with Minio"]},{"$$mdtype":"Tag","name":"ul","attributes":{"style":{"listStyleType":"circle"}},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Minio version 2025-07-23T15-54-02Z or later would be required"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Examples of S3-compatible storage services include"]},{"$$mdtype":"Tag","name":"ul","attributes":{"style":{"listStyleType":"circle"}},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OpenShift Data Foundation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cloudian"]}]}]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OpenSearch"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Data Search and Analytics"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OpenSearch version is 2.6.0 or higher"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Requires basic authentication credentials for user name and password"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required for internal authentication purposes."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"network","__idx":10},"children":["Network"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For complete functionality, the following ports need to be open and allow ingress on the Linux systems where the Airgapped AISec Platform is installed."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["3000"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["80"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["443"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"other-requirements","__idx":11},"children":["Other Requirements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure Network Time Protocol (NTP) is enabled and the system clock is synchronized."]}]}]},"headings":[{"value":"Prerequisites","id":"prerequisites","depth":1},{"value":"Licenses","id":"licenses","depth":2},{"value":"Hostname","id":"hostname","depth":2},{"value":"Compute","id":"compute","depth":2},{"value":"Airgap","id":"airgap","depth":3},{"value":"AIDR","id":"aidr","depth":3},{"value":"Scaling Recommendations","id":"scaling-recommendations","depth":4},{"value":"Supply Chain","id":"supply-chain","depth":3},{"value":"Tools","id":"tools","depth":2},{"value":"Services","id":"services","depth":2},{"value":"Network","id":"network","depth":2},{"value":"Other Requirements","id":"other-requirements","depth":2}],"frontmatter":{"seo":{"title":"Prerequisites"}},"lastModified":"2026-06-03T21:39:28.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/products/airgap/airgap_prerequisites","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}