terradev-cli 3.7.7__tar.gz → 4.0.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 (446) hide show
  1. terradev_cli-3.7.7/README.md → terradev_cli-4.0.3/PKG-INFO +80 -14
  2. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/README.md +28 -13
  3. terradev_cli-4.0.3/core/egress_cost_monitor.py +380 -0
  4. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/job_state_manager.py +1 -0
  5. terradev_cli-4.0.3/core/kv_cache_checkpoint_manager.py +697 -0
  6. terradev_cli-4.0.3/core/kv_cache_checkpoint_tests.py +693 -0
  7. terradev_cli-4.0.3/core/mig_manager.py +412 -0
  8. terradev_cli-4.0.3/core/mla_vram_estimator.py +439 -0
  9. terradev_cli-4.0.3/core/mla_vram_tests.py +483 -0
  10. terradev_cli-4.0.3/core/public_ip_billing_tracker.py +406 -0
  11. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/training_orchestrator.py +76 -1
  12. terradev_cli-4.0.3/core/weight_streaming_benchmarks.py +451 -0
  13. terradev_cli-4.0.3/core/weight_streaming_manager.py +577 -0
  14. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/alibaba_provider.py +238 -1
  15. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/aws_provider.py +192 -3
  16. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/azure_provider.py +132 -3
  17. terradev_cli-4.0.3/providers/coreweave_provider.py +416 -0
  18. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/gcp_provider.py +222 -8
  19. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/hetzner_provider.py +129 -1
  20. terradev_cli-4.0.3/providers/lambda_labs_provider.py +397 -0
  21. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/runpod_provider.py +188 -5
  22. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/setup.py +2 -2
  23. {terradev_cli-3.7.7 → terradev_cli-4.0.3/terradev_cli.egg-info}/PKG-INFO +53 -80
  24. terradev_cli-4.0.3/terradev_cli.egg-info/SOURCES.txt +134 -0
  25. terradev_cli-4.0.3/terradev_cli.egg-info/not-zip-safe +1 -0
  26. terradev_cli-4.0.3/terradev_cli.egg-info/requires.txt +29 -0
  27. terradev_cli-4.0.3/terradev_cli.egg-info/top_level.txt +7 -0
  28. terradev_cli-3.7.7/.clawhubignore +0 -5
  29. terradev_cli-3.7.7/.ebextensions/python.config +0 -6
  30. terradev_cli-3.7.7/.env.example +0 -84
  31. terradev_cli-3.7.7/.env.template +0 -164
  32. terradev_cli-3.7.7/.github/workflows/ci.yml +0 -105
  33. terradev_cli-3.7.7/.github/workflows/deploy.yml +0 -30
  34. terradev_cli-3.7.7/.github/workflows/release.yml +0 -50
  35. terradev_cli-3.7.7/.github/workflows/static.yml +0 -42
  36. terradev_cli-3.7.7/BingSiteAuth.xml +0 -4
  37. terradev_cli-3.7.7/CHANGELOG_v3.7.1.md +0 -77
  38. terradev_cli-3.7.7/CUCO_INTEGRATION_GUIDE.md +0 -341
  39. terradev_cli-3.7.7/Dockerfile +0 -55
  40. terradev_cli-3.7.7/Dockerfile.hub +0 -70
  41. terradev_cli-3.7.7/LICENSE +0 -114
  42. terradev_cli-3.7.7/MANIFEST.in +0 -33
  43. terradev_cli-3.7.7/PAGES_README.md +0 -45
  44. terradev_cli-3.7.7/PROGRESS_UPDATE_JUPYTER.ipynb +0 -445
  45. terradev_cli-3.7.7/README_ACTION.md +0 -200
  46. terradev_cli-3.7.7/README_DOCKER.md +0 -287
  47. terradev_cli-3.7.7/README_JUPYTER.md +0 -382
  48. terradev_cli-3.7.7/README_long.md +0 -478
  49. terradev_cli-3.7.7/SKILL.md +0 -241
  50. terradev_cli-3.7.7/USER_GUIDE.md +0 -601
  51. terradev_cli-3.7.7/VLLM_AUTO_OPTIMIZATION_GUIDE.md +0 -294
  52. terradev_cli-3.7.7/VLLM_OPTIMIZATION_GUIDE.md +0 -220
  53. terradev_cli-3.7.7/VLLM_OPTIMIZATION_SUMMARY.md +0 -155
  54. terradev_cli-3.7.7/action.py +0 -106
  55. terradev_cli-3.7.7/action.yml +0 -50
  56. terradev_cli-3.7.7/activations/973dfe463ec85785f5f95af5ba3906eedb2d931c24e69824a89ea65dba4e813b.json +0 -1
  57. terradev_cli-3.7.7/agentic_ai_throughput_report.md +0 -124
  58. terradev_cli-3.7.7/agentic_ai_token_throughput_analysis.png +0 -0
  59. terradev_cli-3.7.7/agentic_ai_token_throughput_visualization.py +0 -640
  60. terradev_cli-3.7.7/ai-discovery.json +0 -114
  61. terradev_cli-3.7.7/analysis/api-differences-comparison.tf +0 -311
  62. terradev_cli-3.7.7/analysis/cost-structure-differences.tf +0 -198
  63. terradev_cli-3.7.7/analysis/inference-arbitrage-pivot.tf +0 -322
  64. terradev_cli-3.7.7/apis/free-apis-latency-arbitrage.tf +0 -504
  65. terradev_cli-3.7.7/aws_ssm_starter.py +0 -251
  66. terradev_cli-3.7.7/b2b_roi_analysis.json +0 -142
  67. terradev_cli-3.7.7/bottleneck_analysis.png +0 -0
  68. terradev_cli-3.7.7/bottleneck_analysis_viz.py +0 -290
  69. terradev_cli-3.7.7/bucket-policy.json +0 -12
  70. terradev_cli-3.7.7/build_v3.7.1.sh +0 -42
  71. terradev_cli-3.7.7/business/compute-arbitrage-business.md +0 -383
  72. terradev_cli-3.7.7/byoapi_real_snapshot.json +0 -107
  73. terradev_cli-3.7.7/check_logs_fix.py +0 -91
  74. terradev_cli-3.7.7/clusters/glm-5/README.md +0 -73
  75. terradev_cli-3.7.7/clusters/glm-5/helm/values-glm5.yaml +0 -152
  76. terradev_cli-3.7.7/clusters/glm-5/k8s/hpa.yaml +0 -55
  77. terradev_cli-3.7.7/clusters/glm-5/k8s/model-cache-pvc.yaml +0 -35
  78. terradev_cli-3.7.7/clusters/glm-5/k8s/namespace.yaml +0 -8
  79. terradev_cli-3.7.7/clusters/glm-5/k8s/pdb.yaml +0 -14
  80. terradev_cli-3.7.7/clusters/glm-5/k8s/service.yaml +0 -49
  81. terradev_cli-3.7.7/clusters/glm-5/k8s/sglang-deployment.yaml +0 -176
  82. terradev_cli-3.7.7/clusters/glm-5/k8s/vllm-deployment.yaml +0 -215
  83. terradev_cli-3.7.7/clusters/glm-5/task.yaml +0 -81
  84. terradev_cli-3.7.7/clusters/glm-5/terraform/main.tf +0 -190
  85. terradev_cli-3.7.7/clusters/glm-5/terraform/outputs.tf +0 -60
  86. terradev_cli-3.7.7/clusters/glm-5/terraform/variables.tf +0 -108
  87. terradev_cli-3.7.7/clusters/moe-template/README.md +0 -141
  88. terradev_cli-3.7.7/clusters/moe-template/helm/values-moe.yaml +0 -231
  89. terradev_cli-3.7.7/clusters/moe-template/k8s/deployment.yaml +0 -358
  90. terradev_cli-3.7.7/clusters/moe-template/k8s/hpa.yaml +0 -51
  91. terradev_cli-3.7.7/clusters/moe-template/k8s/model-cache-pvc.yaml +0 -19
  92. terradev_cli-3.7.7/clusters/moe-template/k8s/namespace.yaml +0 -9
  93. terradev_cli-3.7.7/clusters/moe-template/k8s/pdb.yaml +0 -14
  94. terradev_cli-3.7.7/clusters/moe-template/k8s/service.yaml +0 -47
  95. terradev_cli-3.7.7/clusters/moe-template/task.yaml +0 -159
  96. terradev_cli-3.7.7/clusters/moe-template/terraform/main.tf +0 -213
  97. terradev_cli-3.7.7/clusters/moe-template/terraform/outputs.tf +0 -60
  98. terradev_cli-3.7.7/clusters/moe-template/terraform/variables.tf +0 -170
  99. terradev_cli-3.7.7/clusters/rag-template/README.md +0 -60
  100. terradev_cli-3.7.7/clusters/rag-template/helm/values-rag.yaml +0 -106
  101. terradev_cli-3.7.7/clusters/rag-template/k8s/deployment.yaml +0 -290
  102. terradev_cli-3.7.7/clusters/rag-template/terraform/main.tf +0 -84
  103. terradev_cli-3.7.7/complete_weakness_resolution_report.json +0 -1336
  104. terradev_cli-3.7.7/comprehensive_throughput_quantification.png +0 -0
  105. terradev_cli-3.7.7/comprehensive_throughput_quantification.py +0 -547
  106. terradev_cli-3.7.7/config.json +0 -1
  107. terradev_cli-3.7.7/data_sources_methodology.md +0 -90
  108. terradev_cli-3.7.7/demo/RECORDING_GUIDE.md +0 -80
  109. terradev_cli-3.7.7/demo/generate_gif.py +0 -339
  110. terradev_cli-3.7.7/demo/terradev-demo.gif +0 -0
  111. terradev_cli-3.7.7/demo_k8s_config.yaml +0 -35
  112. terradev_cli-3.7.7/deploy_correct_pricing.py +0 -91
  113. terradev_cli-3.7.7/deploy_enhanced_server.py +0 -660
  114. terradev_cli-3.7.7/deploy_exact_servers.py +0 -70
  115. terradev_cli-3.7.7/deploy_simple_enhanced.py +0 -81
  116. terradev_cli-3.7.7/deploy_telemetry_aws.py +0 -465
  117. terradev_cli-3.7.7/deploy_to_aws.py +0 -239
  118. terradev_cli-3.7.7/direct_aws_starter.py +0 -209
  119. terradev_cli-3.7.7/docker-compose.yml +0 -101
  120. terradev_cli-3.7.7/docs/ADVANCED_FINANCIAL_INNOVATIONS.md +0 -173
  121. terradev_cli-3.7.7/docs/API_DOCUMENTATION.md +0 -901
  122. terradev_cli-3.7.7/docs/BingSiteAuth.xml +0 -4
  123. terradev_cli-3.7.7/docs/FINOPS_ATTRIBUTION_SYSTEM.md +0 -286
  124. terradev_cli-3.7.7/docs/USER_GUIDE.md +0 -952
  125. terradev_cli-3.7.7/docs/architecture.md +0 -228
  126. terradev_cli-3.7.7/docs/index.html +0 -167
  127. terradev_cli-3.7.7/docs/robots.txt +0 -28
  128. terradev_cli-3.7.7/docs/sitemap.xml +0 -45
  129. terradev_cli-3.7.7/eb_deploy.zip +0 -1
  130. terradev_cli-3.7.7/ec2_user_data_starter.py +0 -383
  131. terradev_cli-3.7.7/fallback_server.py +0 -213
  132. terradev_cli-3.7.7/figure_calculation_breakdown.py +0 -265
  133. terradev_cli-3.7.7/fix_server_ports.py +0 -140
  134. terradev_cli-3.7.7/genius_data_storage/data_compressor.py +0 -377
  135. terradev_cli-3.7.7/genius_data_storage/genius_data_demo.py +0 -357
  136. terradev_cli-3.7.7/genius_data_storage/integrity_verifier.py +0 -582
  137. terradev_cli-3.7.7/genius_data_storage/main.tf +0 -682
  138. terradev_cli-3.7.7/genius_data_storage/zero_egress_accessor.py +0 -524
  139. terradev_cli-3.7.7/gpu-check.sh +0 -84
  140. terradev_cli-3.7.7/grafana_training_dashboard.json +0 -385
  141. terradev_cli-3.7.7/helm/terradev/Chart.yaml +0 -38
  142. terradev_cli-3.7.7/helm/terradev/templates/_helpers.tpl +0 -127
  143. terradev_cli-3.7.7/helm/terradev/templates/deployment.yaml +0 -176
  144. terradev_cli-3.7.7/helm/terradev/values.yaml +0 -423
  145. terradev_cli-3.7.7/high_throughput_workload.json +0 -5
  146. terradev_cli-3.7.7/index.html +0 -167
  147. terradev_cli-3.7.7/infrastructure/kubernetes/microservices.yaml +0 -633
  148. terradev_cli-3.7.7/infrastructure/terraform/main.tf +0 -1304
  149. terradev_cli-3.7.7/infrastructure/terraform/parallelism.tf +0 -86
  150. terradev_cli-3.7.7/integrations/cli-tool.tf +0 -606
  151. terradev_cli-3.7.7/integrations/cloud-management-widgets.tf +0 -131
  152. terradev_cli-3.7.7/integrations/cloud-provider-apis.py +0 -602
  153. terradev_cli-3.7.7/integrations/critical-widgets.tf +0 -933
  154. terradev_cli-3.7.7/integrations/devops-cicd-widgets.tf +0 -243
  155. terradev_cli-3.7.7/integrations/devops-essential-tools.tf +0 -314
  156. terradev_cli-3.7.7/integrations/docker-integration.tf +0 -423
  157. terradev_cli-3.7.7/integrations/kubernetes-operator.tf +0 -276
  158. terradev_cli-3.7.7/integrations/mlflow-integration.tf +0 -366
  159. terradev_cli-3.7.7/kaggle_notebooks/01_hf_spaces_cost_optimization.ipynb +0 -456
  160. terradev_cli-3.7.7/kubernetes_training_deployment.yaml +0 -253
  161. terradev_cli-3.7.7/latency_throughput_tradeoff.png +0 -0
  162. terradev_cli-3.7.7/latency_throughput_tradeoff_viz.py +0 -349
  163. terradev_cli-3.7.7/llms.txt +0 -209
  164. terradev_cli-3.7.7/memory_scaling_analysis.png +0 -0
  165. terradev_cli-3.7.7/memory_scaling_viz.py +0 -390
  166. terradev_cli-3.7.7/modules/datadog/README.md +0 -59
  167. terradev_cli-3.7.7/modules/datadog/dashboard.tf +0 -237
  168. terradev_cli-3.7.7/modules/datadog/monitors.tf +0 -203
  169. terradev_cli-3.7.7/modules/datadog/outputs.tf +0 -21
  170. terradev_cli-3.7.7/modules/datadog/provider.tf +0 -5
  171. terradev_cli-3.7.7/modules/datadog/variables.tf +0 -77
  172. terradev_cli-3.7.7/modules/datadog/versions.tf +0 -10
  173. terradev_cli-3.7.7/nginx.conf +0 -30
  174. terradev_cli-3.7.7/openclaw-skill/terradev-gpu-cloud/.clawhubignore +0 -5
  175. terradev_cli-3.7.7/openclaw-skill/terradev-gpu-cloud/LICENSE +0 -21
  176. terradev_cli-3.7.7/openclaw-skill/terradev-gpu-cloud/README.md +0 -106
  177. terradev_cli-3.7.7/openclaw-skill/terradev-gpu-cloud/SKILL.md +0 -314
  178. terradev_cli-3.7.7/openclaw-skill/terradev-gpu-cloud/gpu-check.sh +0 -84
  179. terradev_cli-3.7.7/optimization_impact_viz.py +0 -445
  180. terradev_cli-3.7.7/parallel_provisioning.tf +0 -338
  181. terradev_cli-3.7.7/partnerships/brand-partnerships.tf +0 -523
  182. terradev_cli-3.7.7/partnerships/partnership-roadmap.tf +0 -232
  183. terradev_cli-3.7.7/pricing_analysis_report.json +0 -164
  184. terradev_cli-3.7.7/production_telemetry_server.py +0 -479
  185. terradev_cli-3.7.7/prometheus_training_config.yml +0 -185
  186. terradev_cli-3.7.7/provision_based_pricing_analysis.json +0 -111
  187. terradev_cli-3.7.7/pypi_traffic_report.json +0 -84
  188. terradev_cli-3.7.7/pyproject.toml +0 -192
  189. terradev_cli-3.7.7/pyproject_v2.toml +0 -119
  190. terradev_cli-3.7.7/real_day_one_snapshot.json +0 -52
  191. terradev_cli-3.7.7/remaining_25_analysis_report.json +0 -722
  192. terradev_cli-3.7.7/render.yaml +0 -18
  193. terradev_cli-3.7.7/requirements-render.txt +0 -1
  194. terradev_cli-3.7.7/requirements.txt +0 -56
  195. terradev_cli-3.7.7/requirements_api.txt +0 -8
  196. terradev_cli-3.7.7/requirements_eb.txt +0 -4
  197. terradev_cli-3.7.7/requirements_stripe.txt +0 -5
  198. terradev_cli-3.7.7/robots.txt +0 -28
  199. terradev_cli-3.7.7/sample_workload.json +0 -7
  200. terradev_cli-3.7.7/server_manager.py +0 -287
  201. terradev_cli-3.7.7/setup/Lambda Cloud API spec 1.8.3.json +0 -4816
  202. terradev_cli-3.7.7/setup/account-setup-guide.tf +0 -393
  203. terradev_cli-3.7.7/setup/setup.sh +0 -411
  204. terradev_cli-3.7.7/simple_ssm_starter.py +0 -297
  205. terradev_cli-3.7.7/sitemap.xml +0 -45
  206. terradev_cli-3.7.7/ssh_server_starter.py +0 -311
  207. terradev_cli-3.7.7/start_aws_servers.py +0 -302
  208. terradev_cli-3.7.7/stripe_telemetry_server.py +0 -470
  209. terradev_cli-3.7.7/telemetry_production.db-shm +0 -0
  210. terradev_cli-3.7.7/telemetry_production.db-wal +0 -0
  211. terradev_cli-3.7.7/telemetry_server.py +0 -269
  212. terradev_cli-3.7.7/terradev_cli/CHANGELOG.md +0 -163
  213. terradev_cli-3.7.7/terradev_cli/README_old.md +0 -492
  214. terradev_cli-3.7.7/terradev_cli/README_with_emojis.md +0 -356
  215. terradev_cli-3.7.7/terradev_cli/__init__.py +0 -10
  216. terradev_cli-3.7.7/terradev_cli/__main__.py +0 -31
  217. terradev_cli-3.7.7/terradev_cli/bandit-report.json +0 -388
  218. terradev_cli-3.7.7/terradev_cli/cli.py +0 -9001
  219. terradev_cli-3.7.7/terradev_cli/cli_clean.py +0 -35
  220. terradev_cli-3.7.7/terradev_cli/cli_enhanced.py +0 -577
  221. terradev_cli-3.7.7/terradev_cli/cli_final.py +0 -823
  222. terradev_cli-3.7.7/terradev_cli/cli_optimization.py +0 -479
  223. terradev_cli-3.7.7/terradev_cli/cli_optimization_fixed.py +0 -875
  224. terradev_cli-3.7.7/terradev_cli/cli_optimization_simple.py +0 -850
  225. terradev_cli-3.7.7/terradev_cli/cli_simple.py +0 -249
  226. terradev_cli-3.7.7/terradev_cli/cli_tiered.py +0 -372
  227. terradev_cli-3.7.7/terradev_cli/core/manifest_example.json +0 -1
  228. terradev_cli-3.7.7/terradev_cli/core/semantic_signals/routing_policy.yaml +0 -135
  229. terradev_cli-3.7.7/terradev_cli/cost_optimizer.py +0 -518
  230. terradev_cli-3.7.7/terradev_cli/credential_prompt.py +0 -164
  231. terradev_cli-3.7.7/terradev_cli/demo.py +0 -375
  232. terradev_cli-3.7.7/terradev_cli/entry_point.py +0 -210
  233. terradev_cli-3.7.7/terradev_cli/integrations/Terradev LOGO BLACK.png +0 -0
  234. terradev_cli-3.7.7/terradev_cli/integrations/Terradev LOGO WHITEW.png +0 -0
  235. terradev_cli-3.7.7/terradev_cli/k8s/terraform_wrapper.py +0 -425
  236. terradev_cli-3.7.7/terradev_cli/kubernetes/inferx-cost-optimized.yaml +0 -630
  237. terradev_cli-3.7.7/terradev_cli/kubernetes/inferx-infrastructure.yaml +0 -404
  238. terradev_cli-3.7.7/terradev_cli/kubernetes/inferx-models.yaml +0 -531
  239. terradev_cli-3.7.7/terradev_cli/kubernetes/inferx-platform.yaml +0 -619
  240. terradev_cli-3.7.7/terradev_cli/kubernetes/inferx_setup.py +0 -550
  241. terradev_cli-3.7.7/terradev_cli/providers/coreweave_provider.py +0 -226
  242. terradev_cli-3.7.7/terradev_cli/providers/lambda_labs_provider.py +0 -215
  243. terradev_cli-3.7.7/terradev_cli/requirements.txt +0 -3
  244. terradev_cli-3.7.7/terradev_cli/requirements_minimal.txt +0 -3
  245. terradev_cli-3.7.7/terradev_cli/safety-report.json +0 -18554
  246. terradev_cli-3.7.7/terradev_cli/telemetry_protection.py +0 -180
  247. terradev_cli-3.7.7/terradev_cli/terraform/main.tf +0 -139
  248. terradev_cli-3.7.7/terradev_cli/terraform/modules/__init__.py +0 -19
  249. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-aws/bootstrap.sh +0 -271
  250. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-aws/main.tf +0 -143
  251. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-aws/outputs.tf +0 -69
  252. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-aws/variables.tf +0 -83
  253. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-aws/versions.tf +0 -12
  254. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-hyperstack/bootstrap.sh +0 -231
  255. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-hyperstack/main.tf +0 -107
  256. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-hyperstack/outputs.tf +0 -59
  257. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-hyperstack/variables.tf +0 -63
  258. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-hyperstack/versions.tf +0 -12
  259. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-lambda/bootstrap.sh +0 -231
  260. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-lambda/main.tf +0 -107
  261. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-lambda/outputs.tf +0 -59
  262. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-lambda/variables.tf +0 -63
  263. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-lambda/versions.tf +0 -12
  264. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-vastai/bootstrap.sh +0 -231
  265. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-vastai/main.tf +0 -107
  266. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-vastai/outputs.tf +0 -59
  267. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-vastai/variables.tf +0 -63
  268. terradev_cli-3.7.7/terradev_cli/terraform/modules/gpu-node-vastai/versions.tf +0 -12
  269. terradev_cli-3.7.7/terradev_cli/terraform/modules/k8s-control-plane/join-script.tpl +0 -95
  270. terradev_cli-3.7.7/terradev_cli/terraform/modules/k8s-control-plane/kubeconfig.tpl +0 -29
  271. terradev_cli-3.7.7/terradev_cli/terraform/modules/k8s-control-plane/main.tf +0 -183
  272. terradev_cli-3.7.7/terradev_cli/terraform/modules/k8s-control-plane/outputs.tf +0 -50
  273. terradev_cli-3.7.7/terradev_cli/terraform/modules/k8s-control-plane/variables.tf +0 -59
  274. terradev_cli-3.7.7/terradev_cli/terraform/modules/k8s-control-plane/versions.tf +0 -16
  275. terradev_cli-3.7.7/terradev_cli/terraform/modules/networking/main.tf +0 -193
  276. terradev_cli-3.7.7/terradev_cli/terraform/modules/networking/outputs.tf +0 -50
  277. terradev_cli-3.7.7/terradev_cli/terraform/modules/networking/variables.tf +0 -52
  278. terradev_cli-3.7.7/terradev_cli/terraform/modules/networking/versions.tf +0 -12
  279. terradev_cli-3.7.7/terradev_cli/terraform/outputs.tf +0 -118
  280. terradev_cli-3.7.7/terradev_cli/terraform/price-optimizer/optimal-allocation.py +0 -188
  281. terradev_cli-3.7.7/terradev_cli/terraform/providers.tf +0 -22
  282. terradev_cli-3.7.7/terradev_cli/terraform/variables.tf +0 -95
  283. terradev_cli-3.7.7/terradev_cli.egg-info/PKG-INFO +0 -728
  284. terradev_cli-3.7.7/terradev_cli.egg-info/SOURCES.txt +0 -429
  285. terradev_cli-3.7.7/terradev_cli.egg-info/requires.txt +0 -67
  286. terradev_cli-3.7.7/terradev_cli.egg-info/top_level.txt +0 -1
  287. terradev_cli-3.7.7/terraform.tfvars.example +0 -50
  288. terradev_cli-3.7.7/terraform_cli/README.md +0 -471
  289. terradev_cli-3.7.7/terraform_cli/demo_usage.py +0 -152
  290. terradev_cli-3.7.7/terraform_cli/install.sh +0 -346
  291. terradev_cli-3.7.7/terraform_cli/terradev_cli.py +0 -717
  292. terradev_cli-3.7.7/terraform_optimization/backend.tf +0 -606
  293. terradev_cli-3.7.7/terraform_optimization/error_handling.py +0 -742
  294. terradev_cli-3.7.7/terraform_optimization/storage_choice_matrix.py +0 -681
  295. terradev_cli-3.7.7/terraform_optimization/test_error_handler.py +0 -83
  296. terradev_cli-3.7.7/terraform_optimization/versions.tf +0 -668
  297. terradev_cli-3.7.7/terraform_transparency/audit_demo/trail_3caed73ad5bf.json +0 -428
  298. terradev_cli-3.7.7/terraform_transparency/audit_trail.py +0 -610
  299. terradev_cli-3.7.7/terraform_transparency/audit_trails.json +0 -430
  300. terradev_cli-3.7.7/terraform_transparency/decision_engine.py +0 -671
  301. terradev_cli-3.7.7/terraform_transparency/decision_logs.json +0 -192
  302. terradev_cli-3.7.7/terraform_transparency/operations.json +0 -45
  303. terradev_cli-3.7.7/terraform_transparency/terraform_manager.py +0 -627
  304. terradev_cli-3.7.7/terraform_transparency/terraform_plans.json +0 -1
  305. terradev_cli-3.7.7/terraform_transparency/transparency_demo.py +0 -417
  306. terradev_cli-3.7.7/terraform_transparency/transparency_report.json +0 -33
  307. terradev_cli-3.7.7/test_cli_telemetry.py +0 -156
  308. terradev_cli-3.7.7/test_cli_ux_battle.py +0 -559
  309. terradev_cli-3.7.7/test_cli_ux_battle_fixed.py +0 -654
  310. terradev_cli-3.7.7/test_cli_ux_final.py +0 -524
  311. terradev_cli-3.7.7/test_final_integration.py +0 -355
  312. terradev_cli-3.7.7/test_integrated_optimization.py +0 -449
  313. terradev_cli-3.7.7/test_p10_production_failover.py +0 -667
  314. terradev_cli-3.7.7/test_telemetry_backend.py +0 -203
  315. terradev_cli-3.7.7/test_vllm_optimization.py +0 -182
  316. terradev_cli-3.7.7/tests/INTEGRATION_STRATEGY.md +0 -337
  317. terradev_cli-3.7.7/tests/Makefile +0 -201
  318. terradev_cli-3.7.7/tests/ci_pipeline.py +0 -480
  319. terradev_cli-3.7.7/tests/conftest.py +0 -10
  320. terradev_cli-3.7.7/tests/simple_test.py +0 -181
  321. terradev_cli-3.7.7/tests/test_checkpoint_manager.py +0 -198
  322. terradev_cli-3.7.7/tests/test_cli_smoke.py +0 -200
  323. terradev_cli-3.7.7/tests/test_dag_executor.py +0 -400
  324. terradev_cli-3.7.7/tests/test_integration.py +0 -577
  325. terradev_cli-3.7.7/tests/test_job_state_manager.py +0 -307
  326. terradev_cli-3.7.7/tests/test_providers.py +0 -264
  327. terradev_cli-3.7.7/tests/test_semantic_router.py +0 -1474
  328. terradev_cli-3.7.7/tests/test_sglang_optimization.py +0 -595
  329. terradev_cli-3.7.7/tests/test_ssh_key_manager.py +0 -154
  330. terradev_cli-3.7.7/tests/test_training_monitor.py +0 -237
  331. terradev_cli-3.7.7/tests/test_training_orchestrator.py +0 -321
  332. terradev_cli-3.7.7/throughput_comparison_analysis.png +0 -0
  333. terradev_cli-3.7.7/throughput_comparison_viz.py +0 -303
  334. terradev_cli-3.7.7/volatility_charts/aws_a100_volatility.png +0 -0
  335. terradev_cli-3.7.7/volatility_charts/aws_v100_volatility.png +0 -0
  336. terradev_cli-3.7.7/volatility_charts/runpod_a100_volatility.png +0 -0
  337. terradev_cli-3.7.7/volatility_charts/runpod_v100_volatility.png +0 -0
  338. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/__init__.py +0 -0
  339. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/async_config.py +0 -0
  340. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/auth.py +0 -0
  341. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/checkpoint_manager.py +0 -0
  342. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/config.py +0 -0
  343. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/cost_scaler.py +0 -0
  344. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/cost_tracker.py +0 -0
  345. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/cuda_graph_integrator.py +0 -0
  346. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/dag_executor.py +0 -0
  347. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/data_governance.py +0 -0
  348. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/dataset_stager.py +0 -0
  349. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/deployment_router.py +0 -0
  350. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/drift_detector.py +0 -0
  351. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/egress_optimizer.py +0 -0
  352. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/enterprise_auth.py +0 -0
  353. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/gitops_manager.py +0 -0
  354. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/gpu_topology.py +0 -0
  355. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/helm_generator.py +0 -0
  356. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/helm_generator_old.py +0 -0
  357. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/hf_cli_integration.py +0 -0
  358. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/hf_smart_templates.py +0 -0
  359. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/hf_spaces.py +0 -0
  360. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/inference_router.py +0 -0
  361. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/manifest_cache.py +0 -0
  362. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/model_orchestrator.py +0 -0
  363. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/oidc_provider.py +0 -0
  364. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/optimization_config.py +0 -0
  365. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/parallel_provisioner.py +0 -0
  366. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/preflight_validator.py +0 -0
  367. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/price_discovery.py +0 -0
  368. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/price_discovery_mock.py +0 -0
  369. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/price_intelligence.py +0 -0
  370. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/quick_start.py +0 -0
  371. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/rate_limiter.py +0 -0
  372. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/saml_provider.py +0 -0
  373. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_router.py +0 -0
  374. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/__init__.py +0 -0
  375. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/base_signal.py +0 -0
  376. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/complexity_signal.py +0 -0
  377. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/domain_signal.py +0 -0
  378. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/keyword_signal.py +0 -0
  379. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/language_signal.py +0 -0
  380. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/modality_signal.py +0 -0
  381. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/orchestrator.py +0 -0
  382. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/semantic_signals/safety_signal.py +0 -0
  383. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/session_manager.py +0 -0
  384. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/ssh_key_manager.py +0 -0
  385. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/stripe_manager.py +0 -0
  386. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/telemetry.py +0 -0
  387. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/telemetry_backup.py +0 -0
  388. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/terradev_engine.py +0 -0
  389. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/tier_manager.py +0 -0
  390. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/trace_viewer.py +0 -0
  391. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/training_monitor.py +0 -0
  392. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/user_manager.py +0 -0
  393. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/core/warm_pool_manager.py +0 -0
  394. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/integrations/__init__.py +0 -0
  395. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/integrations/datadog_integration.py +0 -0
  396. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/integrations/prometheus_integration.py +0 -0
  397. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/integrations/wandb_integration.py +0 -0
  398. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/__init__.py +0 -0
  399. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/dvc_service.py +0 -0
  400. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/guardrails_service.py +0 -0
  401. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/huggingface_service.py +0 -0
  402. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/kserve_service.py +0 -0
  403. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/kubernetes_enhanced.py +0 -0
  404. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/kubernetes_enhanced_fixed.py +0 -0
  405. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/kubernetes_service.py +0 -0
  406. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/langchain_service.py +0 -0
  407. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/langgraph_service.py +0 -0
  408. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/langsmith_service.py +0 -0
  409. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/lmcache_service.py +0 -0
  410. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/mlflow_service.py +0 -0
  411. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/ollama_service.py +0 -0
  412. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/phoenix_service.py +0 -0
  413. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/qdrant_service.py +0 -0
  414. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/ray_enhanced.py +0 -0
  415. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/ray_service.py +0 -0
  416. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/sglang_service.py +0 -0
  417. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/vllm_service.py +0 -0
  418. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/wandb_enhanced.py +0 -0
  419. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/ml_services/wandb_service.py +0 -0
  420. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/optimization/__init__.py +0 -0
  421. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/optimization/auto_optimizer.py +0 -0
  422. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/optimization/cuco_optimizer.py +0 -0
  423. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/__init__.py +0 -0
  424. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/base_provider.py +0 -0
  425. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/baseten_provider.py +0 -0
  426. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/crusoe_provider.py +0 -0
  427. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/demo_mode.py +0 -0
  428. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/digitalocean_provider.py +0 -0
  429. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/fluidstack_provider.py +0 -0
  430. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/huggingface_provider.py +0 -0
  431. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/hyperstack_provider.py +0 -0
  432. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/inferx_provider.py +0 -0
  433. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/oracle_provider.py +0 -0
  434. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/ovhcloud_provider.py +0 -0
  435. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/provider_factory.py +0 -0
  436. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/real_pricing.py +0 -0
  437. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/siliconflow_provider.py +0 -0
  438. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/tensordock_provider.py +0 -0
  439. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/providers/vastai_provider.py +0 -0
  440. {terradev_cli-3.7.7 → terradev_cli-4.0.3}/setup.cfg +0 -0
  441. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/terradev_cli/__init__.py +0 -0
  442. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/terradev_cli/cli.py +0 -0
  443. {terradev_cli-3.7.7 → terradev_cli-4.0.3}/terradev_cli.egg-info/dependency_links.txt +0 -0
  444. {terradev_cli-3.7.7 → terradev_cli-4.0.3}/terradev_cli.egg-info/entry_points.txt +0 -0
  445. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/utils/__init__.py +0 -0
  446. {terradev_cli-3.7.7/terradev_cli → terradev_cli-4.0.3}/utils/formatters.py +0 -0
@@ -1,25 +1,91 @@
1
- # Terradev CLI v3.7.7
2
-
3
- **NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes**
1
+ Metadata-Version: 2.4
2
+ Name: terradev-cli
3
+ Version: 4.0.3
4
+ Summary: MLA-aware VRAM estimation, weight streaming, and KV cache checkpointing for production ML workloads
5
+ Home-page: https://github.com/theoddden/terradev
6
+ Author: Terradev Team
7
+ Author-email: team@terradev.com
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.8
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Requires-Python: >=3.8
17
+ Description-Content-Type: text/markdown
18
+ Requires-Dist: click>=8.0.0
19
+ Requires-Dist: aiohttp>=3.9.0
20
+ Requires-Dist: pyyaml>=6.0
21
+ Requires-Dist: requests>=2.31.0
22
+ Requires-Dist: stripe>=7.0.0
23
+ Provides-Extra: aws
24
+ Requires-Dist: boto3>=1.34.0; extra == "aws"
25
+ Provides-Extra: gcp
26
+ Requires-Dist: google-cloud-compute>=1.8.0; extra == "gcp"
27
+ Provides-Extra: azure
28
+ Requires-Dist: azure-mgmt-compute>=29.0.0; extra == "azure"
29
+ Requires-Dist: azure-identity>=1.12.0; extra == "azure"
30
+ Provides-Extra: oracle
31
+ Requires-Dist: oci>=2.118.0; extra == "oracle"
32
+ Provides-Extra: hf
33
+ Requires-Dist: huggingface-hub>=0.19.0; extra == "hf"
34
+ Provides-Extra: all
35
+ Requires-Dist: boto3>=1.34.0; extra == "all"
36
+ Requires-Dist: google-cloud-compute>=1.8.0; extra == "all"
37
+ Requires-Dist: azure-mgmt-compute>=29.0.0; extra == "all"
38
+ Requires-Dist: azure-identity>=1.12.0; extra == "all"
39
+ Requires-Dist: oci>=2.118.0; extra == "all"
40
+ Requires-Dist: huggingface-hub>=0.19.0; extra == "all"
41
+ Dynamic: author
42
+ Dynamic: author-email
43
+ Dynamic: classifier
44
+ Dynamic: description
45
+ Dynamic: description-content-type
46
+ Dynamic: home-page
47
+ Dynamic: provides-extra
48
+ Dynamic: requires-dist
49
+ Dynamic: requires-python
50
+ Dynamic: summary
51
+
52
+ # Terradev CLI v4.0.1
53
+
54
+ **MLA-aware VRAM estimation, weight streaming, and KV cache checkpointing for production ML workloads**
4
55
 
5
56
  ![Terradev Demo](https://raw.githubusercontent.com/theoddden/Terradev/main/demo/terradev-demo.gif)
6
57
 
7
58
  Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
8
59
 
9
- ## What's New in v3.7.7
60
+ ## What's New in v4.0.1
61
+
62
+ **Critical Cloud Provider Feature Gaps Implementation**
63
+
64
+ Revolutionary new features for production ML workloads with spot instance resilience:
65
+
66
+ ### 🚀 MLA-Aware VRAM Estimation
67
+ - **DeepSeek V3/R1 & Kimi K2 Support**: 12.5x KV cache compression (2440GB → 195GB)
68
+ - **57.3% Cost Savings**: Prevents over-provisioning with accurate MLA calculations
69
+ - **GPU Count Optimization**: Intelligent recommendations for large models
70
+ - **Model Registry**: Comprehensive MLA architecture flags
10
71
 
11
- **Complete SGLang Optimization Stack**
72
+ ### Weight Streaming
73
+ - **3.6x Faster Cold Starts**: 30-45 minutes → under 3 minutes
74
+ - **Parallel Download/Compute**: Async streaming of model layer chunks
75
+ - **vLLM/SGLang Integration**: Seamless framework compatibility
76
+ - **Multi-Storage Support**: HTTP, S3, GCS, VAST Data backends
12
77
 
13
- Revolutionary workload-specific auto-optimization for SGLang serving with 7 workload types:
78
+ ### 💾 Preemptible KV Cache Checkpointing
79
+ - **<2 Minute Recovery**: Spot interruption handling with state preservation
80
+ - **NVMe Serialization**: ~8 second checkpoint creation
81
+ - **Cloud Storage Backup**: S3/GCS/VAST Data persistence
82
+ - **Zero Data Loss**: Complete failure → brief pause with resume
14
83
 
15
- ### 🚀 SGLang Workload Optimizations
16
- - **Agentic/Multi-turn Chat**: LPM + RadixAttention + cache-aware routing (75-90% cache hit rate)
17
- - **High-Throughput Batch**: FCFS + CUDA graphs + FP8 quantization (maximum tokens/sec)
18
- - **Low-Latency/Real-Time**: EAGLE3 + Spec V2 + capped concurrency (30-50% TTFT improvement)
19
- - **MoE Models**: DeepEP auto + TBO/SBO + EPLB + redundant experts (up to 2x throughput)
20
- - **PD Disaggregated**: Separate prefill/decode configurations with production optimizations
21
- - **Structured Output/RAG**: xGrammar + FSM optimization (10x faster structured output)
22
- - **Hardware-Specific**: H100/H200, H20, GB200, AMD MI300X optimizations
84
+ ### 🎯 Real-World Impact
85
+ - **60-80% Cost Savings**: Reliable spot instance usage for stateful workloads
86
+ - **99.4% Uptime**: Enterprise-grade reliability with cloud-native economics
87
+ - **Multi-Cloud Flexibility**: 19 cloud provider integrations
88
+ - **Production Ready**: Comprehensive test coverage and validation
23
89
 
24
90
  ### 🎯 Auto-Apply Decision Tree
25
91
  ```bash
@@ -1,25 +1,40 @@
1
- # Terradev CLI v3.7.7
1
+ # Terradev CLI v4.0.1
2
2
 
3
- **NUMA-aware GPU provisioning and orchestration for stateless MoE workloads of all sizes**
3
+ **MLA-aware VRAM estimation, weight streaming, and KV cache checkpointing for production ML workloads**
4
4
 
5
5
  ![Terradev Demo](https://raw.githubusercontent.com/theoddden/Terradev/main/demo/terradev-demo.gif)
6
6
 
7
7
  Terradev is a cross-cloud compute-provisioning CLI that compresses + stages datasets, provisions optimal instances + nodes, and deploys **3-5x faster** than sequential provisioning.
8
8
 
9
- ## What's New in v3.7.7
9
+ ## What's New in v4.0.1
10
10
 
11
- **Complete SGLang Optimization Stack**
11
+ **Critical Cloud Provider Feature Gaps Implementation**
12
12
 
13
- Revolutionary workload-specific auto-optimization for SGLang serving with 7 workload types:
13
+ Revolutionary new features for production ML workloads with spot instance resilience:
14
14
 
15
- ### 🚀 SGLang Workload Optimizations
16
- - **Agentic/Multi-turn Chat**: LPM + RadixAttention + cache-aware routing (75-90% cache hit rate)
17
- - **High-Throughput Batch**: FCFS + CUDA graphs + FP8 quantization (maximum tokens/sec)
18
- - **Low-Latency/Real-Time**: EAGLE3 + Spec V2 + capped concurrency (30-50% TTFT improvement)
19
- - **MoE Models**: DeepEP auto + TBO/SBO + EPLB + redundant experts (up to 2x throughput)
20
- - **PD Disaggregated**: Separate prefill/decode configurations with production optimizations
21
- - **Structured Output/RAG**: xGrammar + FSM optimization (10x faster structured output)
22
- - **Hardware-Specific**: H100/H200, H20, GB200, AMD MI300X optimizations
15
+ ### 🚀 MLA-Aware VRAM Estimation
16
+ - **DeepSeek V3/R1 & Kimi K2 Support**: 12.5x KV cache compression (2440GB 195GB)
17
+ - **57.3% Cost Savings**: Prevents over-provisioning with accurate MLA calculations
18
+ - **GPU Count Optimization**: Intelligent recommendations for large models
19
+ - **Model Registry**: Comprehensive MLA architecture flags
20
+
21
+ ### Weight Streaming
22
+ - **3.6x Faster Cold Starts**: 30-45 minutes under 3 minutes
23
+ - **Parallel Download/Compute**: Async streaming of model layer chunks
24
+ - **vLLM/SGLang Integration**: Seamless framework compatibility
25
+ - **Multi-Storage Support**: HTTP, S3, GCS, VAST Data backends
26
+
27
+ ### 💾 Preemptible KV Cache Checkpointing
28
+ - **<2 Minute Recovery**: Spot interruption handling with state preservation
29
+ - **NVMe Serialization**: ~8 second checkpoint creation
30
+ - **Cloud Storage Backup**: S3/GCS/VAST Data persistence
31
+ - **Zero Data Loss**: Complete failure → brief pause with resume
32
+
33
+ ### 🎯 Real-World Impact
34
+ - **60-80% Cost Savings**: Reliable spot instance usage for stateful workloads
35
+ - **99.4% Uptime**: Enterprise-grade reliability with cloud-native economics
36
+ - **Multi-Cloud Flexibility**: 19 cloud provider integrations
37
+ - **Production Ready**: Comprehensive test coverage and validation
23
38
 
24
39
  ### 🎯 Auto-Apply Decision Tree
25
40
  ```bash
@@ -0,0 +1,380 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Egress Cost Monitor - Proactive egress cost warnings and optimization
4
+
5
+ CRITICAL FIXES v4.0.0:
6
+ - Cross-cloud egress cost warnings
7
+ - Multi-hop routing recommendations
8
+ - Real-time cost tracking
9
+ - Budget alert integration
10
+ """
11
+
12
+ import asyncio
13
+ import logging
14
+ from typing import Dict, List, Any, Optional, Tuple
15
+ from datetime import datetime, timedelta
16
+ from dataclasses import dataclass
17
+ from enum import Enum
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ class EgressCostLevel(Enum):
23
+ LOW = "low"
24
+ MEDIUM = "medium"
25
+ HIGH = "high"
26
+ CRITICAL = "critical"
27
+
28
+
29
+ @dataclass
30
+ class EgressCostAlert:
31
+ level: EgressCostLevel
32
+ message: str
33
+ estimated_cost: float
34
+ data_size_gb: float
35
+ recommendation: str
36
+ alternative_providers: List[str]
37
+
38
+
39
+ class EgressCostMonitor:
40
+ """Monitor and warn about egress costs across cloud providers"""
41
+
42
+ # Egress costs per GB (USD) - major cloud providers
43
+ EGRESS_COSTS = {
44
+ # AWS
45
+ "aws": {
46
+ "us-east-1": {"aws": 0.09, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.09},
47
+ "us-west-2": {"aws": 0.09, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.09},
48
+ "eu-west-1": {"aws": 0.09, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.09},
49
+ "ap-southeast-1": {"aws": 0.14, "gcp": 0.19, "azure": 0.17, "lambda_labs": 0.14},
50
+ },
51
+ # GCP
52
+ "gcp": {
53
+ "us-central1": {"aws": 0.12, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.12},
54
+ "us-west1": {"aws": 0.12, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.12},
55
+ "europe-west1": {"aws": 0.12, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.12},
56
+ "asia-east1": {"aws": 0.19, "gcp": 0.19, "azure": 0.17, "lambda_labs": 0.19},
57
+ },
58
+ # Azure
59
+ "azure": {
60
+ "eastus": {"aws": 0.09, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.09},
61
+ "westus2": {"aws": 0.09, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.09},
62
+ "westeurope": {"aws": 0.09, "gcp": 0.12, "azure": 0.09, "lambda_labs": 0.09},
63
+ "southeastasia": {"aws": 0.14, "gcp": 0.19, "azure": 0.17, "lambda_labs": 0.14},
64
+ },
65
+ # GPU-first providers (typically zero egress)
66
+ "lambda_labs": {
67
+ "us-east-1": {"aws": 0.0, "gcp": 0.0, "azure": 0.0, "lambda_labs": 0.0},
68
+ "us-west-2": {"aws": 0.0, "gcp": 0.0, "azure": 0.0, "lambda_labs": 0.0},
69
+ },
70
+ "runpod": {
71
+ "us-east": {"aws": 0.0, "gcp": 0.0, "azure": 0.0, "runpod": 0.0},
72
+ },
73
+ "vastai": {
74
+ "us-west": {"aws": 0.01, "gcp": 0.01, "azure": 0.01, "vastai": 0.01},
75
+ },
76
+ }
77
+
78
+ # Cost thresholds for alerts (USD)
79
+ COST_THRESHOLDS = {
80
+ EgressCostLevel.LOW: 1.0, # $1
81
+ EgressCostLevel.MEDIUM: 10.0, # $10
82
+ EgressCostLevel.HIGH: 50.0, # $50
83
+ EgressCostLevel.CRITICAL: 100.0, # $100
84
+ }
85
+
86
+ def __init__(self, budget_limit: Optional[float] = None):
87
+ self.budget_limit = budget_limit
88
+ self.cost_history: List[Dict[str, Any]] = []
89
+
90
+ async def analyze_egress_cost(
91
+ self,
92
+ src_provider: str,
93
+ src_region: str,
94
+ dst_provider: str,
95
+ dst_region: str,
96
+ data_size_gb: float,
97
+ operation_type: str = "transfer"
98
+ ) -> Dict[str, Any]:
99
+ """Analyze egress cost and generate alerts"""
100
+
101
+ # Get base egress cost
102
+ base_cost = self._get_egress_cost(src_provider, src_region, dst_provider)
103
+ estimated_cost = base_cost * data_size_gb
104
+
105
+ # Determine alert level
106
+ alert_level = self._determine_alert_level(estimated_cost)
107
+
108
+ # Generate recommendations
109
+ recommendations = await self._generate_recommendations(
110
+ src_provider, src_region, dst_provider, dst_region, data_size_gb, estimated_cost
111
+ )
112
+
113
+ # Find alternative routes
114
+ alternatives = await self._find_alternative_routes(
115
+ src_provider, src_region, dst_provider, dst_region, data_size_gb
116
+ )
117
+
118
+ # Create alert if needed
119
+ alert = None
120
+ if alert_level != EgressCostLevel.LOW:
121
+ alert = EgressCostAlert(
122
+ level=alert_level,
123
+ message=self._generate_alert_message(alert_level, estimated_cost, data_size_gb),
124
+ estimated_cost=estimated_cost,
125
+ data_size_gb=data_size_gb,
126
+ recommendation=recommendations[0] if recommendations else "No specific recommendations",
127
+ alternative_providers=[alt["provider"] for alt in alternatives[:3]],
128
+ )
129
+
130
+ # Store in history
131
+ self._store_cost_record({
132
+ "timestamp": datetime.now(),
133
+ "src_provider": src_provider,
134
+ "src_region": src_region,
135
+ "dst_provider": dst_provider,
136
+ "dst_region": dst_region,
137
+ "data_size_gb": data_size_gb,
138
+ "estimated_cost": estimated_cost,
139
+ "alert_level": alert_level.value,
140
+ "operation_type": operation_type,
141
+ })
142
+
143
+ return {
144
+ "estimated_cost": estimated_cost,
145
+ "cost_per_gb": base_cost,
146
+ "alert_level": alert_level.value,
147
+ "alert": alert.__dict__ if alert else None,
148
+ "recommendations": recommendations,
149
+ "alternative_routes": alternatives,
150
+ "budget_remaining": self.budget_limit - self._get_monthly_spend() if self.budget_limit else None,
151
+ "budget_exceeded": self.budget_limit and (self._get_monthly_spend() + estimated_cost) > self.budget_limit,
152
+ }
153
+
154
+ def _get_egress_cost(self, src_provider: str, src_region: str, dst_provider: str) -> float:
155
+ """Get egress cost per GB"""
156
+ provider_costs = self.EGRESS_COSTS.get(src_provider.lower(), {})
157
+ region_costs = provider_costs.get(src_region, {})
158
+ return region_costs.get(dst_provider.lower(), 0.09) # Default to $0.09/GB
159
+
160
+ def _determine_alert_level(self, estimated_cost: float) -> EgressCostLevel:
161
+ """Determine alert level based on cost"""
162
+ if estimated_cost >= self.COST_THRESHOLDS[EgressCostLevel.CRITICAL]:
163
+ return EgressCostLevel.CRITICAL
164
+ elif estimated_cost >= self.COST_THRESHOLDS[EgressCostLevel.HIGH]:
165
+ return EgressCostLevel.HIGH
166
+ elif estimated_cost >= self.COST_THRESHOLDS[EgressCostLevel.MEDIUM]:
167
+ return EgressCostLevel.MEDIUM
168
+ else:
169
+ return EgressCostLevel.LOW
170
+
171
+ def _generate_alert_message(self, level: EgressCostLevel, cost: float, size_gb: float) -> str:
172
+ """Generate alert message"""
173
+ messages = {
174
+ EgressCostLevel.MEDIUM: f"⚠️ Medium egress cost: ${cost:.2f} for {size_gb:.1f}GB transfer",
175
+ EgressCostLevel.HIGH: f"🚨 High egress cost: ${cost:.2f} for {size_gb:.1f}GB transfer",
176
+ EgressCostLevel.CRITICAL: f"💀 CRITICAL egress cost: ${cost:.2f} for {size_gb:.1f}GB transfer",
177
+ }
178
+ return messages.get(level, f"Egress cost: ${cost:.2f} for {size_gb:.1f}GB")
179
+
180
+ async def _generate_recommendations(
181
+ self,
182
+ src_provider: str,
183
+ src_region: str,
184
+ dst_provider: str,
185
+ dst_region: str,
186
+ data_size_gb: float,
187
+ estimated_cost: float
188
+ ) -> List[str]:
189
+ """Generate cost optimization recommendations"""
190
+ recommendations = []
191
+
192
+ # Check if both providers are in same cloud
193
+ if src_provider == dst_provider:
194
+ recommendations.append("Same-cloud transfer - use internal networking to minimize costs")
195
+
196
+ # Check for zero-egress alternatives
197
+ zero_egress_providers = ["lambda_labs", "runpod"]
198
+ if src_provider in zero_egress_providers or dst_provider in zero_egress_providers:
199
+ recommendations.append("Consider using zero-egress providers for cost savings")
200
+
201
+ # Large data transfer recommendations
202
+ if data_size_gb > 100:
203
+ recommendations.append("For large transfers (>100GB), consider using physical storage shipment")
204
+ recommendations.append("Use compression to reduce data size before transfer")
205
+
206
+ # High cost recommendations
207
+ if estimated_cost > 50:
208
+ recommendations.append("High egress cost detected - consider multi-hop routing")
209
+ recommendations.append("Evaluate if data can be processed closer to source")
210
+
211
+ # Regional optimization
212
+ if src_provider != dst_provider:
213
+ recommendations.append("Cross-cloud transfer detected - check for regional cost variations")
214
+
215
+ return recommendations
216
+
217
+ async def _find_alternative_routes(
218
+ self,
219
+ src_provider: str,
220
+ src_region: str,
221
+ dst_provider: str,
222
+ dst_region: str,
223
+ data_size_gb: float
224
+ ) -> List[Dict[str, Any]]:
225
+ """Find alternative routing options to minimize egress costs"""
226
+ alternatives = []
227
+
228
+ # Zero-egress provider alternatives
229
+ zero_egress_providers = ["lambda_labs", "runpod"]
230
+
231
+ for provider in zero_egress_providers:
232
+ if provider != src_provider and provider != dst_provider:
233
+ # Calculate cost via this provider
234
+ cost_to_provider = self._get_egress_cost(src_provider, src_region, provider) * data_size_gb
235
+ cost_from_provider = self._get_egress_cost(provider, "us-east-1", dst_provider) * data_size_gb
236
+ total_cost = cost_to_provider + cost_from_provider
237
+
238
+ alternatives.append({
239
+ "provider": provider,
240
+ "route": f"{src_provider} → {provider} → {dst_provider}",
241
+ "total_cost": total_cost,
242
+ "savings": max(0, (self._get_egress_cost(src_provider, src_region, dst_provider) * data_size_gb) - total_cost),
243
+ "hops": 2,
244
+ "zero_egress": True,
245
+ })
246
+
247
+ # Same-region alternatives
248
+ if src_provider != dst_provider:
249
+ # Check if there are same-region instances
250
+ same_region_cost = self._get_egress_cost(src_provider, src_region, dst_provider) * data_size_gb
251
+ if same_region_cost > 0:
252
+ alternatives.append({
253
+ "provider": f"{src_provider}-{src_region}",
254
+ "route": f"Stay within {src_provider} {src_region}",
255
+ "total_cost": same_region_cost * 0.5, # Assume 50% savings for same-region
256
+ "savings": same_region_cost * 0.5,
257
+ "hops": 0,
258
+ "zero_egress": False,
259
+ })
260
+
261
+ # Sort by savings
262
+ alternatives.sort(key=lambda x: x["savings"], reverse=True)
263
+ return alternatives[:5] # Return top 5 alternatives
264
+
265
+ def _store_cost_record(self, record: Dict[str, Any]):
266
+ """Store cost record in history"""
267
+ self.cost_history.append(record)
268
+
269
+ # Keep only last 1000 records
270
+ if len(self.cost_history) > 1000:
271
+ self.cost_history = self.cost_history[-1000:]
272
+
273
+ def _get_monthly_spend(self) -> float:
274
+ """Calculate total spend for current month"""
275
+ current_month = datetime.now().replace(day=1, hour=0, minute=0, second=0, microsecond=0)
276
+
277
+ monthly_costs = [
278
+ record["estimated_cost"]
279
+ for record in self.cost_history
280
+ if record["timestamp"] >= current_month
281
+ ]
282
+
283
+ return sum(monthly_costs)
284
+
285
+ async def get_cost_summary(self, days: int = 30) -> Dict[str, Any]:
286
+ """Get cost summary for the specified period"""
287
+ cutoff_date = datetime.now() - timedelta(days=days)
288
+
289
+ recent_costs = [
290
+ record for record in self.cost_history
291
+ if record["timestamp"] >= cutoff_date
292
+ ]
293
+
294
+ if not recent_costs:
295
+ return {
296
+ "period_days": days,
297
+ "total_cost": 0.0,
298
+ "total_data_gb": 0.0,
299
+ "transfers": 0,
300
+ "avg_cost_per_transfer": 0.0,
301
+ "top_routes": [],
302
+ "cost_trend": "stable",
303
+ }
304
+
305
+ total_cost = sum(record["estimated_cost"] for record in recent_costs)
306
+ total_data = sum(record["data_size_gb"] for record in recent_costs)
307
+
308
+ # Group by route
309
+ route_costs = {}
310
+ for record in recent_costs:
311
+ route = f"{record['src_provider']}→{record['dst_provider']}"
312
+ route_costs[route] = route_costs.get(route, 0) + record["estimated_cost"]
313
+
314
+ # Sort routes by cost
315
+ top_routes = sorted(route_costs.items(), key=lambda x: x[1], reverse=True)[:5]
316
+
317
+ # Calculate trend (simple comparison of first half vs second half)
318
+ mid_point = len(recent_costs) // 2
319
+ first_half_cost = sum(record["estimated_cost"] for record in recent_costs[:mid_point])
320
+ second_half_cost = sum(record["estimated_cost"] for record in recent_costs[mid_point:])
321
+
322
+ if second_half_cost > first_half_cost * 1.2:
323
+ trend = "increasing"
324
+ elif second_half_cost < first_half_cost * 0.8:
325
+ trend = "decreasing"
326
+ else:
327
+ trend = "stable"
328
+
329
+ return {
330
+ "period_days": days,
331
+ "total_cost": round(total_cost, 2),
332
+ "total_data_gb": round(total_data, 2),
333
+ "transfers": len(recent_costs),
334
+ "avg_cost_per_transfer": round(total_cost / len(recent_costs), 2),
335
+ "top_routes": [{"route": route, "cost": round(cost, 2)} for route, cost in top_routes],
336
+ "cost_trend": trend,
337
+ "budget_remaining": self.budget_limit - total_cost if self.budget_limit else None,
338
+ "budget_utilization": round((total_cost / self.budget_limit) * 100, 1) if self.budget_limit else None,
339
+ }
340
+
341
+ async def check_budget_alerts(self) -> List[EgressCostAlert]:
342
+ """Check for budget-related alerts"""
343
+ alerts = []
344
+
345
+ if not self.budget_limit:
346
+ return alerts
347
+
348
+ current_spend = self._get_monthly_spend()
349
+ utilization = (current_spend / self.budget_limit) * 100
350
+
351
+ # Budget utilization alerts
352
+ if utilization >= 90:
353
+ alerts.append(EgressCostAlert(
354
+ level=EgressCostLevel.CRITICAL,
355
+ message=f"💀 Budget critical: {utilization:.1f}% of monthly budget used",
356
+ estimated_cost=current_spend,
357
+ data_size_gb=0,
358
+ recommendation="Immediately review all data transfers and consider alternatives",
359
+ alternative_providers=["lambda_labs", "runpod"],
360
+ ))
361
+ elif utilization >= 75:
362
+ alerts.append(EgressCostAlert(
363
+ level=EgressCostLevel.HIGH,
364
+ message=f"🚨 Budget warning: {utilization:.1f}% of monthly budget used",
365
+ estimated_cost=current_spend,
366
+ data_size_gb=0,
367
+ recommendation="Monitor remaining budget carefully and optimize transfers",
368
+ alternative_providers=["lambda_labs", "runpod"],
369
+ ))
370
+ elif utilization >= 50:
371
+ alerts.append(EgressCostAlert(
372
+ level=EgressCostLevel.MEDIUM,
373
+ message=f"⚠️ Budget notice: {utilization:.1f}% of monthly budget used",
374
+ estimated_cost=current_spend,
375
+ data_size_gb=0,
376
+ recommendation="Continue monitoring egress costs",
377
+ alternative_providers=[],
378
+ ))
379
+
380
+ return alerts
@@ -40,6 +40,7 @@ class JobStatus(Enum):
40
40
  COMPLETED = "completed"
41
41
  FAILED = "failed"
42
42
  CANCELLED = "cancelled"
43
+ PREEMPTED = "preempted"
43
44
 
44
45
 
45
46
  class CheckpointStatus(Enum):