What Tensorlake manages
Tensorlake publishes the Sandbox Proxy image, Kubernetes manifests, executor software, and executor configuration. Tensorlake also runs the control plane. The executor provisioner checks for approved updates and applies them after you enroll the host.What you manage
You manage the AWS account, network, EKS cluster, EC2 instances, S3 bucket, DNS, and IAM permissions. You also decide which networks can reach the public endpoint and which AWS identities can access project data.Before you begin
Tensorlake requirements
You need a Tensorlake project with Self-hosted Compute enabled. You also need permission to change the project settings and create a project-admin API key. If the Self-hosted Compute page is not available, contact Tensorlake. The same project-admin API key can prepare the Sandbox Proxy and enroll the first executor. Treat the key as a secret. Do not save it in an EC2 user-data script.AWS account requirements
Prepare these resources in the AWS Region where you want to run sandboxes:- A VPC for the EKS cluster and the executors.
- An EKS cluster.
- The AWS Load Balancer Controller, version
2.7.2or later. - An IAM role that gives the controller permission to create an AWS Network Load Balancer (NLB), target groups, and security-group rules.
- A public DNS zone for the sandbox domain.
- An AWS Certificate Manager (ACM) certificate for the sandbox domain.
- An S3 bucket for runtime data, built images, and durable sandbox snapshots.
- An EC2 instance profile that can use the project bucket.
- Capacity for at least one supported bare-metal EC2 instance:
i7i.metal-24xlori7i.metal-48xl.
Sandbox base domain
Choose the base domain before you create certificates or manifests. Every sandbox receives a subdomain below this base domain. For example, a base domain ofsandboxes.customer.example produces URLs such as
https://<sandbox-id>.sandboxes.customer.example.
The public endpoint must be an HTTPS origin. Do not add a port or path.
1. Prepare project storage
Use a dedicated bucket for the project. It is the durable home for sandbox state, and executors write built sandbox images and snapshots into it. Keeping the bucket in the executor Region reduces latency and AWS data transfer costs. Block public access to the bucket. Enable encryption. If you use an AWS Key Management Service (AWS KMS) customer-managed key, give the executor instance role permission to use that key. The executor instance role needs these S3 permissions for the bucket:
The enrollment preflight writes, reads, and deletes a small object under each
derived storage path. This test stops the installation before a sandbox starts
if the instance role cannot use the storage.
Attach the role through an EC2 instance profile. Do not put static AWS access
keys on the host. The Sandbox Proxy does not need this role or any other S3
permission.
2. Prepare the AWS network
Subnet layout
Hold the EKS cluster and the executors in one VPC. That is what lets the Sandbox Proxy reach each executor privately. If using VPC CIDR10.90.0.0/16, you can set up this subnet layout, one
subnet per Availability Zone:
Tag all three public subnets with
kubernetes.io/role/elb=1 so the AWS Load
Balancer Controller can select them without relying on route-table discovery.
See the
Amazon EKS NLB requirements.
Load balancer security group
The public NLB terminates TLS and sends traffic to the Sandbox Proxy pods. Create a security group for the NLB:
The generated Service asks the AWS Load Balancer Controller to manage the
matching backend security-group rules. The controller IAM role must include
permission to add and remove those rules.
Executor security group
The Sandbox Proxy reaches each executor over the private AWS network. Do not expose executor ports to the internet. Allow traffic from the Sandbox Proxy pod network or security group to the executor security group:
mTLS means mutual Transport Layer Security. Both endpoints use certificates to
verify each other.
Outbound access
Allow outbound TCP443 from the EKS nodes and executor hosts to Tensorlake
services and required AWS services. The EKS nodes must pull the public Sandbox
Proxy image from public.ecr.aws. The executor must reach EC2 instance metadata
through IMDSv2 and must reach the configured S3 bucket.
3. Create the public certificate
Request an ACM certificate in the same AWS account and Region as the NLB. Add both names to the certificate:ISSUED.
4. Prepare the Sandbox Proxy
The preparation script creates the customer-specific mTLS certificate, two SSH key pairs, and a local Kustomize overlay. Kustomize is a Kubernetes manifest customization tool. The script creates files only in the output directory. It does not change your cluster or AWS account. Download and run the script:5. Configure the Tensorlake project
Open the project settings in Tensorlake Cloud. Find Node configuration and set the bucket URI:6. Deploy the Sandbox Proxy
Confirm the active Kubernetes context:443
uses pod port 9080. The listener on port 22 uses pod port 2222.
7. Create DNS records and activate the endpoint
Create two public DNS alias or CNAME records. Point both records to the NLB hostname:Hostname test.sandboxes.customer.example does match certificate.
8. Launch the first executor
Launch a bare-metal EC2 instance with Ubuntu24.04. Attach the instance
profile from the storage step. The host must expose /dev/kvm because
Tensorlake uses hardware virtualization to isolate sandboxes.
The instance must also have local NVMe instance storage. Enrollment formats
those disks and mounts them at /mnt/data, which holds container images,
sandbox images, and the local snapshot cache. Amazon EBS volumes are never used
for this, so an instance type without local NVMe cannot run sandboxes.
These instance types meet both requirements:
9. Enroll the executor
In Tensorlake Cloud, open Self-hosted Compute, select Add node, and copy the bootstrap command. It has this form:10. Verify the complete path
Install the Tensorlake CLI if thetl command is not available:
22 is enabled:
Add more executors
Each executor needs its own EC2 instance and enrollment identity. Launch another supported host with the same network and instance-profile configuration. Then run a new command from Self-hosted Compute → Add node. The project storage and Sandbox Proxy settings apply to all executors in the project. You do not need another NLB or Sandbox Proxy deployment for each host.Updates and key rotation
The provisioner runs as a service on every enrolled executor. It checks Tensorlake for new approved profiles and applies complete updates. A failed update keeps the last valid revision active. To rotate the Sandbox Proxy mTLS and SSH keys, runprepare.sh again with a new
output directory. Review and apply the new resources. The certificate
fingerprint starts a rolling pod update. Then replace SSH proxy public key
with the new outbound.key.pub value.
Keep the previous output directory in secure storage until the rollout and
end-to-end test pass.