terradev-cli 5.3.1__tar.gz → 5.3.3__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.
Files changed (487) hide show
  1. terradev_cli-5.3.3/.terradev/custom_providers.example.yaml +39 -0
  2. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/PKG-INFO +23 -111
  3. {terradev_cli-5.3.1/terradev_cli → terradev_cli-5.3.3}/README.md +22 -110
  4. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/pyproject.toml +1 -1
  5. {terradev_cli-5.3.1 → terradev_cli-5.3.3/terradev_cli}/README.md +22 -110
  6. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/cli.py +368 -51
  7. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/inference_router.py +3 -0
  8. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/terradev_engine.py +3 -0
  9. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/ollama_service.py +16 -0
  10. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/sglang_service.py +7 -0
  11. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/vllm_service.py +7 -0
  12. terradev_cli-5.3.3/terradev_cli/providers/__init__.py +73 -0
  13. terradev_cli-5.3.3/terradev_cli/providers/base_provider.py +522 -0
  14. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/crusoe_provider.py +70 -15
  15. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/e2e_networks_provider.py +19 -9
  16. terradev_cli-5.3.3/terradev_cli/providers/gpu_catalog.py +643 -0
  17. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/lambda_labs_provider.py +7 -1
  18. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/oracle_provider.py +7 -5
  19. terradev_cli-5.3.3/terradev_cli/providers/provider_profiles.py +541 -0
  20. terradev_cli-5.3.3/terradev_cli/providers/registry.py +257 -0
  21. terradev_cli-5.3.3/terradev_cli/providers/types.py +258 -0
  22. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/yottalabs_provider.py +35 -17
  23. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli.egg-info/PKG-INFO +23 -111
  24. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli.egg-info/SOURCES.txt +5 -0
  25. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_provider_conformance.py +25 -26
  26. terradev_cli-5.3.1/terradev_cli/providers/__init__.py +0 -51
  27. terradev_cli-5.3.1/terradev_cli/providers/base_provider.py +0 -241
  28. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/.env.example +0 -0
  29. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/.github/workflows/action.yml +0 -0
  30. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/.github/workflows/ci.yml +0 -0
  31. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/.github/workflows/release.yml +0 -0
  32. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/.github/workflows/static.yml +0 -0
  33. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Deployment Package/BNF_GRAMMAR.md +0 -0
  34. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Deployment Package/LIFECYCLES.md +0 -0
  35. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Deployment Package/architecture.md +0 -0
  36. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Deployment Package/overview.md +0 -0
  37. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Deployment Package/security.md +0 -0
  38. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Deployment Package/troubleshooting.md +0 -0
  39. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Dockerfile +0 -0
  40. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/Dockerfile.test +0 -0
  41. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/LICENSE +0 -0
  42. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/MANIFEST.in +0 -0
  43. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/agentic-template/helm/values-agentic.yaml +0 -0
  44. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/agentic-template/k8s/fleet-manifests.yaml +0 -0
  45. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/README.md +0 -0
  46. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/helm/values-glm5.yaml +0 -0
  47. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/k8s/hpa.yaml +0 -0
  48. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -0
  49. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/k8s/namespace.yaml +0 -0
  50. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/k8s/pdb.yaml +0 -0
  51. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/k8s/service.yaml +0 -0
  52. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/k8s/sglang-deployment.yaml +0 -0
  53. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/k8s/vllm-deployment.yaml +0 -0
  54. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/task.yaml +0 -0
  55. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/terraform/main.tf +0 -0
  56. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/terraform/outputs.tf +0 -0
  57. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/glm-5/terraform/variables.tf +0 -0
  58. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/llmd-template/README.md +0 -0
  59. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/llmd-template/helm/values-llmd.yaml +0 -0
  60. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/llmd-template/k8s/gateway.yaml +0 -0
  61. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/llmd-template/k8s/leaderworkerset.yaml +0 -0
  62. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/llmd-template/k8s/llminferenceservice.yaml +0 -0
  63. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/llmd-template/task.yaml +0 -0
  64. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/README.md +0 -0
  65. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/helm/values-moe.yaml +0 -0
  66. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/k8s/deployment.yaml +0 -0
  67. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/k8s/hpa.yaml +0 -0
  68. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -0
  69. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/k8s/namespace.yaml +0 -0
  70. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/k8s/pdb.yaml +0 -0
  71. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/k8s/service.yaml +0 -0
  72. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/task.yaml +0 -0
  73. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/terraform/main.tf +0 -0
  74. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/terraform/outputs.tf +0 -0
  75. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/moe-template/terraform/variables.tf +0 -0
  76. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/rag-template/README.md +0 -0
  77. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/rag-template/helm/values-rag.yaml +0 -0
  78. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/rag-template/k8s/deployment.yaml +0 -0
  79. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/clusters/rag-template/terraform/main.tf +0 -0
  80. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/demo/RECORDING_GUIDE.md +0 -0
  81. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/demo/generate_gif.py +0 -0
  82. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/demo/terradev-demo.gif +0 -0
  83. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -0
  84. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/API_DOCUMENTATION.md +0 -0
  85. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/BingSiteAuth.xml +0 -0
  86. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -0
  87. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/USER_GUIDE.md +0 -0
  88. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -0
  89. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/VLLM_OPTIMIZATION_GUIDE.md +0 -0
  90. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/architecture.md +0 -0
  91. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/index.html +0 -0
  92. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/overview.md +0 -0
  93. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/robots.txt +0 -0
  94. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/sitemap.xml +0 -0
  95. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/docs/test_spot_provision.md +0 -0
  96. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/aws_ssm_starter.py +0 -0
  97. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/config.example.json +0 -0
  98. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/demo_k8s_config.yaml +0 -0
  99. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/direct_aws_starter.py +0 -0
  100. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/ec2_user_data_starter.py +0 -0
  101. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/example-pipeline.yaml +0 -0
  102. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/kubernetes_training_deployment.yaml +0 -0
  103. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/simple_ssm_starter.py +0 -0
  104. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/ssh_server_starter.py +0 -0
  105. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/examples/start_aws_servers.py +0 -0
  106. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/helm/terradev/Chart.yaml +0 -0
  107. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/helm/terradev/templates/_helpers.tpl +0 -0
  108. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/helm/terradev/templates/deployment.yaml +0 -0
  109. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/helm/terradev/values.yaml +0 -0
  110. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/infrastructure/bucket-policy.json +0 -0
  111. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/infrastructure/grafana_training_dashboard.json +0 -0
  112. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/infrastructure/kubernetes/microservices.yaml +0 -0
  113. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/infrastructure/terraform/main.tf +0 -0
  114. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/infrastructure/terraform/parallelism.tf +0 -0
  115. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/cli-tool.tf +0 -0
  116. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/cloud-management-widgets.tf +0 -0
  117. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/cloud-provider-apis.py +0 -0
  118. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/critical-widgets.tf +0 -0
  119. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/devops-cicd-widgets.tf +0 -0
  120. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/devops-essential-tools.tf +0 -0
  121. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/docker-integration.tf +0 -0
  122. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/kubernetes-operator.tf +0 -0
  123. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/integrations/mlflow-integration.tf +0 -0
  124. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/datadog/README.md +0 -0
  125. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/datadog/dashboard.tf +0 -0
  126. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/datadog/monitors.tf +0 -0
  127. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/datadog/outputs.tf +0 -0
  128. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/datadog/provider.tf +0 -0
  129. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/datadog/variables.tf +0 -0
  130. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/datadog/versions.tf +0 -0
  131. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/modules/prometheus_training_config.yml +0 -0
  132. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/requirements.txt +0 -0
  133. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/Cargo.toml +0 -0
  134. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/INTEGRATION_GUIDE.md +0 -0
  135. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/PERFORMANCE_OPTIMIZATIONS.md +0 -0
  136. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/README.md +0 -0
  137. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-artifact-verification/Cargo.toml +0 -0
  138. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-artifact-verification/src/lib.rs +0 -0
  139. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-artifact-verification/src/types.rs +0 -0
  140. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-artifact-verification/src/verifier.rs +0 -0
  141. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-authentication/Cargo.toml +0 -0
  142. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-authentication/src/encoding.rs +0 -0
  143. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-authentication/src/hmac.rs +0 -0
  144. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-authentication/src/lib.rs +0 -0
  145. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-authentication/src/types.rs +0 -0
  146. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cache-eviction/Cargo.toml +0 -0
  147. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cache-eviction/src/cache.rs +0 -0
  148. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cache-eviction/src/lib.rs +0 -0
  149. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cache-eviction/src/types.rs +0 -0
  150. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-command-executor/Cargo.toml +0 -0
  151. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-command-executor/src/lib.rs +0 -0
  152. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-config-validator/Cargo.toml +0 -0
  153. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-config-validator/src/lib.rs +0 -0
  154. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-config-validator/src/types.rs +0 -0
  155. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-config-validator/src/validator.rs +0 -0
  156. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-connection-pool/Cargo.toml +0 -0
  157. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-connection-pool/src/lib.rs +0 -0
  158. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-connection-pool/src/pool.rs +0 -0
  159. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-connection-pool/src/types.rs +0 -0
  160. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cost-calculator/Cargo.toml +0 -0
  161. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cost-calculator/src/calculator.rs +0 -0
  162. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cost-calculator/src/lib.rs +0 -0
  163. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cost-calculator/src/types.rs +0 -0
  164. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cost-scaler/Cargo.toml +0 -0
  165. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-cost-scaler/src/lib.rs +0 -0
  166. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-credential-vault/Cargo.toml +0 -0
  167. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-credential-vault/src/lib.rs +0 -0
  168. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-credential-vault/src/types.rs +0 -0
  169. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-credential-vault/src/vault.rs +0 -0
  170. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-dag-executor/Cargo.toml +0 -0
  171. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-dag-executor/src/lib.rs +0 -0
  172. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-distributed-lock/Cargo.toml +0 -0
  173. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-distributed-lock/src/lib.rs +0 -0
  174. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-distributed-lock/src/lock.rs +0 -0
  175. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-distributed-lock/src/types.rs +0 -0
  176. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-egress-optimizer/Cargo.toml +0 -0
  177. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-egress-optimizer/src/graph.rs +0 -0
  178. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-egress-optimizer/src/lib.rs +0 -0
  179. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-egress-optimizer/src/types.rs +0 -0
  180. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-event-bus/Cargo.toml +0 -0
  181. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-event-bus/src/bus.rs +0 -0
  182. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-event-bus/src/lib.rs +0 -0
  183. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-event-bus/src/types.rs +0 -0
  184. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-governance/Cargo.toml +0 -0
  185. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-governance/src/lib.rs +0 -0
  186. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-gpu-discovery/Cargo.toml +0 -0
  187. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-gpu-discovery/src/lib.rs +0 -0
  188. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-gpu-topology/Cargo.toml +0 -0
  189. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-gpu-topology/src/lib.rs +0 -0
  190. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-gpu-topology/src/topology.rs +0 -0
  191. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-gpu-topology/src/types.rs +0 -0
  192. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-helm-generator/Cargo.toml +0 -0
  193. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-helm-generator/src/lib.rs +0 -0
  194. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-mcp-codec/Cargo.toml +0 -0
  195. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-mcp-codec/src/lib.rs +0 -0
  196. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-mcp-optimizer/Cargo.toml +0 -0
  197. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-mcp-optimizer/src/lib.rs +0 -0
  198. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-price-intelligence/Cargo.toml +0 -0
  199. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-price-intelligence/src/lib.rs +0 -0
  200. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-quota-manager/Cargo.toml +0 -0
  201. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-quota-manager/src/lib.rs +0 -0
  202. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-quota-manager/src/manager.rs +0 -0
  203. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-quota-manager/src/types.rs +0 -0
  204. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-resource-pool/Cargo.toml +0 -0
  205. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-resource-pool/src/lib.rs +0 -0
  206. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-resource-pool/src/pool.rs +0 -0
  207. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-resource-pool/src/types.rs +0 -0
  208. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-result-compressor/Cargo.toml +0 -0
  209. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-result-compressor/src/lib.rs +0 -0
  210. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-semantic-router/Cargo.toml +0 -0
  211. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-semantic-router/src/lib.rs +0 -0
  212. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-snapshot-manager/Cargo.toml +0 -0
  213. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-snapshot-manager/src/lib.rs +0 -0
  214. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-snapshot-manager/src/snapshot.rs +0 -0
  215. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-snapshot-manager/src/types.rs +0 -0
  216. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-state-machine/Cargo.toml +0 -0
  217. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-state-machine/src/lib.rs +0 -0
  218. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-state-machine/src/state.rs +0 -0
  219. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-state-machine/src/types.rs +0 -0
  220. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-telemetry/Cargo.toml +0 -0
  221. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-telemetry/src/lib.rs +0 -0
  222. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-telemetry/src/pipeline.rs +0 -0
  223. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-telemetry/src/types.rs +0 -0
  224. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-tool-registry/Cargo.toml +0 -0
  225. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-tool-registry/src/lib.rs +0 -0
  226. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-vram-estimator/Cargo.toml +0 -0
  227. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-vram-estimator/src/estimator.rs +0 -0
  228. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-vram-estimator/src/lib.rs +0 -0
  229. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-vram-estimator/src/types.rs +0 -0
  230. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-warm-pool/Cargo.toml +0 -0
  231. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/rust/terradev-warm-pool/src/lib.rs +0 -0
  232. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/scripts/action.py +0 -0
  233. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/scripts/gpu-check.sh +0 -0
  234. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/setup/Lambda Cloud API spec 1.8.3.json +0 -0
  235. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/setup/docker-compose.yml +0 -0
  236. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/setup/nginx.conf +0 -0
  237. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/setup/setup.sh +0 -0
  238. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/setup.cfg +0 -0
  239. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/CHANGELOG.md +0 -0
  240. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/COMPLETE_COMMAND_REFERENCE.md +0 -0
  241. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/COMPLETE_INTEGRATION_GUIDE.md +0 -0
  242. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/IMPLEMENTATION_SUMMARY.md +0 -0
  243. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/MAKING_SPOT_WORK_FOR_STATEFUL_WORKLOADS.md +0 -0
  244. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/SGLANG_COMMAND_GUIDE.md +0 -0
  245. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/TERRADEV_STACK_CHART.md +0 -0
  246. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/__init__.py +0 -0
  247. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/__main__.py +0 -0
  248. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/cli_hf_spaces.py +0 -0
  249. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/cli_karpenter.py +0 -0
  250. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/__init__.py +0 -0
  251. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/agentic_provisioner.py +0 -0
  252. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/agentic_topology.py +0 -0
  253. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/async_config.py +0 -0
  254. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/auth.py +0 -0
  255. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/auto_lineage.py +0 -0
  256. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/cache_manager.py +0 -0
  257. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/checkpoint_manager.py +0 -0
  258. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/command_executor.py +0 -0
  259. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/config.py +0 -0
  260. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/config_validator.py +0 -0
  261. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/cost_scaler.py +0 -0
  262. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/cost_tracker.py +0 -0
  263. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/credential_vault.py +0 -0
  264. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/cuda_graph_integrator.py +0 -0
  265. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/dag_executor.py +0 -0
  266. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/data_governance.py +0 -0
  267. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/dataset_stager.py +0 -0
  268. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/deployment_router.py +0 -0
  269. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/distributed_lock.py +0 -0
  270. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/drift_detector.py +0 -0
  271. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/egress_cost_monitor.py +0 -0
  272. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/egress_optimizer.py +0 -0
  273. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/evaluation_orchestrator.py +0 -0
  274. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/event_system.py +0 -0
  275. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/gitops_manager.py +0 -0
  276. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/gpu_discovery.py +0 -0
  277. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/gpu_topology.py +0 -0
  278. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/helm_generator.py +0 -0
  279. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/hf_cli_integration.py +0 -0
  280. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/hf_smart_templates.py +0 -0
  281. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/hf_spaces.py +0 -0
  282. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/inference_spot_manager.py +0 -0
  283. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/job_state_manager.py +0 -0
  284. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/kv_cache_checkpoint_manager.py +0 -0
  285. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/kv_cache_checkpoint_tests.py +0 -0
  286. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/kv_sharing.py +0 -0
  287. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/manifest_cache.py +0 -0
  288. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/manifest_example.json +0 -0
  289. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/mig_manager.py +0 -0
  290. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/migration_orchestrator.py +0 -0
  291. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/mla_vram_estimator.py +0 -0
  292. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/mla_vram_tests.py +0 -0
  293. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/model_orchestrator.py +0 -0
  294. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/oidc_provider.py +0 -0
  295. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/optimization_config.py +0 -0
  296. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/parallel_provisioner.py +0 -0
  297. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/pd_transport.py +0 -0
  298. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/pipeline_schema.py +0 -0
  299. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/preflight_validator.py +0 -0
  300. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/price_discovery.py +0 -0
  301. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/price_intelligence.py +0 -0
  302. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/public_ip_billing_tracker.py +0 -0
  303. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/quick_start.py +0 -0
  304. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/quota_manager.py +0 -0
  305. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/rate_limiter.py +0 -0
  306. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/rust_telemetry.py +0 -0
  307. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_router.py +0 -0
  308. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/__init__.py +0 -0
  309. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/base_signal.py +0 -0
  310. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/complexity_signal.py +0 -0
  311. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/domain_signal.py +0 -0
  312. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/keyword_signal.py +0 -0
  313. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/language_signal.py +0 -0
  314. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/modality_signal.py +0 -0
  315. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/orchestrator.py +0 -0
  316. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -0
  317. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/semantic_signals/safety_signal.py +0 -0
  318. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/session_manager.py +0 -0
  319. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/ssh_key_manager.py +0 -0
  320. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/telemetry.py +0 -0
  321. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/trace_viewer.py +0 -0
  322. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/training_monitor.py +0 -0
  323. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/training_orchestrator.py +0 -0
  324. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/user_manager.py +0 -0
  325. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/warm_pool_manager.py +0 -0
  326. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/weight_streaming_benchmarks.py +0 -0
  327. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/core/weight_streaming_manager.py +0 -0
  328. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/cost_optimizer.py +0 -0
  329. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/credential_prompt.py +0 -0
  330. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/demo.py +0 -0
  331. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/entry_point.py +0 -0
  332. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
  333. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
  334. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/__init__.py +0 -0
  335. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/databricks_integration.py +0 -0
  336. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/datadog_integration.py +0 -0
  337. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/helicone_integration.py +0 -0
  338. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/prometheus_integration.py +0 -0
  339. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/integrations/wandb_integration.py +0 -0
  340. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/k8s/terraform_wrapper.py +0 -0
  341. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -0
  342. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -0
  343. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/kubernetes/inferx-models.yaml +0 -0
  344. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/kubernetes/inferx-platform.yaml +0 -0
  345. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/kubernetes/inferx_setup.py +0 -0
  346. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/mcp/__init__.py +0 -0
  347. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/mcp/server.py +0 -0
  348. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/__init__.py +0 -0
  349. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/agentic_serving.py +0 -0
  350. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/drift_retrain_service.py +0 -0
  351. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/dvc_service.py +0 -0
  352. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/guardrails_service.py +0 -0
  353. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/huggingface_service.py +0 -0
  354. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/kserve_service.py +0 -0
  355. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/kubernetes_enhanced.py +0 -0
  356. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/kubernetes_service.py +0 -0
  357. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/langchain_service.py +0 -0
  358. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/langfuse_service.py +0 -0
  359. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/langgraph_service.py +0 -0
  360. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/lmcache_service.py +0 -0
  361. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/mlflow_service.py +0 -0
  362. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/model_router.py +0 -0
  363. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/phoenix_service.py +0 -0
  364. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/qdrant_service.py +0 -0
  365. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/ray_enhanced.py +0 -0
  366. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/ray_service.py +0 -0
  367. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/ml_services/wandb_enhanced.py +0 -0
  368. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/optimization/__init__.py +0 -0
  369. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/optimization/auto_optimizer.py +0 -0
  370. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/optimization/cuco_optimizer.py +0 -0
  371. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/LATITUDE_PROVIDER.md +0 -0
  372. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/alibaba_provider.py +0 -0
  373. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/aws_provider.py +0 -0
  374. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/azure_provider.py +0 -0
  375. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/baseten_provider.py +0 -0
  376. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/coreweave_provider.py +0 -0
  377. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/demo_mode.py +0 -0
  378. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/digitalocean_provider.py +0 -0
  379. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/fluidstack_provider.py +0 -0
  380. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/gcp_provider.py +0 -0
  381. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/hetzner_provider.py +0 -0
  382. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/huggingface_provider.py +0 -0
  383. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/hyperstack_provider.py +0 -0
  384. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/inferx_provider.py +0 -0
  385. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/latitude_provider.py +0 -0
  386. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/ovhcloud_provider.py +0 -0
  387. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/provider_factory.py +0 -0
  388. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/real_pricing.py +0 -0
  389. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/runpod_provider.py +0 -0
  390. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/siliconflow_provider.py +0 -0
  391. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/tensordock_provider.py +0 -0
  392. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/providers/vastai_provider.py +0 -0
  393. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/requirements.txt +0 -0
  394. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/requirements_minimal.txt +0 -0
  395. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/main.tf +0 -0
  396. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/__init__.py +0 -0
  397. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -0
  398. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -0
  399. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -0
  400. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -0
  401. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -0
  402. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -0
  403. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -0
  404. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -0
  405. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -0
  406. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -0
  407. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -0
  408. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -0
  409. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -0
  410. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -0
  411. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -0
  412. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -0
  413. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -0
  414. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -0
  415. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -0
  416. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -0
  417. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -0
  418. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -0
  419. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -0
  420. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -0
  421. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -0
  422. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -0
  423. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/networking/main.tf +0 -0
  424. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/networking/outputs.tf +0 -0
  425. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/networking/variables.tf +0 -0
  426. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/modules/networking/versions.tf +0 -0
  427. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/outputs.tf +0 -0
  428. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -0
  429. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/providers.tf +0 -0
  430. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/terraform/variables.tf +0 -0
  431. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/test_summary.py +0 -0
  432. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/utils/__init__.py +0 -0
  433. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli/utils/formatters.py +0 -0
  434. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli.egg-info/dependency_links.txt +0 -0
  435. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli.egg-info/entry_points.txt +0 -0
  436. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli.egg-info/requires.txt +0 -0
  437. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terradev_cli.egg-info/top_level.txt +0 -0
  438. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform.tfvars.example +0 -0
  439. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_optimization/backend.tf +0 -0
  440. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_optimization/error_handling.py +0 -0
  441. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_optimization/parallel_provisioning.tf +0 -0
  442. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_optimization/storage_choice_matrix.py +0 -0
  443. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_optimization/test_error_handler.py +0 -0
  444. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_optimization/versions.tf +0 -0
  445. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -0
  446. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/audit_trail.py +0 -0
  447. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/audit_trails.json +0 -0
  448. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/decision_engine.py +0 -0
  449. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/decision_logs.json +0 -0
  450. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/operations.json +0 -0
  451. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/terraform_manager.py +0 -0
  452. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/terraform_plans.json +0 -0
  453. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/transparency_demo.py +0 -0
  454. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/terraform_transparency/transparency_report.json +0 -0
  455. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/CREDENTIAL_STRATEGY.md +0 -0
  456. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/INTEGRATION_STRATEGY.md +0 -0
  457. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/Makefile +0 -0
  458. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/ci_pipeline.py +0 -0
  459. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/conftest.py +0 -0
  460. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_cli_ux_battle.py +0 -0
  461. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_cli_ux_battle_fixed.py +0 -0
  462. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_cli_ux_final.py +0 -0
  463. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_final_integration.py +0 -0
  464. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_integrated_optimization.py +0 -0
  465. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_p10_production_failover.py +0 -0
  466. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_sso_phase1.py +0 -0
  467. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/root_tests/test_vllm_optimization.py +0 -0
  468. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/simple_test.py +0 -0
  469. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_ai_integrations.py +0 -0
  470. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_checkpoint_manager.py +0 -0
  471. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_cli_smoke.py +0 -0
  472. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_dag_executor.py +0 -0
  473. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_flashoptim.py +0 -0
  474. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_integration.py +0 -0
  475. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_job_state_manager.py +0 -0
  476. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_k8s_regression.py +0 -0
  477. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_latitude_provider.py +0 -0
  478. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_major_providers.py +0 -0
  479. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_mcp_handlers.py +0 -0
  480. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_new_providers.py +0 -0
  481. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_providers.py +0 -0
  482. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_semantic_router.py +0 -0
  483. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_sglang_optimization.py +0 -0
  484. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_ssh_key_manager.py +0 -0
  485. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_training_monitor.py +0 -0
  486. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/tests/test_training_orchestrator.py +0 -0
  487. {terradev_cli-5.3.1 → terradev_cli-5.3.3}/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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: terradev-cli
3
- Version: 5.3.1
3
+ Version: 5.3.3
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.1
96
+ # Terradev CLI v5.3.3
97
97
 
98
98
  **An imperative command-line-interface for AI workload orchestration.**
99
99
 
@@ -105,6 +105,27 @@ 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.3**
109
+
110
+ Added **provider profile system** for intelligent quirk-aware routing across 23 cloud providers:
111
+
112
+ - **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.
113
+
114
+ - **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).
115
+
116
+ - **Dynamic registration**: Users can register custom provider profiles programmatically or load from YAML/JSON files for internal clusters or proprietary cloud providers.
117
+
118
+ - **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.
119
+
120
+ - **CLI commands** (`terradev providers`): New command group for managing custom provider profiles:
121
+ ```bash
122
+ terradev providers load-profiles ~/.terradev/custom_providers.yaml
123
+ terradev providers list-profiles
124
+ terradev providers show-profile runpod
125
+ terradev providers remove-profile my_custom_provider
126
+ terradev providers export-example -o ~/.terradev/custom_providers.yaml
127
+ ```
128
+
108
129
  **NOTES ON 5.3.0**
109
130
 
110
131
  Added **transport-agnostic Prefill/Decode (P/D) disaggregation layer** and **multi-agent KV cache sharing planner**:
@@ -611,115 +632,6 @@ echo "3. Test failover: terradev inferx failover --endpoint burst-llm-api --test
611
632
  echo "4. Update adapters: terradev lora update -n customer-enterprise-a -p ./new-adapters/"
612
633
  ```
613
634
 
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
635
  ---
724
636
 
725
637
  ## Quick Reference
@@ -1,4 +1,4 @@
1
- # Terradev CLI v5.3.0
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "terradev-cli"
7
- version = "5.3.1"
7
+ version = "5.3.3"
8
8
  description = "An imperative command-line-interface for AI workload orchestration."
9
9
  readme = "README.md"
10
10
  license = {text = "Apache-2.0"}
@@ -1,4 +1,4 @@
1
- # Terradev CLI v5.3.1
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