terradev-cli 5.3.2__tar.gz → 5.3.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- terradev_cli-5.3.4/.terradev/custom_providers.example.yaml +39 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Dockerfile +1 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/PKG-INFO +17 -119
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/README.md +16 -118
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/pyproject.toml +1 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/README.md +22 -110
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/__init__.py +1 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/cli.py +374 -57
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/checkpoint_manager.py +2 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/preflight_validator.py +2 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/terradev_engine.py +3 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/training_monitor.py +2 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/training_orchestrator.py +2 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/mcp/server.py +18 -6
- terradev_cli-5.3.4/terradev_cli/providers/__init__.py +74 -0
- terradev_cli-5.3.4/terradev_cli/providers/base_provider.py +526 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/e2e_networks_provider.py +4 -4
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/fluidstack_provider.py +2 -2
- terradev_cli-5.3.4/terradev_cli/providers/gpu_catalog.py +643 -0
- terradev_cli-5.3.4/terradev_cli/providers/provider_profiles.py +541 -0
- terradev_cli-5.3.4/terradev_cli/providers/registry.py +273 -0
- terradev_cli-5.3.4/terradev_cli/providers/types.py +258 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/yottalabs_provider.py +5 -5
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli.egg-info/PKG-INFO +17 -119
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli.egg-info/SOURCES.txt +5 -1
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_provider_conformance.py +25 -26
- terradev_cli-5.3.2/requirements.txt +0 -56
- terradev_cli-5.3.2/terradev_cli/providers/__init__.py +0 -51
- terradev_cli-5.3.2/terradev_cli/providers/base_provider.py +0 -241
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/.env.example +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/.github/workflows/action.yml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/.github/workflows/ci.yml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/.github/workflows/release.yml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/.github/workflows/static.yml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Deployment Package/BNF_GRAMMAR.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Deployment Package/LIFECYCLES.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Deployment Package/architecture.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Deployment Package/overview.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Deployment Package/security.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Deployment Package/troubleshooting.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/Dockerfile.test +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/LICENSE +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/MANIFEST.in +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/agentic-template/helm/values-agentic.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/agentic-template/k8s/fleet-manifests.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/README.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/helm/values-glm5.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/k8s/hpa.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/k8s/namespace.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/k8s/pdb.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/k8s/service.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/k8s/sglang-deployment.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/k8s/vllm-deployment.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/task.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/terraform/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/terraform/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/glm-5/terraform/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/llmd-template/README.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/llmd-template/helm/values-llmd.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/llmd-template/k8s/gateway.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/llmd-template/k8s/leaderworkerset.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/llmd-template/k8s/llminferenceservice.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/llmd-template/task.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/README.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/helm/values-moe.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/k8s/deployment.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/k8s/hpa.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/k8s/namespace.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/k8s/pdb.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/k8s/service.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/task.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/terraform/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/terraform/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/moe-template/terraform/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/rag-template/README.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/rag-template/helm/values-rag.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/rag-template/k8s/deployment.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/clusters/rag-template/terraform/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/demo/RECORDING_GUIDE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/demo/generate_gif.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/demo/terradev-demo.gif +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/API_DOCUMENTATION.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/BingSiteAuth.xml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/USER_GUIDE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/VLLM_OPTIMIZATION_GUIDE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/architecture.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/index.html +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/overview.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/robots.txt +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/sitemap.xml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/docs/test_spot_provision.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/aws_ssm_starter.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/config.example.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/demo_k8s_config.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/direct_aws_starter.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/ec2_user_data_starter.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/example-pipeline.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/kubernetes_training_deployment.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/simple_ssm_starter.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/ssh_server_starter.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/examples/start_aws_servers.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/helm/terradev/Chart.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/helm/terradev/templates/_helpers.tpl +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/helm/terradev/templates/deployment.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/helm/terradev/values.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/infrastructure/bucket-policy.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/infrastructure/grafana_training_dashboard.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/infrastructure/kubernetes/microservices.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/infrastructure/terraform/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/infrastructure/terraform/parallelism.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/cli-tool.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/cloud-management-widgets.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/cloud-provider-apis.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/critical-widgets.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/devops-cicd-widgets.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/devops-essential-tools.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/docker-integration.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/kubernetes-operator.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/integrations/mlflow-integration.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/datadog/README.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/datadog/dashboard.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/datadog/monitors.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/datadog/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/datadog/provider.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/datadog/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/datadog/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/modules/prometheus_training_config.yml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/INTEGRATION_GUIDE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/PERFORMANCE_OPTIMIZATIONS.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/README.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-artifact-verification/src/verifier.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-authentication/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-authentication/src/encoding.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-authentication/src/hmac.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-authentication/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-authentication/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/src/cache.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cache-eviction/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-command-executor/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-command-executor/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-config-validator/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-config-validator/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-config-validator/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-config-validator/src/validator.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-connection-pool/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-connection-pool/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-connection-pool/src/pool.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-connection-pool/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/src/calculator.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cost-calculator/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cost-scaler/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-cost-scaler/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-credential-vault/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-credential-vault/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-credential-vault/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-credential-vault/src/vault.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-dag-executor/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-dag-executor/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/src/lock.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-distributed-lock/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/src/graph.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-egress-optimizer/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-event-bus/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-event-bus/src/bus.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-event-bus/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-event-bus/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-governance/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-governance/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-gpu-discovery/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-gpu-discovery/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/src/topology.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-gpu-topology/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-helm-generator/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-helm-generator/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-mcp-codec/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-mcp-codec/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-mcp-optimizer/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-mcp-optimizer/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-price-intelligence/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-price-intelligence/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-quota-manager/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-quota-manager/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-quota-manager/src/manager.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-quota-manager/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-resource-pool/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-resource-pool/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-resource-pool/src/pool.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-resource-pool/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-result-compressor/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-result-compressor/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-semantic-router/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-semantic-router/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/src/snapshot.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-snapshot-manager/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-state-machine/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-state-machine/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-state-machine/src/state.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-state-machine/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-telemetry/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-telemetry/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-telemetry/src/pipeline.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-telemetry/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-tool-registry/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-tool-registry/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/src/estimator.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-vram-estimator/src/types.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-warm-pool/Cargo.toml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/rust/terradev-warm-pool/src/lib.rs +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/scripts/action.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/scripts/gpu-check.sh +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/setup/Lambda Cloud API spec 1.8.3.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/setup/docker-compose.yml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/setup/nginx.conf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/setup/setup.sh +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/setup.cfg +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/CHANGELOG.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/COMPLETE_COMMAND_REFERENCE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/COMPLETE_INTEGRATION_GUIDE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/IMPLEMENTATION_SUMMARY.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/MAKING_SPOT_WORK_FOR_STATEFUL_WORKLOADS.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/SGLANG_COMMAND_GUIDE.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/TERRADEV_STACK_CHART.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/__main__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/cli_hf_spaces.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/cli_karpenter.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/agentic_provisioner.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/agentic_topology.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/async_config.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/auth.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/auto_lineage.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/cache_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/command_executor.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/config.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/config_validator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/cost_scaler.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/cost_tracker.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/credential_vault.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/cuda_graph_integrator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/dag_executor.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/data_governance.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/dataset_stager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/deployment_router.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/distributed_lock.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/drift_detector.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/egress_cost_monitor.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/egress_optimizer.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/evaluation_orchestrator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/event_system.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/gitops_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/gpu_discovery.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/gpu_topology.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/helm_generator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/hf_cli_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/hf_smart_templates.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/hf_spaces.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/inference_router.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/inference_spot_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/job_state_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/kv_cache_checkpoint_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/kv_cache_checkpoint_tests.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/kv_sharing.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/manifest_cache.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/manifest_example.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/mig_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/migration_orchestrator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/mla_vram_estimator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/mla_vram_tests.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/model_orchestrator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/oidc_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/optimization_config.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/parallel_provisioner.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/pd_transport.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/pipeline_schema.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/price_discovery.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/price_intelligence.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/public_ip_billing_tracker.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/quick_start.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/quota_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/rate_limiter.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/rust_telemetry.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_router.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/base_signal.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/complexity_signal.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/domain_signal.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/keyword_signal.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/language_signal.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/modality_signal.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/orchestrator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/semantic_signals/safety_signal.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/session_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/ssh_key_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/telemetry.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/trace_viewer.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/user_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/warm_pool_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/weight_streaming_benchmarks.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/core/weight_streaming_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/cost_optimizer.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/credential_prompt.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/demo.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/entry_point.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/databricks_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/datadog_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/helicone_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/prometheus_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/integrations/wandb_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/k8s/terraform_wrapper.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-models.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx-platform.yaml +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/kubernetes/inferx_setup.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/mcp/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/agentic_serving.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/drift_retrain_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/dvc_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/guardrails_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/huggingface_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/kserve_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/kubernetes_enhanced.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/kubernetes_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/langchain_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/langfuse_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/langgraph_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/lmcache_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/mlflow_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/model_router.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/ollama_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/phoenix_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/qdrant_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/ray_enhanced.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/ray_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/sglang_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/vllm_service.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/ml_services/wandb_enhanced.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/optimization/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/optimization/auto_optimizer.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/optimization/cuco_optimizer.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/LATITUDE_PROVIDER.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/alibaba_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/aws_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/azure_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/baseten_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/coreweave_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/crusoe_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/demo_mode.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/digitalocean_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/gcp_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/hetzner_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/huggingface_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/hyperstack_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/inferx_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/lambda_labs_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/latitude_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/oracle_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/ovhcloud_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/provider_factory.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/real_pricing.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/runpod_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/siliconflow_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/tensordock_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/providers/vastai_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/requirements.txt +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/requirements_minimal.txt +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/main.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/modules/networking/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/outputs.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/providers.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/terraform/variables.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/test_summary.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/utils/__init__.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli/utils/formatters.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli.egg-info/dependency_links.txt +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli.egg-info/entry_points.txt +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli.egg-info/requires.txt +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terradev_cli.egg-info/top_level.txt +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform.tfvars.example +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_optimization/backend.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_optimization/error_handling.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_optimization/parallel_provisioning.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_optimization/storage_choice_matrix.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_optimization/test_error_handler.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_optimization/versions.tf +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/audit_trail.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/audit_trails.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/decision_engine.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/decision_logs.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/operations.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/terraform_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/terraform_plans.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/transparency_demo.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/terraform_transparency/transparency_report.json +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/CREDENTIAL_STRATEGY.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/INTEGRATION_STRATEGY.md +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/Makefile +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/ci_pipeline.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/conftest.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_cli_ux_battle.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_cli_ux_battle_fixed.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_cli_ux_final.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_final_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_integrated_optimization.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_p10_production_failover.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_sso_phase1.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/root_tests/test_vllm_optimization.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/simple_test.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_ai_integrations.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_checkpoint_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_cli_smoke.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_dag_executor.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_flashoptim.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_integration.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_job_state_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_k8s_regression.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_latitude_provider.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_major_providers.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_mcp_handlers.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_new_providers.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_providers.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_semantic_router.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_sglang_optimization.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_ssh_key_manager.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_training_monitor.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_training_orchestrator.py +0 -0
- {terradev_cli-5.3.2 → terradev_cli-5.3.4}/tests/test_vllm_features.py +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Custom Provider Profiles Example
|
|
2
|
+
# Copy this file to ~/.terradev/custom_providers.yaml and add your custom providers
|
|
3
|
+
# Then load with: terradev providers load-profiles ~/.terradev/custom_providers.yaml
|
|
4
|
+
|
|
5
|
+
profiles:
|
|
6
|
+
# Example: Internal GPU cluster
|
|
7
|
+
my_internal_cluster:
|
|
8
|
+
api_style: rest
|
|
9
|
+
auth_type: bearer
|
|
10
|
+
egress_cost: 0.0
|
|
11
|
+
supports_spot: false
|
|
12
|
+
compute_model: vm
|
|
13
|
+
isolation_level: vm
|
|
14
|
+
supports_stop_start: true
|
|
15
|
+
region_specific_availability: true
|
|
16
|
+
|
|
17
|
+
# Example: Custom cloud provider
|
|
18
|
+
my_cloud_provider:
|
|
19
|
+
api_style: rest
|
|
20
|
+
auth_type: x_api_key
|
|
21
|
+
egress_cost: 0.02
|
|
22
|
+
supports_spot: true
|
|
23
|
+
spot_interruption_notice_minutes: 5
|
|
24
|
+
rate_limit_per_minute: 60
|
|
25
|
+
compute_model: vm
|
|
26
|
+
isolation_level: vm
|
|
27
|
+
supports_stop_start: true
|
|
28
|
+
provision_requires_location_id: true
|
|
29
|
+
|
|
30
|
+
# Example: GPU marketplace with SSH quirks
|
|
31
|
+
my_gpu_marketplace:
|
|
32
|
+
api_style: rest
|
|
33
|
+
auth_type: bearer
|
|
34
|
+
egress_cost: 0.01
|
|
35
|
+
supports_spot: true
|
|
36
|
+
ssh_port_fixed: false # Dynamic SSH ports
|
|
37
|
+
compute_model: vm
|
|
38
|
+
isolation_level: vm
|
|
39
|
+
supports_stop_start: true
|
|
@@ -18,7 +18,7 @@ RUN apt-get update && apt-get install -y \
|
|
|
18
18
|
&& rm -rf /var/lib/apt/lists/*
|
|
19
19
|
|
|
20
20
|
# Copy requirements and install Python dependencies
|
|
21
|
-
COPY requirements.txt .
|
|
21
|
+
COPY terradev_cli/requirements.txt .
|
|
22
22
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
23
23
|
|
|
24
24
|
# Install Terradev CLI
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: terradev-cli
|
|
3
|
-
Version: 5.3.
|
|
3
|
+
Version: 5.3.4
|
|
4
4
|
Summary: An imperative command-line-interface for AI workload orchestration.
|
|
5
5
|
Author-email: Terradev Team <team@terradev.com>
|
|
6
6
|
Maintainer-email: Terradev Team <team@terradev.com>
|
|
@@ -93,7 +93,7 @@ Requires-Dist: redis>=5.0.0; extra == "enterprise"
|
|
|
93
93
|
Requires-Dist: PyJWT>=2.8.0; extra == "enterprise"
|
|
94
94
|
Dynamic: license-file
|
|
95
95
|
|
|
96
|
-
# Terradev CLI v5.3.
|
|
96
|
+
# Terradev CLI v5.3.4
|
|
97
97
|
|
|
98
98
|
**An imperative command-line-interface for AI workload orchestration.**
|
|
99
99
|
|
|
@@ -105,18 +105,26 @@ pypi.org/project/terradev-cli/
|
|
|
105
105
|
|
|
106
106
|
Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
|
|
107
107
|
|
|
108
|
-
**NOTES ON 5.3.0**
|
|
109
108
|
|
|
110
|
-
|
|
109
|
+
**NOTES ON 5.3.3**
|
|
111
110
|
|
|
112
|
-
|
|
111
|
+
Added **provider registration and profiling system** for intelligent quirk-aware routing across 23 cloud providers, and registration for custom providers from .yaml import:
|
|
113
112
|
|
|
114
|
-
- **
|
|
113
|
+
- **ProviderProfile schema** (`providers/types.py`): Encodes provider-specific behaviors including API style (REST/GraphQL/JSON:API), authentication type (Bearer/Basic/HMAC/X-Api-Key), rate limits, spot instance support, egress costs, fallback routing, capacity checks, container image pinning, and spot interruption handling.
|
|
115
114
|
|
|
116
|
-
- **
|
|
115
|
+
- **Built-in profiles** (`providers/provider_profiles.py`): Pre-configured profiles for all 23 providers (RunPod, Vast.ai, Lambda Labs, AWS, GCP, Azure, Oracle, Crusoe, CoreWeave, DigitalOcean, Yotta Labs, E2E Networks, FluidStack, Alibaba, OVHcloud, Hetzner, SiliconFlow, TensorDock, Baseten, HuggingFace, Hyperstack, InferX, Latitude).
|
|
116
|
+
|
|
117
|
+
- **Dynamic registration**: Users can register custom provider profiles programmatically or load from YAML/JSON files for internal clusters or proprietary cloud providers.
|
|
118
|
+
|
|
119
|
+
- **Profile-aware routing** (`providers/registry.py`): `ProviderRegistry.ranked_providers()` now incorporates provider profiles into scoring, using egress costs, fallback routing preferences, and spot preemption rates for intelligent provider selection.
|
|
120
|
+
|
|
121
|
+
- **CLI commands** (`terradev providers`): New command group for managing custom provider profiles:
|
|
117
122
|
```bash
|
|
118
|
-
terradev
|
|
119
|
-
terradev
|
|
123
|
+
terradev providers load-profiles ~/.terradev/custom_providers.yaml
|
|
124
|
+
terradev providers list-profiles
|
|
125
|
+
terradev providers show-profile runpod
|
|
126
|
+
terradev providers remove-profile my_custom_provider
|
|
127
|
+
terradev providers export-example -o ~/.terradev/custom_providers.yaml
|
|
120
128
|
```
|
|
121
129
|
|
|
122
130
|
**NOTES ON 5.2.1**
|
|
@@ -611,115 +619,6 @@ echo "3. Test failover: terradev inferx failover --endpoint burst-llm-api --test
|
|
|
611
619
|
echo "4. Update adapters: terradev lora update -n customer-enterprise-a -p ./new-adapters/"
|
|
612
620
|
```
|
|
613
621
|
|
|
614
|
-
## Bare Metal GPU Access with IPMI Management (Latitude.sh)
|
|
615
|
-
|
|
616
|
-
Most GPU clouds give you a virtual machine. You get a slice of hardware, shared kernel paths, and a hypervisor layer between your workload and the GPU. For most ML workloads this is fine. For compliance-sensitive deployments — HIPAA, FedRAMP, financial services, defense contractors — it isn't. Virtualization introduces attestation gaps that auditors reject.
|
|
617
|
-
|
|
618
|
-
Latitude.sh is the only provider in Terradev's fleet that offers both **bare metal** and **virtual machine** GPU instances from the same API. Bare metal gives you the physical server — dedicated hardware, no virtualization overhead, and IPMI out-of-band management.
|
|
619
|
-
|
|
620
|
-
```bash
|
|
621
|
-
# See both bare metal and VM options side by side
|
|
622
|
-
terradev quote -g H100 --provider latitude
|
|
623
|
-
|
|
624
|
-
# Provision dedicated bare metal with IPMI access
|
|
625
|
-
terradev provision --provider latitude --gpu H100 --instance-type bare-metal
|
|
626
|
-
|
|
627
|
-
# Provision a VM (faster spin-up, slightly lower cost)
|
|
628
|
-
terradev provision --provider latitude --gpu H100 --instance-type vm
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
### IPMI: Why It Matters for Enterprise
|
|
632
|
-
|
|
633
|
-
IPMI (Intelligent Platform Management Interface) gives you out-of-band server management independent of the OS and GPU stack. If a training job deadlocks the kernel, you don't wait for a cloud provider ticket — you power-cycle via IPMI directly. Security teams can verify hardware attestation. Compliance frameworks that require dedicated hardware and physical access controls are satisfied.
|
|
634
|
-
|
|
635
|
-
```bash
|
|
636
|
-
# Instance status includes IPMI access endpoint when bare metal
|
|
637
|
-
terradev status --live --provider latitude
|
|
638
|
-
|
|
639
|
-
# Output includes:
|
|
640
|
-
# ipmi_access: true
|
|
641
|
-
# ipmi_endpoint: 10.x.x.x
|
|
642
|
-
# isolation: bare_metal
|
|
643
|
-
```
|
|
644
|
-
---
|
|
645
|
-
|
|
646
|
-
## Local GPU Discovery and Hybrid Compute Pools
|
|
647
|
-
|
|
648
|
-
Every other GPU orchestration platform assumes you're renting compute. Terradev doesn't.
|
|
649
|
-
|
|
650
|
-
If you have a GPU in your local machine — a gaming rig, a workstation, a university compute node you have SSH access to — Terradev can discover it, register it into your compute pool, and incorporate it into provisioning decisions alongside cloud providers.
|
|
651
|
-
|
|
652
|
-
```bash
|
|
653
|
-
# Scan local machine for GPUs
|
|
654
|
-
terradev local scan
|
|
655
|
-
|
|
656
|
-
# Output:
|
|
657
|
-
# Found 1 local GPU:
|
|
658
|
-
# [0] NVIDIA RTX 4090 24GB Driver 545.29 Util: 3% Temp: 42C
|
|
659
|
-
#
|
|
660
|
-
# Register in pool? [y/N]:
|
|
661
|
-
|
|
662
|
-
# Register local GPU into your pool
|
|
663
|
-
terradev local register --name "workstation-4090"
|
|
664
|
-
|
|
665
|
-
# Scan a remote machine you have SSH access to
|
|
666
|
-
terradev local scan --host 192.168.1.50 --user ubuntu --key ~/.ssh/id_rsa
|
|
667
|
-
|
|
668
|
-
# View your full compute pool (local + cloud)
|
|
669
|
-
terradev local pool
|
|
670
|
-
```
|
|
671
|
-
|
|
672
|
-
Pool output:
|
|
673
|
-
```
|
|
674
|
-
COMPUTE POOL (4 resources)
|
|
675
|
-
workstation-4090 RTX 4090 24GB local $0.00/hr Free
|
|
676
|
-
runpod-h100-001 H100 80GB runpod $2.49/hr Running
|
|
677
|
-
vastai-a100-002 A100 40GB vastai $1.82/hr Running
|
|
678
|
-
lambda-a10g-003 A10G 24GB lambda_labs $0.60/hr Idle
|
|
679
|
-
```
|
|
680
|
-
|
|
681
|
-
### Why This Matters
|
|
682
|
-
|
|
683
|
-
The `terradev quote` command normally shows cloud provider pricing. With local GPUs registered, the pool includes your own hardware — priced at $0/hr. For a university researcher with a 3090 workstation running overnight jobs, or a startup with a rack of 4090s before they've moved to cloud: Terradev routes workloads to the cheapest available compute, and $0/hr always wins.
|
|
684
|
-
|
|
685
|
-
```bash
|
|
686
|
-
# Get quotes including local pool
|
|
687
|
-
terradev quote -g RTX4090 --include-local
|
|
688
|
-
|
|
689
|
-
# Output:
|
|
690
|
-
# GPU PROVIDER $/HR AVAILABLE
|
|
691
|
-
# RTX 4090 local (workstation-4090) $0.00 Yes
|
|
692
|
-
# RTX 4090 vastai $0.34 Yes
|
|
693
|
-
# RTX 4090 runpod $0.39 Yes
|
|
694
|
-
|
|
695
|
-
# Provision to cheapest available — prefers local automatically
|
|
696
|
-
terradev provision -g RTX4090 --prefer-local
|
|
697
|
-
|
|
698
|
-
# Launch training on local GPU with cloud overflow
|
|
699
|
-
terradev train --script train.py --pool workstation-4090 --overflow-to-cloud
|
|
700
|
-
```
|
|
701
|
-
|
|
702
|
-
### How Discovery Works
|
|
703
|
-
|
|
704
|
-
The local scanner uses direct NVML bindings (Rust backend, 5–10x faster than `nvidia-smi` parsing) to introspect every GPU on the target machine:
|
|
705
|
-
|
|
706
|
-
- GPU model, memory, PCIe bus ID, NUMA affinity
|
|
707
|
-
- Current utilization, memory usage, temperature, clock speeds
|
|
708
|
-
- Driver version, CUDA version, compute capability
|
|
709
|
-
- Multi-GPU topology (NVLink, PCIe switch topology)
|
|
710
|
-
|
|
711
|
-
Falls back to `nvidia-smi` parsing automatically if the Rust NVML extension isn't available.
|
|
712
|
-
|
|
713
|
-
```bash
|
|
714
|
-
# Detailed hardware report for local GPU
|
|
715
|
-
terradev local scan --detailed
|
|
716
|
-
|
|
717
|
-
# Output includes:
|
|
718
|
-
# GPU 0: RTX 4090 VRAM 24GB PCIe x16 NUMA node 0
|
|
719
|
-
# NVLink: none (single GPU)
|
|
720
|
-
# Compute: 8.9 Driver: 545.29 CUDA: 12.3
|
|
721
|
-
# P-state: P0 Temp: 42C Power: 45W / 450W TDP
|
|
722
|
-
```
|
|
723
622
|
---
|
|
724
623
|
|
|
725
624
|
## Quick Reference
|
|
@@ -859,6 +758,5 @@ Apache 2.0.
|
|
|
859
758
|
|
|
860
759
|
## Support
|
|
861
760
|
|
|
862
|
-
- **Documentation**: [Full User Guide](USER_GUIDE.md)
|
|
863
761
|
- **Issues**: [GitHub Issues](https://github.com/theoddden/Terradev/issues)
|
|
864
762
|
- **Discussions**: [GitHub Discussions](https://github.com/theoddden/Terradev/discussions)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Terradev CLI v5.3.
|
|
1
|
+
# Terradev CLI v5.3.4
|
|
2
2
|
|
|
3
3
|
**An imperative command-line-interface for AI workload orchestration.**
|
|
4
4
|
|
|
@@ -10,18 +10,26 @@ pypi.org/project/terradev-cli/
|
|
|
10
10
|
|
|
11
11
|
Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
|
|
12
12
|
|
|
13
|
-
**NOTES ON 5.3.0**
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
**NOTES ON 5.3.3**
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
Added **provider registration and profiling system** for intelligent quirk-aware routing across 23 cloud providers, and registration for custom providers from .yaml import:
|
|
18
17
|
|
|
19
|
-
- **
|
|
18
|
+
- **ProviderProfile schema** (`providers/types.py`): Encodes provider-specific behaviors including API style (REST/GraphQL/JSON:API), authentication type (Bearer/Basic/HMAC/X-Api-Key), rate limits, spot instance support, egress costs, fallback routing, capacity checks, container image pinning, and spot interruption handling.
|
|
20
19
|
|
|
21
|
-
- **
|
|
20
|
+
- **Built-in profiles** (`providers/provider_profiles.py`): Pre-configured profiles for all 23 providers (RunPod, Vast.ai, Lambda Labs, AWS, GCP, Azure, Oracle, Crusoe, CoreWeave, DigitalOcean, Yotta Labs, E2E Networks, FluidStack, Alibaba, OVHcloud, Hetzner, SiliconFlow, TensorDock, Baseten, HuggingFace, Hyperstack, InferX, Latitude).
|
|
21
|
+
|
|
22
|
+
- **Dynamic registration**: Users can register custom provider profiles programmatically or load from YAML/JSON files for internal clusters or proprietary cloud providers.
|
|
23
|
+
|
|
24
|
+
- **Profile-aware routing** (`providers/registry.py`): `ProviderRegistry.ranked_providers()` now incorporates provider profiles into scoring, using egress costs, fallback routing preferences, and spot preemption rates for intelligent provider selection.
|
|
25
|
+
|
|
26
|
+
- **CLI commands** (`terradev providers`): New command group for managing custom provider profiles:
|
|
22
27
|
```bash
|
|
23
|
-
terradev
|
|
24
|
-
terradev
|
|
28
|
+
terradev providers load-profiles ~/.terradev/custom_providers.yaml
|
|
29
|
+
terradev providers list-profiles
|
|
30
|
+
terradev providers show-profile runpod
|
|
31
|
+
terradev providers remove-profile my_custom_provider
|
|
32
|
+
terradev providers export-example -o ~/.terradev/custom_providers.yaml
|
|
25
33
|
```
|
|
26
34
|
|
|
27
35
|
**NOTES ON 5.2.1**
|
|
@@ -516,115 +524,6 @@ echo "3. Test failover: terradev inferx failover --endpoint burst-llm-api --test
|
|
|
516
524
|
echo "4. Update adapters: terradev lora update -n customer-enterprise-a -p ./new-adapters/"
|
|
517
525
|
```
|
|
518
526
|
|
|
519
|
-
## Bare Metal GPU Access with IPMI Management (Latitude.sh)
|
|
520
|
-
|
|
521
|
-
Most GPU clouds give you a virtual machine. You get a slice of hardware, shared kernel paths, and a hypervisor layer between your workload and the GPU. For most ML workloads this is fine. For compliance-sensitive deployments — HIPAA, FedRAMP, financial services, defense contractors — it isn't. Virtualization introduces attestation gaps that auditors reject.
|
|
522
|
-
|
|
523
|
-
Latitude.sh is the only provider in Terradev's fleet that offers both **bare metal** and **virtual machine** GPU instances from the same API. Bare metal gives you the physical server — dedicated hardware, no virtualization overhead, and IPMI out-of-band management.
|
|
524
|
-
|
|
525
|
-
```bash
|
|
526
|
-
# See both bare metal and VM options side by side
|
|
527
|
-
terradev quote -g H100 --provider latitude
|
|
528
|
-
|
|
529
|
-
# Provision dedicated bare metal with IPMI access
|
|
530
|
-
terradev provision --provider latitude --gpu H100 --instance-type bare-metal
|
|
531
|
-
|
|
532
|
-
# Provision a VM (faster spin-up, slightly lower cost)
|
|
533
|
-
terradev provision --provider latitude --gpu H100 --instance-type vm
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
### IPMI: Why It Matters for Enterprise
|
|
537
|
-
|
|
538
|
-
IPMI (Intelligent Platform Management Interface) gives you out-of-band server management independent of the OS and GPU stack. If a training job deadlocks the kernel, you don't wait for a cloud provider ticket — you power-cycle via IPMI directly. Security teams can verify hardware attestation. Compliance frameworks that require dedicated hardware and physical access controls are satisfied.
|
|
539
|
-
|
|
540
|
-
```bash
|
|
541
|
-
# Instance status includes IPMI access endpoint when bare metal
|
|
542
|
-
terradev status --live --provider latitude
|
|
543
|
-
|
|
544
|
-
# Output includes:
|
|
545
|
-
# ipmi_access: true
|
|
546
|
-
# ipmi_endpoint: 10.x.x.x
|
|
547
|
-
# isolation: bare_metal
|
|
548
|
-
```
|
|
549
|
-
---
|
|
550
|
-
|
|
551
|
-
## Local GPU Discovery and Hybrid Compute Pools
|
|
552
|
-
|
|
553
|
-
Every other GPU orchestration platform assumes you're renting compute. Terradev doesn't.
|
|
554
|
-
|
|
555
|
-
If you have a GPU in your local machine — a gaming rig, a workstation, a university compute node you have SSH access to — Terradev can discover it, register it into your compute pool, and incorporate it into provisioning decisions alongside cloud providers.
|
|
556
|
-
|
|
557
|
-
```bash
|
|
558
|
-
# Scan local machine for GPUs
|
|
559
|
-
terradev local scan
|
|
560
|
-
|
|
561
|
-
# Output:
|
|
562
|
-
# Found 1 local GPU:
|
|
563
|
-
# [0] NVIDIA RTX 4090 24GB Driver 545.29 Util: 3% Temp: 42C
|
|
564
|
-
#
|
|
565
|
-
# Register in pool? [y/N]:
|
|
566
|
-
|
|
567
|
-
# Register local GPU into your pool
|
|
568
|
-
terradev local register --name "workstation-4090"
|
|
569
|
-
|
|
570
|
-
# Scan a remote machine you have SSH access to
|
|
571
|
-
terradev local scan --host 192.168.1.50 --user ubuntu --key ~/.ssh/id_rsa
|
|
572
|
-
|
|
573
|
-
# View your full compute pool (local + cloud)
|
|
574
|
-
terradev local pool
|
|
575
|
-
```
|
|
576
|
-
|
|
577
|
-
Pool output:
|
|
578
|
-
```
|
|
579
|
-
COMPUTE POOL (4 resources)
|
|
580
|
-
workstation-4090 RTX 4090 24GB local $0.00/hr Free
|
|
581
|
-
runpod-h100-001 H100 80GB runpod $2.49/hr Running
|
|
582
|
-
vastai-a100-002 A100 40GB vastai $1.82/hr Running
|
|
583
|
-
lambda-a10g-003 A10G 24GB lambda_labs $0.60/hr Idle
|
|
584
|
-
```
|
|
585
|
-
|
|
586
|
-
### Why This Matters
|
|
587
|
-
|
|
588
|
-
The `terradev quote` command normally shows cloud provider pricing. With local GPUs registered, the pool includes your own hardware — priced at $0/hr. For a university researcher with a 3090 workstation running overnight jobs, or a startup with a rack of 4090s before they've moved to cloud: Terradev routes workloads to the cheapest available compute, and $0/hr always wins.
|
|
589
|
-
|
|
590
|
-
```bash
|
|
591
|
-
# Get quotes including local pool
|
|
592
|
-
terradev quote -g RTX4090 --include-local
|
|
593
|
-
|
|
594
|
-
# Output:
|
|
595
|
-
# GPU PROVIDER $/HR AVAILABLE
|
|
596
|
-
# RTX 4090 local (workstation-4090) $0.00 Yes
|
|
597
|
-
# RTX 4090 vastai $0.34 Yes
|
|
598
|
-
# RTX 4090 runpod $0.39 Yes
|
|
599
|
-
|
|
600
|
-
# Provision to cheapest available — prefers local automatically
|
|
601
|
-
terradev provision -g RTX4090 --prefer-local
|
|
602
|
-
|
|
603
|
-
# Launch training on local GPU with cloud overflow
|
|
604
|
-
terradev train --script train.py --pool workstation-4090 --overflow-to-cloud
|
|
605
|
-
```
|
|
606
|
-
|
|
607
|
-
### How Discovery Works
|
|
608
|
-
|
|
609
|
-
The local scanner uses direct NVML bindings (Rust backend, 5–10x faster than `nvidia-smi` parsing) to introspect every GPU on the target machine:
|
|
610
|
-
|
|
611
|
-
- GPU model, memory, PCIe bus ID, NUMA affinity
|
|
612
|
-
- Current utilization, memory usage, temperature, clock speeds
|
|
613
|
-
- Driver version, CUDA version, compute capability
|
|
614
|
-
- Multi-GPU topology (NVLink, PCIe switch topology)
|
|
615
|
-
|
|
616
|
-
Falls back to `nvidia-smi` parsing automatically if the Rust NVML extension isn't available.
|
|
617
|
-
|
|
618
|
-
```bash
|
|
619
|
-
# Detailed hardware report for local GPU
|
|
620
|
-
terradev local scan --detailed
|
|
621
|
-
|
|
622
|
-
# Output includes:
|
|
623
|
-
# GPU 0: RTX 4090 VRAM 24GB PCIe x16 NUMA node 0
|
|
624
|
-
# NVLink: none (single GPU)
|
|
625
|
-
# Compute: 8.9 Driver: 545.29 CUDA: 12.3
|
|
626
|
-
# P-state: P0 Temp: 42C Power: 45W / 450W TDP
|
|
627
|
-
```
|
|
628
527
|
---
|
|
629
528
|
|
|
630
529
|
## Quick Reference
|
|
@@ -764,6 +663,5 @@ Apache 2.0.
|
|
|
764
663
|
|
|
765
664
|
## Support
|
|
766
665
|
|
|
767
|
-
- **Documentation**: [Full User Guide](USER_GUIDE.md)
|
|
768
666
|
- **Issues**: [GitHub Issues](https://github.com/theoddden/Terradev/issues)
|
|
769
667
|
- **Discussions**: [GitHub Discussions](https://github.com/theoddden/Terradev/discussions)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Terradev CLI v5.3.
|
|
1
|
+
# Terradev CLI v5.3.3
|
|
2
2
|
|
|
3
3
|
**An imperative command-line-interface for AI workload orchestration.**
|
|
4
4
|
|
|
@@ -10,6 +10,27 @@ pypi.org/project/terradev-cli/
|
|
|
10
10
|
|
|
11
11
|
Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
|
|
12
12
|
|
|
13
|
+
**NOTES ON 5.3.3**
|
|
14
|
+
|
|
15
|
+
Added **provider profile system** for intelligent quirk-aware routing across 23 cloud providers:
|
|
16
|
+
|
|
17
|
+
- **ProviderProfile schema** (`providers/types.py`): Encodes provider-specific behaviors including API style (REST/GraphQL/JSON:API), authentication type (Bearer/Basic/HMAC/X-Api-Key), rate limits, spot instance support, egress costs, fallback routing, capacity checks, container image pinning, and spot interruption handling.
|
|
18
|
+
|
|
19
|
+
- **Built-in profiles** (`providers/provider_profiles.py`): Pre-configured profiles for all 23 providers (RunPod, Vast.ai, Lambda Labs, AWS, GCP, Azure, Oracle, Crusoe, CoreWeave, DigitalOcean, Yotta Labs, E2E Networks, FluidStack, Alibaba, OVHcloud, Hetzner, SiliconFlow, TensorDock, Baseten, HuggingFace, Hyperstack, InferX, Latitude).
|
|
20
|
+
|
|
21
|
+
- **Dynamic registration**: Users can register custom provider profiles programmatically or load from YAML/JSON files for internal clusters or proprietary cloud providers.
|
|
22
|
+
|
|
23
|
+
- **Profile-aware routing** (`providers/registry.py`): `ProviderRegistry.ranked_providers()` now incorporates provider profiles into scoring, using egress costs, fallback routing preferences, and spot preemption rates for intelligent provider selection.
|
|
24
|
+
|
|
25
|
+
- **CLI commands** (`terradev providers`): New command group for managing custom provider profiles:
|
|
26
|
+
```bash
|
|
27
|
+
terradev providers load-profiles ~/.terradev/custom_providers.yaml
|
|
28
|
+
terradev providers list-profiles
|
|
29
|
+
terradev providers show-profile runpod
|
|
30
|
+
terradev providers remove-profile my_custom_provider
|
|
31
|
+
terradev providers export-example -o ~/.terradev/custom_providers.yaml
|
|
32
|
+
```
|
|
33
|
+
|
|
13
34
|
**NOTES ON 5.3.0**
|
|
14
35
|
|
|
15
36
|
Added **transport-agnostic Prefill/Decode (P/D) disaggregation layer** and **multi-agent KV cache sharing planner**:
|
|
@@ -516,115 +537,6 @@ echo "3. Test failover: terradev inferx failover --endpoint burst-llm-api --test
|
|
|
516
537
|
echo "4. Update adapters: terradev lora update -n customer-enterprise-a -p ./new-adapters/"
|
|
517
538
|
```
|
|
518
539
|
|
|
519
|
-
## Bare Metal GPU Access with IPMI Management (Latitude.sh)
|
|
520
|
-
|
|
521
|
-
Most GPU clouds give you a virtual machine. You get a slice of hardware, shared kernel paths, and a hypervisor layer between your workload and the GPU. For most ML workloads this is fine. For compliance-sensitive deployments — HIPAA, FedRAMP, financial services, defense contractors — it isn't. Virtualization introduces attestation gaps that auditors reject.
|
|
522
|
-
|
|
523
|
-
Latitude.sh is the only provider in Terradev's fleet that offers both **bare metal** and **virtual machine** GPU instances from the same API. Bare metal gives you the physical server — dedicated hardware, no virtualization overhead, and IPMI out-of-band management.
|
|
524
|
-
|
|
525
|
-
```bash
|
|
526
|
-
# See both bare metal and VM options side by side
|
|
527
|
-
terradev quote -g H100 --provider latitude
|
|
528
|
-
|
|
529
|
-
# Provision dedicated bare metal with IPMI access
|
|
530
|
-
terradev provision --provider latitude --gpu H100 --instance-type bare-metal
|
|
531
|
-
|
|
532
|
-
# Provision a VM (faster spin-up, slightly lower cost)
|
|
533
|
-
terradev provision --provider latitude --gpu H100 --instance-type vm
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
### IPMI: Why It Matters for Enterprise
|
|
537
|
-
|
|
538
|
-
IPMI (Intelligent Platform Management Interface) gives you out-of-band server management independent of the OS and GPU stack. If a training job deadlocks the kernel, you don't wait for a cloud provider ticket — you power-cycle via IPMI directly. Security teams can verify hardware attestation. Compliance frameworks that require dedicated hardware and physical access controls are satisfied.
|
|
539
|
-
|
|
540
|
-
```bash
|
|
541
|
-
# Instance status includes IPMI access endpoint when bare metal
|
|
542
|
-
terradev status --live --provider latitude
|
|
543
|
-
|
|
544
|
-
# Output includes:
|
|
545
|
-
# ipmi_access: true
|
|
546
|
-
# ipmi_endpoint: 10.x.x.x
|
|
547
|
-
# isolation: bare_metal
|
|
548
|
-
```
|
|
549
|
-
---
|
|
550
|
-
|
|
551
|
-
## Local GPU Discovery and Hybrid Compute Pools
|
|
552
|
-
|
|
553
|
-
Every other GPU orchestration platform assumes you're renting compute. Terradev doesn't.
|
|
554
|
-
|
|
555
|
-
If you have a GPU in your local machine — a gaming rig, a workstation, a university compute node you have SSH access to — Terradev can discover it, register it into your compute pool, and incorporate it into provisioning decisions alongside cloud providers.
|
|
556
|
-
|
|
557
|
-
```bash
|
|
558
|
-
# Scan local machine for GPUs
|
|
559
|
-
terradev local scan
|
|
560
|
-
|
|
561
|
-
# Output:
|
|
562
|
-
# Found 1 local GPU:
|
|
563
|
-
# [0] NVIDIA RTX 4090 24GB Driver 545.29 Util: 3% Temp: 42C
|
|
564
|
-
#
|
|
565
|
-
# Register in pool? [y/N]:
|
|
566
|
-
|
|
567
|
-
# Register local GPU into your pool
|
|
568
|
-
terradev local register --name "workstation-4090"
|
|
569
|
-
|
|
570
|
-
# Scan a remote machine you have SSH access to
|
|
571
|
-
terradev local scan --host 192.168.1.50 --user ubuntu --key ~/.ssh/id_rsa
|
|
572
|
-
|
|
573
|
-
# View your full compute pool (local + cloud)
|
|
574
|
-
terradev local pool
|
|
575
|
-
```
|
|
576
|
-
|
|
577
|
-
Pool output:
|
|
578
|
-
```
|
|
579
|
-
COMPUTE POOL (4 resources)
|
|
580
|
-
workstation-4090 RTX 4090 24GB local $0.00/hr Free
|
|
581
|
-
runpod-h100-001 H100 80GB runpod $2.49/hr Running
|
|
582
|
-
vastai-a100-002 A100 40GB vastai $1.82/hr Running
|
|
583
|
-
lambda-a10g-003 A10G 24GB lambda_labs $0.60/hr Idle
|
|
584
|
-
```
|
|
585
|
-
|
|
586
|
-
### Why This Matters
|
|
587
|
-
|
|
588
|
-
The `terradev quote` command normally shows cloud provider pricing. With local GPUs registered, the pool includes your own hardware — priced at $0/hr. For a university researcher with a 3090 workstation running overnight jobs, or a startup with a rack of 4090s before they've moved to cloud: Terradev routes workloads to the cheapest available compute, and $0/hr always wins.
|
|
589
|
-
|
|
590
|
-
```bash
|
|
591
|
-
# Get quotes including local pool
|
|
592
|
-
terradev quote -g RTX4090 --include-local
|
|
593
|
-
|
|
594
|
-
# Output:
|
|
595
|
-
# GPU PROVIDER $/HR AVAILABLE
|
|
596
|
-
# RTX 4090 local (workstation-4090) $0.00 Yes
|
|
597
|
-
# RTX 4090 vastai $0.34 Yes
|
|
598
|
-
# RTX 4090 runpod $0.39 Yes
|
|
599
|
-
|
|
600
|
-
# Provision to cheapest available — prefers local automatically
|
|
601
|
-
terradev provision -g RTX4090 --prefer-local
|
|
602
|
-
|
|
603
|
-
# Launch training on local GPU with cloud overflow
|
|
604
|
-
terradev train --script train.py --pool workstation-4090 --overflow-to-cloud
|
|
605
|
-
```
|
|
606
|
-
|
|
607
|
-
### How Discovery Works
|
|
608
|
-
|
|
609
|
-
The local scanner uses direct NVML bindings (Rust backend, 5–10x faster than `nvidia-smi` parsing) to introspect every GPU on the target machine:
|
|
610
|
-
|
|
611
|
-
- GPU model, memory, PCIe bus ID, NUMA affinity
|
|
612
|
-
- Current utilization, memory usage, temperature, clock speeds
|
|
613
|
-
- Driver version, CUDA version, compute capability
|
|
614
|
-
- Multi-GPU topology (NVLink, PCIe switch topology)
|
|
615
|
-
|
|
616
|
-
Falls back to `nvidia-smi` parsing automatically if the Rust NVML extension isn't available.
|
|
617
|
-
|
|
618
|
-
```bash
|
|
619
|
-
# Detailed hardware report for local GPU
|
|
620
|
-
terradev local scan --detailed
|
|
621
|
-
|
|
622
|
-
# Output includes:
|
|
623
|
-
# GPU 0: RTX 4090 VRAM 24GB PCIe x16 NUMA node 0
|
|
624
|
-
# NVLink: none (single GPU)
|
|
625
|
-
# Compute: 8.9 Driver: 545.29 CUDA: 12.3
|
|
626
|
-
# P-state: P0 Temp: 42C Power: 45W / 450W TDP
|
|
627
|
-
```
|
|
628
540
|
---
|
|
629
541
|
|
|
630
542
|
## Quick Reference
|
|
@@ -3,6 +3,6 @@ Terradev CLI - Cross-Cloud Compute Optimization Platform
|
|
|
3
3
|
Parallel provisioning and orchestration for optimized compute costs
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
__version__ = "5.3.
|
|
6
|
+
__version__ = "5.3.4"
|
|
7
7
|
__author__ = "Terradev Team"
|
|
8
8
|
__description__ = "Open Source BYOAPI Multi-Cloud GPU Infrastructure Platform"
|