From 6efbaf539c9b293c16314ae23eb8588ef88b66b4 Mon Sep 17 00:00:00 2001 From: Yassin Kortam Date: Wed, 11 Nov 2026 20:19:56 -0800 Subject: [PATCH] chore: move deployment sources under litellm/deploy (#50981) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .github/CODEOWNERS | 4 +-- .github/CONTRIBUTING.md | 2 +- .github/scripts/verify_linux_native_wheel.py | 1 + .github/workflows/image-scan.yml | 10 +++---- .github/workflows/test-merge-smoke.yml | 2 +- .github/workflows/test-terraform-modules.yml | 10 +++---- .github/workflows/test-terraform-provider.yml | 18 ++++++------- .github/workflows/test-unit.yml | 2 +- .gitignore | 4 +-- Makefile | 2 +- README.md | 10 +++---- litellm/deploy/compose/README.md | 13 +++++++++ .../compose/docker-compose.liteadmin.yml | 2 ++ .../deploy/compose/docker-compose.yml | 16 ++++++----- .../deploy/compose/prometheus.yml | 0 .../deploy/docker}/.env.example | 0 .../deploy/docker/Dockerfile | 6 ++--- .../deploy/docker/Dockerfile.dockerignore | 6 +++++ {docker => litellm/deploy/docker}/README.md | 27 ++++++++++++++----- .../deploy/docker}/build_admin_ui.sh | 0 .../docker}/docker-compose.quickstart.yml | 2 +- .../deploy/docker}/docker-compose.tracing.yml | 3 ++- .../deploy/docker/docker-entrypoint.sh | 6 ++++- .../deploy/docker}/tracing-config.yaml | 0 .../deploy/helm}/litellm/.helmignore | 0 .../deploy/helm}/litellm/Chart.yaml | 0 .../deploy/helm}/litellm/README.md | 10 +++---- .../deploy/helm}/litellm/ci/postgres.yaml | 0 .../deploy/helm}/litellm/ci/test-values.yaml | 0 .../deploy/helm}/litellm/templates/NOTES.txt | 0 .../helm}/litellm/templates/_helpers.tpl | 0 .../helm}/litellm/templates/_workload.tpl | 0 .../litellm/templates/backend/deployment.yaml | 0 .../helm}/litellm/templates/backend/hpa.yaml | 0 .../backend/poddisruptionbudget.yaml | 0 .../litellm/templates/backend/service.yaml | 0 .../litellm/templates/extra-resources.yaml | 0 .../litellm/templates/gateway/configmap.yaml | 0 .../litellm/templates/gateway/deployment.yaml | 0 .../helm}/litellm/templates/gateway/hpa.yaml | 0 .../helm}/litellm/templates/gateway/keda.yaml | 0 .../gateway/poddisruptionbudget.yaml | 0 .../templates/gateway/service-metrics.yaml | 0 .../litellm/templates/gateway/service.yaml | 0 .../templates/gateway/servicemonitor.yaml | 0 .../helm}/litellm/templates/ingress.yaml | 0 .../helm}/litellm/templates/liteadmin.yaml | 0 .../litellm/templates/migrations-job.yaml | 0 .../templates/monolith/deployment.yaml | 0 .../helm}/litellm/templates/monolith/hpa.yaml | 0 .../litellm/templates/monolith/keda.yaml | 0 .../monolith/poddisruptionbudget.yaml | 0 .../templates/monolith/service-metrics.yaml | 0 .../litellm/templates/monolith/service.yaml | 0 .../templates/monolith/servicemonitor.yaml | 0 .../litellm/templates/secret-masterkey.yaml | 0 .../litellm/templates/serviceaccount.yaml | 0 .../templates/tests/test-connection.yaml | 0 .../litellm/templates/ui/deployment.yaml | 0 .../helm}/litellm/templates/ui/hpa.yaml | 0 .../templates/ui/poddisruptionbudget.yaml | 0 .../helm}/litellm/templates/ui/service.yaml | 0 .../litellm/tests/billing_metrics_tests.yaml | 0 .../helm}/litellm/tests/collector_tests.yaml | 0 .../litellm/tests/component_hosts_tests.yaml | 0 .../litellm/tests/connection_pool_tests.yaml | 0 .../litellm/tests/database_auth_tests.yaml | 0 .../tests/deployment_volumes_tests.yaml | 0 .../litellm/tests/extra_resources_tests.yaml | 0 .../litellm/tests/hpa_behavior_tests.yaml | 0 .../tests/hpa_workload_metrics_tests.yaml | 0 .../tests/ingress_controller_tests.yaml | 0 .../tests/ingress_extra_paths_tests.yaml | 0 .../litellm/tests/ingress_monolith_tests.yaml | 0 .../helm}/litellm/tests/keda_tests.yaml | 0 .../litellm/tests/lens_connection_tests.yaml | 0 .../helm}/litellm/tests/liteadmin_tests.yaml | 0 .../litellm/tests/masterkey_secret_tests.yaml | 0 .../litellm/tests/metrics_server_tests.yaml | 0 .../tests/migration_job_hooks_tests.yaml | 0 .../litellm/tests/migration_job_tests.yaml | 0 .../helm}/litellm/tests/monolith_tests.yaml | 0 .../tests/no_bundled_datastores_tests.yaml | 0 .../tests/pdb_topology_spread_tests.yaml | 0 .../litellm/tests/pod_hardening_tests.yaml | 0 .../helm}/litellm/tests/probe_tests.yaml | 0 .../helm}/litellm/tests/redis_env_tests.yaml | 0 .../litellm/tests/replica_count_tests.yaml | 0 .../litellm/tests/rollout_strategy_tests.yaml | 0 .../litellm/tests/shared_image_tests.yaml | 0 .../helm}/litellm/tests/values/required.yaml | 0 .../deploy/helm}/litellm/values.schema.json | 0 .../deploy/helm}/litellm/values.yaml | 0 .../deploy/terraform}/litellm/README.md | 16 +++++------ .../litellm/aws/.terraform.lock.hcl | 0 .../deploy/terraform}/litellm/aws/README.md | 8 +++--- .../deploy/terraform}/litellm/aws/alb.tf | 0 .../terraform}/litellm/aws/autoscaling.tf | 2 +- .../terraform}/litellm/aws/bootstrap.tf | 0 .../deploy/terraform}/litellm/aws/ecs.tf | 0 .../aws/examples/default/.terraform.lock.hcl | 0 .../litellm/aws/examples/default/main.tf | 4 +-- .../litellm/aws/examples/default/outputs.tf | 0 .../litellm/aws/examples/default/providers.tf | 0 .../examples/default/terraform.tfvars.example | 0 .../litellm/aws/examples/default/variables.tf | 0 .../litellm/aws/examples/default/versions.tf | 0 .../deploy/terraform}/litellm/aws/iam.tf | 0 .../deploy/terraform}/litellm/aws/locals.tf | 2 +- .../terraform}/litellm/aws/migrations.tf | 0 .../deploy/terraform}/litellm/aws/network.tf | 0 .../deploy/terraform}/litellm/aws/outputs.tf | 0 .../deploy/terraform}/litellm/aws/rds.tf | 0 .../deploy/terraform}/litellm/aws/redis.tf | 0 .../deploy/terraform}/litellm/aws/s3.tf | 0 .../deploy/terraform}/litellm/aws/secrets.tf | 0 .../aws/tests/byo_infrastructure.tftest.hcl | 2 +- .../litellm/aws/tests/collector.tftest.hcl | 2 +- .../aws/tests/connection_pool.tftest.hcl | 2 +- .../litellm/aws/tests/images.tftest.hcl | 0 .../aws/tests/metrics_sidecar.tftest.hcl | 0 .../aws/tests/unified_image.tftest.hcl | 0 .../aws/tests/workload_autoscaling.tftest.hcl | 0 .../terraform}/litellm/aws/variables.tf | 4 +-- .../deploy/terraform}/litellm/aws/versions.tf | 0 .../litellm/gcp/.terraform.lock.hcl | 0 .../deploy/terraform}/litellm/gcp/README.md | 6 ++--- .../terraform}/litellm/gcp/bootstrap.tf | 0 .../deploy/terraform}/litellm/gcp/cloudrun.tf | 0 .../deploy/terraform}/litellm/gcp/cloudsql.tf | 0 .../gcp/examples/default/.terraform.lock.hcl | 0 .../litellm/gcp/examples/default/TUTORIAL.md | 0 .../gcp/examples/default/deploystack.json | 2 +- .../litellm/gcp/examples/default/main.tf | 4 +-- .../litellm/gcp/examples/default/outputs.tf | 0 .../litellm/gcp/examples/default/providers.tf | 0 .../examples/default/terraform.tfvars.example | 0 .../litellm/gcp/examples/default/variables.tf | 0 .../litellm/gcp/examples/default/versions.tf | 0 .../deploy/terraform}/litellm/gcp/gcs.tf | 0 .../deploy/terraform}/litellm/gcp/iam.tf | 0 .../terraform}/litellm/gcp/load_balancer.tf | 0 .../deploy/terraform}/litellm/gcp/locals.tf | 2 +- .../deploy/terraform}/litellm/gcp/network.tf | 0 .../deploy/terraform}/litellm/gcp/outputs.tf | 0 .../deploy/terraform}/litellm/gcp/redis.tf | 0 .../deploy/terraform}/litellm/gcp/secrets.tf | 0 .../litellm/gcp/tests/collector.tftest.hcl | 2 +- .../gcp/tests/connection_pool.tftest.hcl | 2 +- .../litellm/gcp/tests/deps_only.tftest.hcl | 0 .../gcp/tests/metrics_sidecar.tftest.hcl | 0 .../gcp/tests/unified_image.tftest.hcl | 0 .../terraform}/litellm/gcp/variables.tf | 2 +- .../deploy/terraform}/litellm/gcp/versions.tf | 0 .../deploy/terraform}/provider/.gitignore | 0 .../terraform}/provider/.goreleaser.yml | 0 .../deploy/terraform}/provider/CHANGELOG.md | 2 +- .../deploy/terraform}/provider/LICENSE | 0 .../deploy/terraform}/provider/Makefile | 0 .../deploy/terraform}/provider/README.md | 4 +-- .../deploy/terraform}/provider/RELEASING.md | 4 +-- .../docs/data-sources/access_group.md | 0 .../docs/data-sources/access_groups.md | 0 .../provider/docs/data-sources/agent.md | 0 .../provider/docs/data-sources/agents.md | 0 .../provider/docs/data-sources/budget.md | 0 .../provider/docs/data-sources/budgets.md | 0 .../provider/docs/data-sources/credential.md | 0 .../provider/docs/data-sources/fallback.md | 0 .../provider/docs/data-sources/guardrail.md | 0 .../provider/docs/data-sources/guardrails.md | 0 .../provider/docs/data-sources/key.md | 0 .../provider/docs/data-sources/keys.md | 0 .../provider/docs/data-sources/mcp_server.md | 0 .../provider/docs/data-sources/mcp_servers.md | 0 .../provider/docs/data-sources/model.md | 0 .../provider/docs/data-sources/models.md | 0 .../docs/data-sources/organization.md | 0 .../docs/data-sources/organizations.md | 0 .../provider/docs/data-sources/project.md | 0 .../provider/docs/data-sources/projects.md | 0 .../provider/docs/data-sources/prompt.md | 0 .../provider/docs/data-sources/prompts.md | 0 .../provider/docs/data-sources/search_tool.md | 0 .../docs/data-sources/search_tools.md | 0 .../provider/docs/data-sources/tag.md | 0 .../provider/docs/data-sources/tags.md | 0 .../provider/docs/data-sources/team.md | 0 .../provider/docs/data-sources/teams.md | 0 .../docs/data-sources/unified_access_group.md | 0 .../data-sources/unified_access_groups.md | 0 .../provider/docs/data-sources/user.md | 0 .../provider/docs/data-sources/users.md | 0 .../docs/data-sources/vector_store.md | 0 .../deploy/terraform}/provider/docs/index.md | 0 .../provider/docs/resources/access_group.md | 0 .../provider/docs/resources/agent.md | 0 .../provider/docs/resources/budget.md | 0 .../provider/docs/resources/credential.md | 0 .../provider/docs/resources/fallback.md | 0 .../provider/docs/resources/guardrail.md | 0 .../docs/resources/jwt_key_mapping.md | 0 .../terraform}/provider/docs/resources/key.md | 0 .../provider/docs/resources/key_block.md | 0 .../provider/docs/resources/mcp_server.md | 0 .../provider/docs/resources/model.md | 0 .../provider/docs/resources/project.md | 0 .../provider/docs/resources/prompt.md | 0 .../provider/docs/resources/search_tool.md | 0 .../terraform}/provider/docs/resources/tag.md | 0 .../provider/docs/resources/team.md | 0 .../provider/docs/resources/team_block.md | 0 .../provider/docs/resources/team_member.md | 0 .../docs/resources/team_member_add.md | 0 .../docs/resources/unified_access_group.md | 0 .../provider/docs/resources/user.md | 0 .../provider/docs/resources/vector_store.md | 0 .../examples/model_additional_params.tf | 0 .../deploy/terraform}/provider/go.mod | 0 .../deploy/terraform}/provider/go.sum | 0 .../terraform}/provider/litellm/client.go | 0 .../provider/litellm/client_test.go | 0 .../litellm/data_source_access_group.go | 0 .../litellm/data_source_access_group_test.go | 0 .../provider/litellm/data_source_agent.go | 0 .../litellm/data_source_agent_test.go | 0 .../provider/litellm/data_source_budget.go | 0 .../litellm/data_source_budget_test.go | 0 .../litellm/data_source_credential.go | 0 .../provider/litellm/data_source_fallback.go | 0 .../litellm/data_source_fallback_test.go | 0 .../provider/litellm/data_source_guardrail.go | 0 .../litellm/data_source_guardrail_test.go | 0 .../provider/litellm/data_source_key.go | 0 .../provider/litellm/data_source_key_test.go | 0 .../litellm/data_source_mcp_server.go | 0 .../litellm/data_source_mcp_server_test.go | 0 .../provider/litellm/data_source_model.go | 0 .../litellm/data_source_model_test.go | 0 .../litellm/data_source_organization.go | 0 .../litellm/data_source_organization_test.go | 0 .../provider/litellm/data_source_project.go | 0 .../litellm/data_source_project_test.go | 0 .../provider/litellm/data_source_prompt.go | 0 .../litellm/data_source_prompt_test.go | 0 .../litellm/data_source_search_tool.go | 0 .../litellm/data_source_search_tool_test.go | 0 .../provider/litellm/data_source_tag.go | 0 .../provider/litellm/data_source_tag_test.go | 0 .../provider/litellm/data_source_team.go | 0 .../provider/litellm/data_source_team_test.go | 0 .../data_source_unified_access_group.go | 0 .../data_source_unified_access_group_test.go | 0 .../provider/litellm/data_source_user.go | 0 .../provider/litellm/data_source_user_test.go | 0 .../litellm/data_source_vector_store.go | 0 .../terraform}/provider/litellm/provider.go | 0 .../provider/litellm/provider_test.go | 0 .../provider/litellm/resource_access_group.go | 0 .../litellm/resource_access_group_test.go | 0 .../provider/litellm/resource_agent.go | 0 .../provider/litellm/resource_agent_test.go | 0 .../provider/litellm/resource_budget.go | 0 .../provider/litellm/resource_budget_test.go | 0 .../provider/litellm/resource_credential.go | 0 .../litellm/resource_credential_crud.go | 0 .../litellm/resource_credential_crud_test.go | 0 .../provider/litellm/resource_fallback.go | 0 .../litellm/resource_fallback_test.go | 0 .../provider/litellm/resource_guardrail.go | 0 .../litellm/resource_guardrail_test.go | 0 .../litellm/resource_jwt_key_mapping.go | 0 .../litellm/resource_jwt_key_mapping_crud.go | 0 .../resource_jwt_key_mapping_crud_test.go | 0 .../provider/litellm/resource_key.go | 0 .../provider/litellm/resource_key_block.go | 0 .../litellm/resource_key_block_test.go | 0 .../provider/litellm/resource_key_test.go | 0 .../provider/litellm/resource_key_utils.go | 0 .../provider/litellm/resource_mcp_server.go | 0 .../litellm/resource_mcp_server_crud.go | 0 .../litellm/resource_mcp_server_crud_test.go | 0 .../provider/litellm/resource_model.go | 0 .../provider/litellm/resource_model_crud.go | 0 .../provider/litellm/resource_model_test.go | 0 .../provider/litellm/resource_organization.go | 0 .../litellm/resource_organization_member.go | 0 .../resource_organization_member_add.go | 0 .../resource_organization_member_add_test.go | 0 .../resource_organization_member_test.go | 0 .../litellm/resource_organization_test.go | 0 .../provider/litellm/resource_project.go | 0 .../provider/litellm/resource_project_test.go | 0 .../provider/litellm/resource_prompt.go | 0 .../provider/litellm/resource_prompt_test.go | 0 .../provider/litellm/resource_search_tool.go | 0 .../litellm/resource_search_tool_test.go | 0 .../provider/litellm/resource_tag.go | 0 .../provider/litellm/resource_tag_test.go | 0 .../provider/litellm/resource_team.go | 0 .../provider/litellm/resource_team_block.go | 0 .../litellm/resource_team_block_test.go | 0 .../provider/litellm/resource_team_member.go | 0 .../litellm/resource_team_member_add.go | 0 .../litellm/resource_team_member_add_test.go | 0 .../litellm/resource_team_member_test.go | 0 .../provider/litellm/resource_team_test.go | 0 .../litellm/resource_unified_access_group.go | 0 .../resource_unified_access_group_test.go | 0 .../provider/litellm/resource_user.go | 0 .../provider/litellm/resource_user_test.go | 0 .../provider/litellm/resource_vector_store.go | 0 .../litellm/resource_vector_store_crud.go | 0 .../resource_vector_store_crud_test.go | 0 .../terraform}/provider/litellm/types.go | 0 .../terraform}/provider/litellm/utils.go | 0 .../terraform}/provider/litellm/utils_test.go | 0 .../deploy/terraform}/provider/main.go | 0 .../provider/terraform-registry-manifest.json | 0 .../terraform}/provider/tools/dump_openapi.py | 4 +-- .../provider/tools/endpointaudit/coverage.go | 0 .../endpointaudit/coverage_allowlist.txt | 0 .../tools/endpointaudit/coverage_test.go | 0 .../provider/tools/endpointaudit/main.go | 0 .../provider/tools/endpointaudit/main_test.go | 0 litellm/proxy/db/db_url_settings.py | 4 +-- packaging/litellm-core/pyproject.toml | 2 ++ pyproject.toml | 6 +++-- scripts/quickstart.ps1 | 2 +- scripts/quickstart.sh | 2 +- tests/e2e/CONTRIBUTING.md | 2 +- tests/e2e/claude_code/cron_vm/README.md | 4 +-- tests/integration/_support/process.py | 2 +- tests/unit/proxy/db/test_db_url_settings.py | 2 +- .../test_verify_linux_native_wheel.py | 12 +++++++++ tests/unit/test_docker_entrypoint.py | 8 +++--- .../unit/test_docker_no_network_on_deploy.py | 2 +- tests/unit/test_dockerfile_apk_repository.py | 2 +- .../test_dockerfile_bedrock_realtime_extra.py | 2 +- tests/unit/test_dockerfile_non_root.py | 2 +- 340 files changed, 172 insertions(+), 114 deletions(-) create mode 100644 litellm/deploy/compose/README.md rename docker-compose.liteadmin.yml => litellm/deploy/compose/docker-compose.liteadmin.yml (94%) rename docker-compose.yml => litellm/deploy/compose/docker-compose.yml (84%) rename prometheus.yml => litellm/deploy/compose/prometheus.yml (100%) rename {docker => litellm/deploy/docker}/.env.example (100%) rename Dockerfile => litellm/deploy/docker/Dockerfile (96%) rename .dockerignore => litellm/deploy/docker/Dockerfile.dockerignore (83%) rename {docker => litellm/deploy/docker}/README.md (78%) rename {docker => litellm/deploy/docker}/build_admin_ui.sh (100%) rename {docker => litellm/deploy/docker}/docker-compose.quickstart.yml (93%) rename {docker => litellm/deploy/docker}/docker-compose.tracing.yml (95%) rename docker-entrypoint.sh => litellm/deploy/docker/docker-entrypoint.sh (95%) rename {docker => litellm/deploy/docker}/tracing-config.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/.helmignore (100%) rename {helm => litellm/deploy/helm}/litellm/Chart.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/README.md (97%) rename {helm => litellm/deploy/helm}/litellm/ci/postgres.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/ci/test-values.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/NOTES.txt (100%) rename {helm => litellm/deploy/helm}/litellm/templates/_helpers.tpl (100%) rename {helm => litellm/deploy/helm}/litellm/templates/_workload.tpl (100%) rename {helm => litellm/deploy/helm}/litellm/templates/backend/deployment.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/backend/hpa.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/backend/poddisruptionbudget.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/backend/service.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/extra-resources.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/configmap.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/deployment.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/hpa.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/keda.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/poddisruptionbudget.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/service-metrics.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/service.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/gateway/servicemonitor.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/ingress.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/liteadmin.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/migrations-job.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/monolith/deployment.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/monolith/hpa.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/monolith/keda.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/monolith/poddisruptionbudget.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/monolith/service-metrics.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/monolith/service.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/monolith/servicemonitor.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/secret-masterkey.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/serviceaccount.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/tests/test-connection.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/ui/deployment.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/ui/hpa.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/ui/poddisruptionbudget.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/templates/ui/service.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/billing_metrics_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/collector_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/component_hosts_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/connection_pool_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/database_auth_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/deployment_volumes_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/extra_resources_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/hpa_behavior_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/hpa_workload_metrics_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/ingress_controller_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/ingress_extra_paths_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/ingress_monolith_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/keda_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/lens_connection_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/liteadmin_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/masterkey_secret_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/metrics_server_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/migration_job_hooks_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/migration_job_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/monolith_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/no_bundled_datastores_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/pdb_topology_spread_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/pod_hardening_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/probe_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/redis_env_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/replica_count_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/rollout_strategy_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/shared_image_tests.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/tests/values/required.yaml (100%) rename {helm => litellm/deploy/helm}/litellm/values.schema.json (100%) rename {helm => litellm/deploy/helm}/litellm/values.yaml (100%) rename {terraform => litellm/deploy/terraform}/litellm/README.md (96%) rename {terraform => litellm/deploy/terraform}/litellm/aws/.terraform.lock.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/README.md (98%) rename {terraform => litellm/deploy/terraform}/litellm/aws/alb.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/autoscaling.tf (99%) rename {terraform => litellm/deploy/terraform}/litellm/aws/bootstrap.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/ecs.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/examples/default/.terraform.lock.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/examples/default/main.tf (92%) rename {terraform => litellm/deploy/terraform}/litellm/aws/examples/default/outputs.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/examples/default/providers.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/examples/default/terraform.tfvars.example (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/examples/default/variables.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/examples/default/versions.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/iam.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/locals.tf (98%) rename {terraform => litellm/deploy/terraform}/litellm/aws/migrations.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/network.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/outputs.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/rds.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/redis.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/s3.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/secrets.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/tests/byo_infrastructure.tftest.hcl (99%) rename {terraform => litellm/deploy/terraform}/litellm/aws/tests/collector.tftest.hcl (98%) rename {terraform => litellm/deploy/terraform}/litellm/aws/tests/connection_pool.tftest.hcl (98%) rename {terraform => litellm/deploy/terraform}/litellm/aws/tests/images.tftest.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/tests/metrics_sidecar.tftest.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/tests/unified_image.tftest.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/tests/workload_autoscaling.tftest.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/aws/variables.tf (99%) rename {terraform => litellm/deploy/terraform}/litellm/aws/versions.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/.terraform.lock.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/README.md (99%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/bootstrap.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/cloudrun.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/cloudsql.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/.terraform.lock.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/TUTORIAL.md (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/deploystack.json (97%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/main.tf (93%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/outputs.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/providers.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/terraform.tfvars.example (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/variables.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/examples/default/versions.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/gcs.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/iam.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/load_balancer.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/locals.tf (97%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/network.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/outputs.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/redis.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/secrets.tf (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/tests/collector.tftest.hcl (98%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/tests/connection_pool.tftest.hcl (98%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/tests/deps_only.tftest.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/tests/metrics_sidecar.tftest.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/tests/unified_image.tftest.hcl (100%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/variables.tf (99%) rename {terraform => litellm/deploy/terraform}/litellm/gcp/versions.tf (100%) rename {terraform => litellm/deploy/terraform}/provider/.gitignore (100%) rename {terraform => litellm/deploy/terraform}/provider/.goreleaser.yml (100%) rename {terraform => litellm/deploy/terraform}/provider/CHANGELOG.md (99%) rename {terraform => litellm/deploy/terraform}/provider/LICENSE (100%) rename {terraform => litellm/deploy/terraform}/provider/Makefile (100%) rename {terraform => litellm/deploy/terraform}/provider/README.md (89%) rename {terraform => litellm/deploy/terraform}/provider/RELEASING.md (93%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/access_group.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/access_groups.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/agent.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/agents.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/budget.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/budgets.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/credential.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/fallback.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/guardrail.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/guardrails.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/key.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/keys.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/mcp_server.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/mcp_servers.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/model.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/models.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/organization.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/organizations.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/project.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/projects.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/prompt.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/prompts.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/search_tool.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/search_tools.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/tag.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/tags.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/team.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/teams.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/unified_access_group.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/unified_access_groups.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/user.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/users.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/data-sources/vector_store.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/index.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/access_group.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/agent.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/budget.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/credential.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/fallback.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/guardrail.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/jwt_key_mapping.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/key.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/key_block.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/mcp_server.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/model.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/project.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/prompt.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/search_tool.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/tag.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/team.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/team_block.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/team_member.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/team_member_add.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/unified_access_group.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/user.md (100%) rename {terraform => litellm/deploy/terraform}/provider/docs/resources/vector_store.md (100%) rename {terraform => litellm/deploy/terraform}/provider/examples/model_additional_params.tf (100%) rename {terraform => litellm/deploy/terraform}/provider/go.mod (100%) rename {terraform => litellm/deploy/terraform}/provider/go.sum (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/client.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/client_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_access_group.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_access_group_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_agent.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_agent_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_budget.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_budget_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_credential.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_fallback.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_fallback_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_guardrail.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_guardrail_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_key.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_key_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_mcp_server.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_mcp_server_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_model.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_model_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_organization.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_organization_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_project.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_project_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_prompt.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_prompt_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_search_tool.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_search_tool_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_tag.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_tag_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_team.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_team_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_unified_access_group.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_unified_access_group_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_user.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_user_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/data_source_vector_store.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/provider.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/provider_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_access_group.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_access_group_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_agent.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_agent_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_budget.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_budget_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_credential.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_credential_crud.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_credential_crud_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_fallback.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_fallback_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_guardrail.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_guardrail_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_jwt_key_mapping.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_jwt_key_mapping_crud.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_jwt_key_mapping_crud_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_key.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_key_block.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_key_block_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_key_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_key_utils.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_mcp_server.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_mcp_server_crud.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_mcp_server_crud_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_model.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_model_crud.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_model_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_organization.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_organization_member.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_organization_member_add.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_organization_member_add_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_organization_member_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_organization_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_project.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_project_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_prompt.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_prompt_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_search_tool.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_search_tool_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_tag.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_tag_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team_block.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team_block_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team_member.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team_member_add.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team_member_add_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team_member_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_team_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_unified_access_group.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_unified_access_group_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_user.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_user_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_vector_store.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_vector_store_crud.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/resource_vector_store_crud_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/types.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/utils.go (100%) rename {terraform => litellm/deploy/terraform}/provider/litellm/utils_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/main.go (100%) rename {terraform => litellm/deploy/terraform}/provider/terraform-registry-manifest.json (100%) rename {terraform => litellm/deploy/terraform}/provider/tools/dump_openapi.py (68%) rename {terraform => litellm/deploy/terraform}/provider/tools/endpointaudit/coverage.go (100%) rename {terraform => litellm/deploy/terraform}/provider/tools/endpointaudit/coverage_allowlist.txt (100%) rename {terraform => litellm/deploy/terraform}/provider/tools/endpointaudit/coverage_test.go (100%) rename {terraform => litellm/deploy/terraform}/provider/tools/endpointaudit/main.go (100%) rename {terraform => litellm/deploy/terraform}/provider/tools/endpointaudit/main_test.go (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2826098fd1f..c32e08d2eac 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1,6 @@ /model_prices_and_context_window.json @mateo-berri @ryan-crabbe-berri @kerry-berri @joshua-berri /litellm/model_prices_and_context_window_backup.json @mateo-berri @ryan-crabbe-berri @kerry-berri @joshua-berri /ci_cd/cost_map_pins.json @mateo-berri @ryan-crabbe-berri @kerry-berri @joshua-berri -/helm/ @yassin-berriai -/terraform/ @yassin-berriai +/litellm/deploy/helm/ @yassin-berriai +/litellm/deploy/terraform/ @yassin-berriai /.github/workflows/zizmor.yml @yuneng-berri diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 6297cd9a7c0..cf1935db726 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -306,7 +306,7 @@ If you want to build the Docker image yourself: ```bash # Build the image (runs as a non-root user by default) -docker build -t litellm_dev . +docker build -f litellm/deploy/docker/Dockerfile -t litellm_dev . # Generate a master key. Requests send it as the bearer token export LITELLM_MASTER_KEY="sk-$(openssl rand -hex 32)" diff --git a/.github/scripts/verify_linux_native_wheel.py b/.github/scripts/verify_linux_native_wheel.py index 571092263ed..6e51646cdd6 100644 --- a/.github/scripts/verify_linux_native_wheel.py +++ b/.github/scripts/verify_linux_native_wheel.py @@ -128,6 +128,7 @@ def main( member.filename for member in wheel_members if member.filename.endswith((".pdb", ".dwp", ".rlib", ".rmeta", "Cargo.toml", "Cargo.lock")) + or member.filename.startswith("litellm/deploy/") or any(part.endswith(".dSYM") for part in PurePosixPath(member.filename).parts) ) native_member: Final = native_members[0] diff --git a/.github/workflows/image-scan.yml b/.github/workflows/image-scan.yml index 862e58aedf7..5c22d7c4dda 100644 --- a/.github/workflows/image-scan.yml +++ b/.github/workflows/image-scan.yml @@ -7,9 +7,9 @@ on: - litellm_oss_branch - "litellm_**" paths: - - Dockerfile - - .dockerignore - - docker-entrypoint.sh + - litellm/deploy/docker/Dockerfile + - litellm/deploy/docker/Dockerfile.dockerignore + - litellm/deploy/docker/docker-entrypoint.sh - migrations/run.py - gateway/main.py - gateway/launch.py @@ -60,7 +60,7 @@ jobs: persist-credentials: false - name: Build the image - run: docker build --build-arg MATURIN_PEP517_ARGS="--profile ci" --build-arg LITELLM_RELEASE_TAG=v0.0.0-lens-ci -t "$IMAGE" . + run: docker build -f litellm/deploy/docker/Dockerfile --build-arg MATURIN_PEP517_ARGS="--profile ci" --build-arg LITELLM_RELEASE_TAG=v0.0.0-lens-ci -t "$IMAGE" . - name: Save the image for the verify matrix run: docker save "$IMAGE" | zstd -T0 -3 -o "$RUNNER_TEMP/litellm-image.tar.zst" @@ -73,7 +73,7 @@ jobs: compression-level: 0 - name: Build the Admin MCP schema image - run: docker build --build-arg MATURIN_PEP517_ARGS="--profile ci" --build-arg LITELLM_RELEASE_TAG=v0.0.0-lens-ci --target builder -t "$ADMIN_MCP_SCHEMA_IMAGE" . + run: docker build -f litellm/deploy/docker/Dockerfile --build-arg MATURIN_PEP517_ARGS="--profile ci" --build-arg LITELLM_RELEASE_TAG=v0.0.0-lens-ci --target builder -t "$ADMIN_MCP_SCHEMA_IMAGE" . - name: Save the Admin MCP schema image for the verify matrix run: docker save "$ADMIN_MCP_SCHEMA_IMAGE" | zstd -T0 -3 -o "$RUNNER_TEMP/litellm-admin-mcp-schema.tar.zst" diff --git a/.github/workflows/test-merge-smoke.yml b/.github/workflows/test-merge-smoke.yml index 912fc90fbe5..cf5c16f679d 100644 --- a/.github/workflows/test-merge-smoke.yml +++ b/.github/workflows/test-merge-smoke.yml @@ -24,7 +24,7 @@ jobs: persist-credentials: false - name: Build the dashboard stage - run: docker build --target ui-builder -f Dockerfile . + run: docker build --target ui-builder -f litellm/deploy/docker/Dockerfile . core-checks: name: py${{ matrix.python-version }} diff --git a/.github/workflows/test-terraform-modules.yml b/.github/workflows/test-terraform-modules.yml index e2fda3207e8..6a955ce609d 100644 --- a/.github/workflows/test-terraform-modules.yml +++ b/.github/workflows/test-terraform-modules.yml @@ -3,16 +3,16 @@ name: Terraform Modules on: push: paths: - - "terraform/litellm/aws/**" - - "terraform/litellm/gcp/**" + - "litellm/deploy/terraform/litellm/aws/**" + - "litellm/deploy/terraform/litellm/gcp/**" - ".github/workflows/test-terraform-modules.yml" pull_request: branches: - main - "litellm_**" paths: - - "terraform/litellm/aws/**" - - "terraform/litellm/gcp/**" + - "litellm/deploy/terraform/litellm/aws/**" + - "litellm/deploy/terraform/litellm/gcp/**" - ".github/workflows/test-terraform-modules.yml" permissions: @@ -33,7 +33,7 @@ jobs: module: [aws, gcp] defaults: run: - working-directory: terraform/litellm/${{ matrix.module }} + working-directory: litellm/deploy/terraform/litellm/${{ matrix.module }} steps: - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: diff --git a/.github/workflows/test-terraform-provider.yml b/.github/workflows/test-terraform-provider.yml index 6aeb66ed37c..a34bb075d42 100644 --- a/.github/workflows/test-terraform-provider.yml +++ b/.github/workflows/test-terraform-provider.yml @@ -3,14 +3,14 @@ name: Terraform Provider on: push: paths: - - "terraform/provider/**" + - "litellm/deploy/terraform/provider/**" - ".github/workflows/test-terraform-provider.yml" pull_request: branches: - main - "litellm_**" paths: - - "terraform/provider/**" + - "litellm/deploy/terraform/provider/**" - "litellm/proxy/**" - "enterprise/**" - ".github/workflows/test-terraform-provider.yml" @@ -29,7 +29,7 @@ jobs: timeout-minutes: 10 defaults: run: - working-directory: terraform/provider + working-directory: litellm/deploy/terraform/provider steps: - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: @@ -37,9 +37,9 @@ jobs: - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 with: - go-version-file: terraform/provider/go.mod + go-version-file: litellm/deploy/terraform/provider/go.mod cache: true - cache-dependency-path: terraform/provider/go.sum + cache-dependency-path: litellm/deploy/terraform/provider/go.sum - name: gofmt run: | @@ -115,14 +115,14 @@ jobs: - name: Generate proxy OpenAPI schema run: | - uv run --no-sync python terraform/provider/tools/dump_openapi.py "${RUNNER_TEMP}/openapi.json" + uv run --no-sync python litellm/deploy/terraform/provider/tools/dump_openapi.py "${RUNNER_TEMP}/openapi.json" - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 with: - go-version-file: terraform/provider/go.mod + go-version-file: litellm/deploy/terraform/provider/go.mod cache: true - cache-dependency-path: terraform/provider/go.sum + cache-dependency-path: litellm/deploy/terraform/provider/go.sum - name: Audit provider endpoints against the schema - working-directory: terraform/provider + working-directory: litellm/deploy/terraform/provider run: go run ./tools/endpointaudit -provider-dir ./litellm -spec "${RUNNER_TEMP}/openapi.json" -coverage-allowlist ./tools/endpointaudit/coverage_allowlist.txt diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index e334ffee64a..3b71185874d 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -1379,7 +1379,7 @@ jobs: - name: Run unit tests run: | - chart=helm/litellm + chart=litellm/deploy/helm/litellm declared="$(grep -h '^suite:' "$chart"/tests/*.yaml | wc -l | tr -d '[:space:]')" output="$(mktemp)" helm unittest -f 'tests/*.yaml' "$chart" | tee "$output" diff --git a/.gitignore b/.gitignore index 1b4785d193a..022f98ab711 100644 --- a/.gitignore +++ b/.gitignore @@ -61,8 +61,8 @@ ui/litellm-dashboard/next-env.d.ts *.tsbuildinfo ui/litellm-dashboard/package.json ui/litellm-dashboard/package-lock.json -helm/litellm/charts/*.tgz -helm/*.tgz +litellm/deploy/helm/litellm/charts/*.tgz +litellm/deploy/helm/*.tgz litellm/proxy/vertex_key.json **/.vim/ **/node_modules diff --git a/Makefile b/Makefile index 78d594b1ecd..bddc821b44b 100644 --- a/Makefile +++ b/Makefile @@ -341,7 +341,7 @@ test-integration: install-test-deps $(UV_RUN) pytest tests/ test-unit-helm: install-helm-unittest - helm unittest -f 'tests/*.yaml' helm/litellm + helm unittest -f 'tests/*.yaml' litellm/deploy/helm/litellm # LLM Translation testing targets test-llm-translation: install-test-deps diff --git a/README.md b/README.md index 21e08afe644..7a9932d5256 100644 --- a/README.md +++ b/README.md @@ -526,7 +526,7 @@ Run the LiteLLM proxy as a production-ready componentized stack (gateway, backen ```bash git clone https://github.com/BerriAI/litellm.git -cd litellm/terraform/litellm/aws/examples/default +cd litellm/litellm/deploy/terraform/litellm/aws/examples/default cp terraform.tfvars.example terraform.tfvars # edit region/tenant/env terraform init && terraform apply ``` @@ -579,7 +579,7 @@ Provider API keys live in AWS Secrets Manager; reference ARNs via `gateway_extra [![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.png)](https://ssh.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2FBerriAI%2Fterraform-google-litellm&cloudshell_git_branch=v1.105.0&cloudshell_workspace=examples%2Fdefault&cloudshell_tutorial=TUTORIAL.md&cloudshell_image=gcr.io/ds-artifacts-cloudshell/deploystack_custom_image&shellonly=true) -Real 1-click. Opens Cloud Shell, clones the [terraform-google-litellm](https://github.com/BerriAI/terraform-google-litellm) module mirror at the latest stable release (a small download instead of the full litellm repo), and walks you through `terraform apply` via a built-in [DeployStack tutorial](./terraform/litellm/gcp/examples/default/TUTORIAL.md). Pick the project, the tutorial sets up the Artifact Registry remote repo, writes `terraform.tfvars` from your answers, and runs apply +Real 1-click. Opens Cloud Shell, clones the [terraform-google-litellm](https://github.com/BerriAI/terraform-google-litellm) module mirror at the latest stable release (a small download instead of the full litellm repo), and walks you through `terraform apply` via a built-in [DeployStack tutorial](./litellm/deploy/terraform/litellm/gcp/examples/default/TUTORIAL.md). Pick the project, the tutorial sets up the Artifact Registry remote repo, writes `terraform.tfvars` from your answers, and runs apply [Module page →](https://registry.terraform.io/modules/BerriAI/litellm/google/latest) @@ -646,14 +646,14 @@ Provider API keys live in Secret Manager; reference resource IDs (e.g. `projects - Versioned object store for proxy state + file uploads - An auto-generated `LITELLM_MASTER_KEY` in your cloud's secret manager - A one-off migration job that runs `prisma migrate deploy` before the proxy starts -- The same `proxy_config` surface as the [Helm chart](./helm/litellm/) — pass YAML as a typed map +- The same `proxy_config` surface as the [Helm chart](./litellm/deploy/helm/litellm/) — pass YAML as a typed map -The Terraform modules live at [`terraform/litellm/aws/`](./terraform/litellm/aws/) and [`terraform/litellm/gcp/`](./terraform/litellm/gcp/) in this repo; the registry entries are read-only mirrors updated on each release. +The Terraform modules live at [`litellm/deploy/terraform/litellm/aws/`](./litellm/deploy/terraform/litellm/aws/) and [`litellm/deploy/terraform/litellm/gcp/`](./litellm/deploy/terraform/litellm/gcp/) in this repo; the registry entries are read-only mirrors updated on each release. ### Run in Developer Mode #### Services 1. Setup .env file in root -2. Run dependent services `docker-compose up db prometheus` +2. Run dependent services `docker compose -f litellm/deploy/compose/docker-compose.yml up db prometheus` #### Backend 1. Run `make bootstrap` diff --git a/litellm/deploy/compose/README.md b/litellm/deploy/compose/README.md new file mode 100644 index 00000000000..015059059a4 --- /dev/null +++ b/litellm/deploy/compose/README.md @@ -0,0 +1,13 @@ +# Compose deployments + +The LiteAdmin overlay requires an explicit project name. Moving the Compose files changes the default project name and therefore the state volume name. Reuse the existing name so the agent keeps its saved state. + +Set `EXISTING_LITEADMIN_CONTAINER` to the running or stopped agent container, then read its project label before upgrading. + +```sh +export COMPOSE_PROJECT_NAME="$(docker inspect --format '{{ index .Config.Labels "com.docker.compose.project" }}' "$EXISTING_LITEADMIN_CONTAINER")" +docker compose -f litellm/deploy/compose/docker-compose.yml \ + -f litellm/deploy/compose/docker-compose.liteadmin.yml up -d +``` + +Passing the same existing name with `docker compose --project-name` also works. For a new deployment, choose a stable project name and keep using it. diff --git a/docker-compose.liteadmin.yml b/litellm/deploy/compose/docker-compose.liteadmin.yml similarity index 94% rename from docker-compose.liteadmin.yml rename to litellm/deploy/compose/docker-compose.liteadmin.yml index a66846429de..30a2ef29da0 100644 --- a/docker-compose.liteadmin.yml +++ b/litellm/deploy/compose/docker-compose.liteadmin.yml @@ -1,3 +1,5 @@ +name: ${COMPOSE_PROJECT_NAME:?Set the existing Compose project name to preserve LiteAdmin state} + services: litellm: image: ${LITELLM_IMAGE:?Set the native-enabled gateway image} diff --git a/docker-compose.yml b/litellm/deploy/compose/docker-compose.yml similarity index 84% rename from docker-compose.yml rename to litellm/deploy/compose/docker-compose.yml index b012c3763de..441a16ebeed 100644 --- a/docker-compose.yml +++ b/litellm/deploy/compose/docker-compose.yml @@ -1,15 +1,16 @@ # LiteLLM plus a Postgres database that stores models, virtual keys and spend # logs. Used by https://docs.litellm.ai/docs/proxy/docker_quick_start # -# curl -sSLO https://github.com/BerriAI/litellm/raw/main/docker-compose.yml +# curl -sSLO https://github.com/BerriAI/litellm/raw/main/litellm/deploy/compose/docker-compose.yml # printf 'LITELLM_MASTER_KEY=sk-%s\nLITELLM_SALT_KEY=sk-%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env -# docker compose up -d +# LITELLM_ENV_FILE=.env docker compose up -d # # `docker compose up` runs the published image. From a checkout of the repo, -# `docker compose up --build` builds the Dockerfile next to this file instead. +# `docker compose up --build` builds from the repository root context instead. # `docker compose --profile monitoring up -d` also starts Prometheus on 9090. # -# Compose reads .env from this directory. Keep it: regenerating LITELLM_SALT_KEY +# The container reads the checkout-root .env, or LITELLM_ENV_FILE when set. +# Keep it: regenerating LITELLM_SALT_KEY # makes credentials already stored in the database unreadable. A database # created without LITELLM_SALT_KEY encrypted them with the master key, so when # upgrading one, write only LITELLM_MASTER_KEY (the existing one) to .env. For anything @@ -18,14 +19,15 @@ services: litellm: image: docker.litellm.ai/berriai/litellm:main-stable build: - context: . + context: ../../.. + dockerfile: litellm/deploy/docker/Dockerfile target: runtime pull_policy: missing ports: - "4000:4000" # The same image runs every component. The first word of `command` picks # it: proxy (default), gateway, backend, ui, migrations, metrics, - # collector. See docker/README.md + # collector. See litellm/deploy/docker/README.md # command: ["--config", "/app/config.yaml"] # volumes: # - ./config.yaml:/app/config.yaml:ro @@ -35,7 +37,7 @@ services: DATABASE_URL: postgresql://llmproxy:dbpassword9090@db:5432/litellm STORE_MODEL_IN_DB: "True" env_file: - - path: .env + - path: ${LITELLM_ENV_FILE:-../../../.env} required: false read_only: true cap_drop: diff --git a/prometheus.yml b/litellm/deploy/compose/prometheus.yml similarity index 100% rename from prometheus.yml rename to litellm/deploy/compose/prometheus.yml diff --git a/docker/.env.example b/litellm/deploy/docker/.env.example similarity index 100% rename from docker/.env.example rename to litellm/deploy/docker/.env.example diff --git a/Dockerfile b/litellm/deploy/docker/Dockerfile similarity index 96% rename from Dockerfile rename to litellm/deploy/docker/Dockerfile index 0e9337e658b..66964c8dc4c 100644 --- a/Dockerfile +++ b/litellm/deploy/docker/Dockerfile @@ -99,7 +99,7 @@ RUN rm -rf litellm/proxy/_experimental/out COPY --from=ui-builder /ui/out/. litellm/proxy/_experimental/out/ # Build Admin UI before final sync (applies the enterprise color override when present) -RUN sed -i 's/\r$//' docker/build_admin_ui.sh && chmod +x docker/build_admin_ui.sh && ./docker/build_admin_ui.sh +RUN sed -i 's/\r$//' litellm/deploy/docker/build_admin_ui.sh && chmod +x litellm/deploy/docker/build_admin_ui.sh && ./litellm/deploy/docker/build_admin_ui.sh # Install project and workspace packages (fast - deps already cached) ARG MATURIN_PEP517_ARGS="" @@ -120,7 +120,7 @@ RUN HOME=/opt/prisma XDG_CACHE_HOME=/opt/prisma/.cache PRISMA_BINARY_CACHE_DIR=/ npm_config_cache=/root/.npm \ prisma generate --schema=./schema.prisma -RUN sed -i 's/\r$//' docker-entrypoint.sh && chmod +x docker-entrypoint.sh +RUN sed -i 's/\r$//' litellm/deploy/docker/docker-entrypoint.sh && chmod +x litellm/deploy/docker/docker-entrypoint.sh RUN mkdir -p /var/lib/litellm/ui /var/lib/litellm/assets && \ cp -r litellm/proxy/_experimental/out/. /var/lib/litellm/ui/ && \ @@ -178,7 +178,7 @@ ENV PATH="/app/.venv/bin:${PATH}" \ # ship (manifest-scanning tools attribute everything in it to this image). COPY --from=builder /app/.venv /app/.venv COPY --from=liteadmin-builder /opt/liteadmin /opt/liteadmin -COPY --from=builder /app/docker-entrypoint.sh /app/docker-entrypoint.sh +COPY --from=builder /app/litellm/deploy/docker/docker-entrypoint.sh /app/docker-entrypoint.sh COPY --from=builder /app/schema.prisma /app/schema.prisma COPY --from=builder /app/litellm/proxy/prisma_migration.py /app/litellm/proxy/prisma_migration.py # enterprise/ is imported by source path at runtime (proxy_cli puts the diff --git a/.dockerignore b/litellm/deploy/docker/Dockerfile.dockerignore similarity index 83% rename from .dockerignore rename to litellm/deploy/docker/Dockerfile.dockerignore index d8eb72a057f..0b2f4898062 100644 --- a/.dockerignore +++ b/litellm/deploy/docker/Dockerfile.dockerignore @@ -54,3 +54,9 @@ litellm/rust_bridge/_native*.so *.log .env .env.local + +litellm/deploy/** +!litellm/deploy/docker/ +litellm/deploy/docker/** +!litellm/deploy/docker/build_admin_ui.sh +!litellm/deploy/docker/docker-entrypoint.sh diff --git a/docker/README.md b/litellm/deploy/docker/README.md similarity index 78% rename from docker/README.md rename to litellm/deploy/docker/README.md index 3ec26219420..8dc7dacc34b 100644 --- a/docker/README.md +++ b/litellm/deploy/docker/README.md @@ -2,17 +2,29 @@ This guide provides instructions for building and running the LiteLLM application using Docker and Docker Compose. -> **Just want to run LiteLLM?** `docker-compose.yml` in the repository root runs +> **Just want to run LiteLLM?** `litellm/deploy/compose/docker-compose.yml` runs > the published image with a Postgres database, the stack the > [Docker quickstart](https://docs.litellm.ai/docs/proxy/docker_quick_start) documents, > and it works on its own outside a checkout: > > ```bash -> curl -sSLO https://github.com/BerriAI/litellm/raw/main/docker-compose.yml +> curl -sSLO https://github.com/BerriAI/litellm/raw/main/litellm/deploy/compose/docker-compose.yml > printf 'LITELLM_MASTER_KEY=sk-%s\nLITELLM_SALT_KEY=sk-%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env -> docker compose up -d +> LITELLM_ENV_FILE=.env docker compose up -d > ``` +## Updating an existing quickstart installation + +Saved quickstart scripts need a one-time URL override after the source layout migration. Run this from the installation directory to preserve its existing `.env` and database. + +```bash +LITELLM_COMPOSE_URL=https://raw.githubusercontent.com/BerriAI/litellm/main/litellm/deploy/docker/docker-compose.quickstart.yml \ +LITELLM_SCRIPT_URL=https://raw.githubusercontent.com/BerriAI/litellm/main/scripts/quickstart.sh \ +litellm-gateway update +``` + +In PowerShell, set the same environment variables, with `LITELLM_SCRIPT_URL` ending in `scripts/quickstart.ps1`, before running `litellm-gateway update`. Remove the overrides after the saved script refreshes. + ## Prerequisites - Docker @@ -20,7 +32,7 @@ This guide provides instructions for building and running the LiteLLM applicatio ## Building and Running the Application -The same `docker-compose.yml` builds from source when you pass `--build`: it builds the `Dockerfile` in the repository root, the one image LiteLLM ships. `docker-entrypoint.sh` next to it is the only entrypoint script; every container starts through it +The same compose file builds from source when you pass `--build`. It uses `litellm/deploy/docker/Dockerfile` with the repository root as the build context. `docker-entrypoint.sh` next to it is the only entrypoint script. Every container starts through it ## One image, many components @@ -51,9 +63,10 @@ The image runs as uid `65532` (`nonroot` in the Wolfi base) and also works as an ### 1. Set the Master and Salt Keys -The proxy signs virtual keys with `LITELLM_MASTER_KEY` and encrypts stored provider credentials with `LITELLM_SALT_KEY`. Compose reads both from a `.env` file in the directory you run it from, so generate them once: +From a repository checkout, first run `cd litellm/deploy/compose`. The proxy signs virtual keys with `LITELLM_MASTER_KEY` and encrypts stored provider credentials with `LITELLM_SALT_KEY`. Select the local `.env` with `LITELLM_ENV_FILE` so Compose passes both keys to the container, then generate them once: ```bash +export LITELLM_ENV_FILE=.env printf 'LITELLM_MASTER_KEY=sk-%s\nLITELLM_SALT_KEY=sk-%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env ``` @@ -65,7 +78,7 @@ Keep the file: regenerating `LITELLM_SALT_KEY` makes credentials already stored docker compose up -d --build ``` -This command builds the image from the root `Dockerfile` and starts the `litellm` and `db` services in detached mode. Without `--build`, `docker compose up` pulls the published `main-stable` image instead. Add `--profile monitoring` to also start Prometheus on port 9090, scraping the proxy with the root `prometheus.yml` +This command builds the image and starts the `litellm` and `db` services in detached mode. Without `--build`, `docker compose up` pulls the published `main-stable` image instead. Add `--profile monitoring` to also start Prometheus on port 9090, scraping the proxy with `prometheus.yml` beside the compose file ### 3. Verifying the Application is Running @@ -129,4 +142,4 @@ docker run --rm --network none --entrypoint prisma docker.litellm.ai/berriai/lit - **`required variable LITELLM_MASTER_KEY is missing a value`**: Compose did not find a `.env` file with `LITELLM_MASTER_KEY` in the directory you ran it from. Generate one as shown above. - **`password authentication failed for user "llmproxy"`**: the `litellm_postgres_data` volume was initialised by an older compose file with different credentials. `docker compose down -v` drops it and the next `up` recreates the database. -- **`build_admin_ui.sh: not found`**: the build context is wrong. Run `docker compose` from the root of the repository. +- **`build_admin_ui.sh: not found`**: the build context is wrong. From a checkout, run `docker compose` in `litellm/deploy/compose`. diff --git a/docker/build_admin_ui.sh b/litellm/deploy/docker/build_admin_ui.sh similarity index 100% rename from docker/build_admin_ui.sh rename to litellm/deploy/docker/build_admin_ui.sh diff --git a/docker/docker-compose.quickstart.yml b/litellm/deploy/docker/docker-compose.quickstart.yml similarity index 93% rename from docker/docker-compose.quickstart.yml rename to litellm/deploy/docker/docker-compose.quickstart.yml index 98366a73e58..171b7f0a772 100644 --- a/docker/docker-compose.quickstart.yml +++ b/litellm/deploy/docker/docker-compose.quickstart.yml @@ -2,7 +2,7 @@ # models, virtual keys, and spend logs. Used by # https://docs.litellm.ai/docs/proxy/docker_quick_start # -# curl -sSLO https://github.com/BerriAI/litellm/raw/main/docker/docker-compose.quickstart.yml +# curl -sSLO https://github.com/BerriAI/litellm/raw/main/litellm/deploy/docker/docker-compose.quickstart.yml # printf 'LITELLM_MASTER_KEY=sk-%s\nLITELLM_SALT_KEY=sk-%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env # docker compose -f docker-compose.quickstart.yml up -d # diff --git a/docker/docker-compose.tracing.yml b/litellm/deploy/docker/docker-compose.tracing.yml similarity index 95% rename from docker/docker-compose.tracing.yml rename to litellm/deploy/docker/docker-compose.tracing.yml index d28d84e61dc..84ee72ac06e 100644 --- a/docker/docker-compose.tracing.yml +++ b/litellm/deploy/docker/docker-compose.tracing.yml @@ -3,7 +3,8 @@ name: litellm-tracing services: litellm: build: - context: .. + context: ../../.. + dockerfile: litellm/deploy/docker/Dockerfile target: runtime args: LITELLM_RELEASE_TAG: ${LITELLM_RELEASE_TAG:-} diff --git a/docker-entrypoint.sh b/litellm/deploy/docker/docker-entrypoint.sh similarity index 95% rename from docker-entrypoint.sh rename to litellm/deploy/docker/docker-entrypoint.sh index a48aad33324..120ec0e6e9f 100755 --- a/docker-entrypoint.sh +++ b/litellm/deploy/docker/docker-entrypoint.sh @@ -100,7 +100,11 @@ os.execvp("litellm", ["litellm", *sys.argv[1:]])' "$@" set -- uvicorn backend.main:app --host 0.0.0.0 --port 4001 "$@" ;; ui) - sh "$(dirname "$0")/ui/docker-entrypoint.d/40-litellm-runtime-config.sh" + ui_hook="$(dirname "$0")/ui/docker-entrypoint.d/40-litellm-runtime-config.sh" + if [ ! -f "$ui_hook" ]; then + ui_hook="$(dirname "$0")/../../../ui/docker-entrypoint.d/40-litellm-runtime-config.sh" + fi + sh "$ui_hook" exec nginx -g 'daemon off;' "$@" ;; migrations) diff --git a/docker/tracing-config.yaml b/litellm/deploy/docker/tracing-config.yaml similarity index 100% rename from docker/tracing-config.yaml rename to litellm/deploy/docker/tracing-config.yaml diff --git a/helm/litellm/.helmignore b/litellm/deploy/helm/litellm/.helmignore similarity index 100% rename from helm/litellm/.helmignore rename to litellm/deploy/helm/litellm/.helmignore diff --git a/helm/litellm/Chart.yaml b/litellm/deploy/helm/litellm/Chart.yaml similarity index 100% rename from helm/litellm/Chart.yaml rename to litellm/deploy/helm/litellm/Chart.yaml diff --git a/helm/litellm/README.md b/litellm/deploy/helm/litellm/README.md similarity index 97% rename from helm/litellm/README.md rename to litellm/deploy/helm/litellm/README.md index 5ca63d90bcd..0024ff5d8ee 100644 --- a/helm/litellm/README.md +++ b/litellm/deploy/helm/litellm/README.md @@ -15,7 +15,7 @@ Kubernetes 1.25+ and Helm 3.8+. Bring your own PostgreSQL (`database.writer.*`) ```bash kubectl create secret generic litellm-master-key-secret --from-literal=master-key=sk-change-me -helm install litellm helm/litellm \ +helm install litellm litellm/deploy/helm/litellm \ --set database.writer.host=postgres.example.com \ --set database.writer.dbname=litellm \ --set database.writer.passwordSecret.name=litellm-db-secret @@ -26,7 +26,7 @@ The image tag defaults to the chart's `appVersion`. Override it with `image.tag` ## Monolith quickstart ```bash -helm install litellm helm/litellm \ +helm install litellm litellm/deploy/helm/litellm \ --set monolith.enabled=true \ --set masterKey.secretName="" \ --set masterKey.generate=true \ @@ -70,14 +70,14 @@ backend: ## Testing ```bash -helm lint helm/litellm -helm unittest -f 'tests/*.yaml' helm/litellm +helm lint litellm/deploy/helm/litellm +helm unittest -f 'tests/*.yaml' litellm/deploy/helm/litellm helm test --logs ``` ## Migrating from the litellm-helm chart -The `litellm-helm` chart (`oci://ghcr.io/berriai/litellm-helm`) is retired; its published packages stay available for a grace period. Its flat values described one monolith Deployment, so the equivalent install here is `monolith.enabled: true` with the values moved under `gateway.*`. The per-component `gateway.image`, `backend.image`, `ui.image` and `migrations.image` blocks of earlier `helm/litellm` versions are gone too: the chart is a major bump to `1.0.0` and every container uses the top-level `image` +The `litellm-helm` chart (`oci://ghcr.io/berriai/litellm-helm`) is retired; its published packages stay available for a grace period. Its flat values described one monolith Deployment, so the equivalent install here is `monolith.enabled: true` with the values moved under `gateway.*`. The per-component `gateway.image`, `backend.image`, `ui.image` and `migrations.image` blocks of earlier `litellm/deploy/helm/litellm` versions are gone too: the chart is a major bump to `1.0.0` and every container uses the top-level `image` | litellm-helm value | litellm value | |---|---| diff --git a/helm/litellm/ci/postgres.yaml b/litellm/deploy/helm/litellm/ci/postgres.yaml similarity index 100% rename from helm/litellm/ci/postgres.yaml rename to litellm/deploy/helm/litellm/ci/postgres.yaml diff --git a/helm/litellm/ci/test-values.yaml b/litellm/deploy/helm/litellm/ci/test-values.yaml similarity index 100% rename from helm/litellm/ci/test-values.yaml rename to litellm/deploy/helm/litellm/ci/test-values.yaml diff --git a/helm/litellm/templates/NOTES.txt b/litellm/deploy/helm/litellm/templates/NOTES.txt similarity index 100% rename from helm/litellm/templates/NOTES.txt rename to litellm/deploy/helm/litellm/templates/NOTES.txt diff --git a/helm/litellm/templates/_helpers.tpl b/litellm/deploy/helm/litellm/templates/_helpers.tpl similarity index 100% rename from helm/litellm/templates/_helpers.tpl rename to litellm/deploy/helm/litellm/templates/_helpers.tpl diff --git a/helm/litellm/templates/_workload.tpl b/litellm/deploy/helm/litellm/templates/_workload.tpl similarity index 100% rename from helm/litellm/templates/_workload.tpl rename to litellm/deploy/helm/litellm/templates/_workload.tpl diff --git a/helm/litellm/templates/backend/deployment.yaml b/litellm/deploy/helm/litellm/templates/backend/deployment.yaml similarity index 100% rename from helm/litellm/templates/backend/deployment.yaml rename to litellm/deploy/helm/litellm/templates/backend/deployment.yaml diff --git a/helm/litellm/templates/backend/hpa.yaml b/litellm/deploy/helm/litellm/templates/backend/hpa.yaml similarity index 100% rename from helm/litellm/templates/backend/hpa.yaml rename to litellm/deploy/helm/litellm/templates/backend/hpa.yaml diff --git a/helm/litellm/templates/backend/poddisruptionbudget.yaml b/litellm/deploy/helm/litellm/templates/backend/poddisruptionbudget.yaml similarity index 100% rename from helm/litellm/templates/backend/poddisruptionbudget.yaml rename to litellm/deploy/helm/litellm/templates/backend/poddisruptionbudget.yaml diff --git a/helm/litellm/templates/backend/service.yaml b/litellm/deploy/helm/litellm/templates/backend/service.yaml similarity index 100% rename from helm/litellm/templates/backend/service.yaml rename to litellm/deploy/helm/litellm/templates/backend/service.yaml diff --git a/helm/litellm/templates/extra-resources.yaml b/litellm/deploy/helm/litellm/templates/extra-resources.yaml similarity index 100% rename from helm/litellm/templates/extra-resources.yaml rename to litellm/deploy/helm/litellm/templates/extra-resources.yaml diff --git a/helm/litellm/templates/gateway/configmap.yaml b/litellm/deploy/helm/litellm/templates/gateway/configmap.yaml similarity index 100% rename from helm/litellm/templates/gateway/configmap.yaml rename to litellm/deploy/helm/litellm/templates/gateway/configmap.yaml diff --git a/helm/litellm/templates/gateway/deployment.yaml b/litellm/deploy/helm/litellm/templates/gateway/deployment.yaml similarity index 100% rename from helm/litellm/templates/gateway/deployment.yaml rename to litellm/deploy/helm/litellm/templates/gateway/deployment.yaml diff --git a/helm/litellm/templates/gateway/hpa.yaml b/litellm/deploy/helm/litellm/templates/gateway/hpa.yaml similarity index 100% rename from helm/litellm/templates/gateway/hpa.yaml rename to litellm/deploy/helm/litellm/templates/gateway/hpa.yaml diff --git a/helm/litellm/templates/gateway/keda.yaml b/litellm/deploy/helm/litellm/templates/gateway/keda.yaml similarity index 100% rename from helm/litellm/templates/gateway/keda.yaml rename to litellm/deploy/helm/litellm/templates/gateway/keda.yaml diff --git a/helm/litellm/templates/gateway/poddisruptionbudget.yaml b/litellm/deploy/helm/litellm/templates/gateway/poddisruptionbudget.yaml similarity index 100% rename from helm/litellm/templates/gateway/poddisruptionbudget.yaml rename to litellm/deploy/helm/litellm/templates/gateway/poddisruptionbudget.yaml diff --git a/helm/litellm/templates/gateway/service-metrics.yaml b/litellm/deploy/helm/litellm/templates/gateway/service-metrics.yaml similarity index 100% rename from helm/litellm/templates/gateway/service-metrics.yaml rename to litellm/deploy/helm/litellm/templates/gateway/service-metrics.yaml diff --git a/helm/litellm/templates/gateway/service.yaml b/litellm/deploy/helm/litellm/templates/gateway/service.yaml similarity index 100% rename from helm/litellm/templates/gateway/service.yaml rename to litellm/deploy/helm/litellm/templates/gateway/service.yaml diff --git a/helm/litellm/templates/gateway/servicemonitor.yaml b/litellm/deploy/helm/litellm/templates/gateway/servicemonitor.yaml similarity index 100% rename from helm/litellm/templates/gateway/servicemonitor.yaml rename to litellm/deploy/helm/litellm/templates/gateway/servicemonitor.yaml diff --git a/helm/litellm/templates/ingress.yaml b/litellm/deploy/helm/litellm/templates/ingress.yaml similarity index 100% rename from helm/litellm/templates/ingress.yaml rename to litellm/deploy/helm/litellm/templates/ingress.yaml diff --git a/helm/litellm/templates/liteadmin.yaml b/litellm/deploy/helm/litellm/templates/liteadmin.yaml similarity index 100% rename from helm/litellm/templates/liteadmin.yaml rename to litellm/deploy/helm/litellm/templates/liteadmin.yaml diff --git a/helm/litellm/templates/migrations-job.yaml b/litellm/deploy/helm/litellm/templates/migrations-job.yaml similarity index 100% rename from helm/litellm/templates/migrations-job.yaml rename to litellm/deploy/helm/litellm/templates/migrations-job.yaml diff --git a/helm/litellm/templates/monolith/deployment.yaml b/litellm/deploy/helm/litellm/templates/monolith/deployment.yaml similarity index 100% rename from helm/litellm/templates/monolith/deployment.yaml rename to litellm/deploy/helm/litellm/templates/monolith/deployment.yaml diff --git a/helm/litellm/templates/monolith/hpa.yaml b/litellm/deploy/helm/litellm/templates/monolith/hpa.yaml similarity index 100% rename from helm/litellm/templates/monolith/hpa.yaml rename to litellm/deploy/helm/litellm/templates/monolith/hpa.yaml diff --git a/helm/litellm/templates/monolith/keda.yaml b/litellm/deploy/helm/litellm/templates/monolith/keda.yaml similarity index 100% rename from helm/litellm/templates/monolith/keda.yaml rename to litellm/deploy/helm/litellm/templates/monolith/keda.yaml diff --git a/helm/litellm/templates/monolith/poddisruptionbudget.yaml b/litellm/deploy/helm/litellm/templates/monolith/poddisruptionbudget.yaml similarity index 100% rename from helm/litellm/templates/monolith/poddisruptionbudget.yaml rename to litellm/deploy/helm/litellm/templates/monolith/poddisruptionbudget.yaml diff --git a/helm/litellm/templates/monolith/service-metrics.yaml b/litellm/deploy/helm/litellm/templates/monolith/service-metrics.yaml similarity index 100% rename from helm/litellm/templates/monolith/service-metrics.yaml rename to litellm/deploy/helm/litellm/templates/monolith/service-metrics.yaml diff --git a/helm/litellm/templates/monolith/service.yaml b/litellm/deploy/helm/litellm/templates/monolith/service.yaml similarity index 100% rename from helm/litellm/templates/monolith/service.yaml rename to litellm/deploy/helm/litellm/templates/monolith/service.yaml diff --git a/helm/litellm/templates/monolith/servicemonitor.yaml b/litellm/deploy/helm/litellm/templates/monolith/servicemonitor.yaml similarity index 100% rename from helm/litellm/templates/monolith/servicemonitor.yaml rename to litellm/deploy/helm/litellm/templates/monolith/servicemonitor.yaml diff --git a/helm/litellm/templates/secret-masterkey.yaml b/litellm/deploy/helm/litellm/templates/secret-masterkey.yaml similarity index 100% rename from helm/litellm/templates/secret-masterkey.yaml rename to litellm/deploy/helm/litellm/templates/secret-masterkey.yaml diff --git a/helm/litellm/templates/serviceaccount.yaml b/litellm/deploy/helm/litellm/templates/serviceaccount.yaml similarity index 100% rename from helm/litellm/templates/serviceaccount.yaml rename to litellm/deploy/helm/litellm/templates/serviceaccount.yaml diff --git a/helm/litellm/templates/tests/test-connection.yaml b/litellm/deploy/helm/litellm/templates/tests/test-connection.yaml similarity index 100% rename from helm/litellm/templates/tests/test-connection.yaml rename to litellm/deploy/helm/litellm/templates/tests/test-connection.yaml diff --git a/helm/litellm/templates/ui/deployment.yaml b/litellm/deploy/helm/litellm/templates/ui/deployment.yaml similarity index 100% rename from helm/litellm/templates/ui/deployment.yaml rename to litellm/deploy/helm/litellm/templates/ui/deployment.yaml diff --git a/helm/litellm/templates/ui/hpa.yaml b/litellm/deploy/helm/litellm/templates/ui/hpa.yaml similarity index 100% rename from helm/litellm/templates/ui/hpa.yaml rename to litellm/deploy/helm/litellm/templates/ui/hpa.yaml diff --git a/helm/litellm/templates/ui/poddisruptionbudget.yaml b/litellm/deploy/helm/litellm/templates/ui/poddisruptionbudget.yaml similarity index 100% rename from helm/litellm/templates/ui/poddisruptionbudget.yaml rename to litellm/deploy/helm/litellm/templates/ui/poddisruptionbudget.yaml diff --git a/helm/litellm/templates/ui/service.yaml b/litellm/deploy/helm/litellm/templates/ui/service.yaml similarity index 100% rename from helm/litellm/templates/ui/service.yaml rename to litellm/deploy/helm/litellm/templates/ui/service.yaml diff --git a/helm/litellm/tests/billing_metrics_tests.yaml b/litellm/deploy/helm/litellm/tests/billing_metrics_tests.yaml similarity index 100% rename from helm/litellm/tests/billing_metrics_tests.yaml rename to litellm/deploy/helm/litellm/tests/billing_metrics_tests.yaml diff --git a/helm/litellm/tests/collector_tests.yaml b/litellm/deploy/helm/litellm/tests/collector_tests.yaml similarity index 100% rename from helm/litellm/tests/collector_tests.yaml rename to litellm/deploy/helm/litellm/tests/collector_tests.yaml diff --git a/helm/litellm/tests/component_hosts_tests.yaml b/litellm/deploy/helm/litellm/tests/component_hosts_tests.yaml similarity index 100% rename from helm/litellm/tests/component_hosts_tests.yaml rename to litellm/deploy/helm/litellm/tests/component_hosts_tests.yaml diff --git a/helm/litellm/tests/connection_pool_tests.yaml b/litellm/deploy/helm/litellm/tests/connection_pool_tests.yaml similarity index 100% rename from helm/litellm/tests/connection_pool_tests.yaml rename to litellm/deploy/helm/litellm/tests/connection_pool_tests.yaml diff --git a/helm/litellm/tests/database_auth_tests.yaml b/litellm/deploy/helm/litellm/tests/database_auth_tests.yaml similarity index 100% rename from helm/litellm/tests/database_auth_tests.yaml rename to litellm/deploy/helm/litellm/tests/database_auth_tests.yaml diff --git a/helm/litellm/tests/deployment_volumes_tests.yaml b/litellm/deploy/helm/litellm/tests/deployment_volumes_tests.yaml similarity index 100% rename from helm/litellm/tests/deployment_volumes_tests.yaml rename to litellm/deploy/helm/litellm/tests/deployment_volumes_tests.yaml diff --git a/helm/litellm/tests/extra_resources_tests.yaml b/litellm/deploy/helm/litellm/tests/extra_resources_tests.yaml similarity index 100% rename from helm/litellm/tests/extra_resources_tests.yaml rename to litellm/deploy/helm/litellm/tests/extra_resources_tests.yaml diff --git a/helm/litellm/tests/hpa_behavior_tests.yaml b/litellm/deploy/helm/litellm/tests/hpa_behavior_tests.yaml similarity index 100% rename from helm/litellm/tests/hpa_behavior_tests.yaml rename to litellm/deploy/helm/litellm/tests/hpa_behavior_tests.yaml diff --git a/helm/litellm/tests/hpa_workload_metrics_tests.yaml b/litellm/deploy/helm/litellm/tests/hpa_workload_metrics_tests.yaml similarity index 100% rename from helm/litellm/tests/hpa_workload_metrics_tests.yaml rename to litellm/deploy/helm/litellm/tests/hpa_workload_metrics_tests.yaml diff --git a/helm/litellm/tests/ingress_controller_tests.yaml b/litellm/deploy/helm/litellm/tests/ingress_controller_tests.yaml similarity index 100% rename from helm/litellm/tests/ingress_controller_tests.yaml rename to litellm/deploy/helm/litellm/tests/ingress_controller_tests.yaml diff --git a/helm/litellm/tests/ingress_extra_paths_tests.yaml b/litellm/deploy/helm/litellm/tests/ingress_extra_paths_tests.yaml similarity index 100% rename from helm/litellm/tests/ingress_extra_paths_tests.yaml rename to litellm/deploy/helm/litellm/tests/ingress_extra_paths_tests.yaml diff --git a/helm/litellm/tests/ingress_monolith_tests.yaml b/litellm/deploy/helm/litellm/tests/ingress_monolith_tests.yaml similarity index 100% rename from helm/litellm/tests/ingress_monolith_tests.yaml rename to litellm/deploy/helm/litellm/tests/ingress_monolith_tests.yaml diff --git a/helm/litellm/tests/keda_tests.yaml b/litellm/deploy/helm/litellm/tests/keda_tests.yaml similarity index 100% rename from helm/litellm/tests/keda_tests.yaml rename to litellm/deploy/helm/litellm/tests/keda_tests.yaml diff --git a/helm/litellm/tests/lens_connection_tests.yaml b/litellm/deploy/helm/litellm/tests/lens_connection_tests.yaml similarity index 100% rename from helm/litellm/tests/lens_connection_tests.yaml rename to litellm/deploy/helm/litellm/tests/lens_connection_tests.yaml diff --git a/helm/litellm/tests/liteadmin_tests.yaml b/litellm/deploy/helm/litellm/tests/liteadmin_tests.yaml similarity index 100% rename from helm/litellm/tests/liteadmin_tests.yaml rename to litellm/deploy/helm/litellm/tests/liteadmin_tests.yaml diff --git a/helm/litellm/tests/masterkey_secret_tests.yaml b/litellm/deploy/helm/litellm/tests/masterkey_secret_tests.yaml similarity index 100% rename from helm/litellm/tests/masterkey_secret_tests.yaml rename to litellm/deploy/helm/litellm/tests/masterkey_secret_tests.yaml diff --git a/helm/litellm/tests/metrics_server_tests.yaml b/litellm/deploy/helm/litellm/tests/metrics_server_tests.yaml similarity index 100% rename from helm/litellm/tests/metrics_server_tests.yaml rename to litellm/deploy/helm/litellm/tests/metrics_server_tests.yaml diff --git a/helm/litellm/tests/migration_job_hooks_tests.yaml b/litellm/deploy/helm/litellm/tests/migration_job_hooks_tests.yaml similarity index 100% rename from helm/litellm/tests/migration_job_hooks_tests.yaml rename to litellm/deploy/helm/litellm/tests/migration_job_hooks_tests.yaml diff --git a/helm/litellm/tests/migration_job_tests.yaml b/litellm/deploy/helm/litellm/tests/migration_job_tests.yaml similarity index 100% rename from helm/litellm/tests/migration_job_tests.yaml rename to litellm/deploy/helm/litellm/tests/migration_job_tests.yaml diff --git a/helm/litellm/tests/monolith_tests.yaml b/litellm/deploy/helm/litellm/tests/monolith_tests.yaml similarity index 100% rename from helm/litellm/tests/monolith_tests.yaml rename to litellm/deploy/helm/litellm/tests/monolith_tests.yaml diff --git a/helm/litellm/tests/no_bundled_datastores_tests.yaml b/litellm/deploy/helm/litellm/tests/no_bundled_datastores_tests.yaml similarity index 100% rename from helm/litellm/tests/no_bundled_datastores_tests.yaml rename to litellm/deploy/helm/litellm/tests/no_bundled_datastores_tests.yaml diff --git a/helm/litellm/tests/pdb_topology_spread_tests.yaml b/litellm/deploy/helm/litellm/tests/pdb_topology_spread_tests.yaml similarity index 100% rename from helm/litellm/tests/pdb_topology_spread_tests.yaml rename to litellm/deploy/helm/litellm/tests/pdb_topology_spread_tests.yaml diff --git a/helm/litellm/tests/pod_hardening_tests.yaml b/litellm/deploy/helm/litellm/tests/pod_hardening_tests.yaml similarity index 100% rename from helm/litellm/tests/pod_hardening_tests.yaml rename to litellm/deploy/helm/litellm/tests/pod_hardening_tests.yaml diff --git a/helm/litellm/tests/probe_tests.yaml b/litellm/deploy/helm/litellm/tests/probe_tests.yaml similarity index 100% rename from helm/litellm/tests/probe_tests.yaml rename to litellm/deploy/helm/litellm/tests/probe_tests.yaml diff --git a/helm/litellm/tests/redis_env_tests.yaml b/litellm/deploy/helm/litellm/tests/redis_env_tests.yaml similarity index 100% rename from helm/litellm/tests/redis_env_tests.yaml rename to litellm/deploy/helm/litellm/tests/redis_env_tests.yaml diff --git a/helm/litellm/tests/replica_count_tests.yaml b/litellm/deploy/helm/litellm/tests/replica_count_tests.yaml similarity index 100% rename from helm/litellm/tests/replica_count_tests.yaml rename to litellm/deploy/helm/litellm/tests/replica_count_tests.yaml diff --git a/helm/litellm/tests/rollout_strategy_tests.yaml b/litellm/deploy/helm/litellm/tests/rollout_strategy_tests.yaml similarity index 100% rename from helm/litellm/tests/rollout_strategy_tests.yaml rename to litellm/deploy/helm/litellm/tests/rollout_strategy_tests.yaml diff --git a/helm/litellm/tests/shared_image_tests.yaml b/litellm/deploy/helm/litellm/tests/shared_image_tests.yaml similarity index 100% rename from helm/litellm/tests/shared_image_tests.yaml rename to litellm/deploy/helm/litellm/tests/shared_image_tests.yaml diff --git a/helm/litellm/tests/values/required.yaml b/litellm/deploy/helm/litellm/tests/values/required.yaml similarity index 100% rename from helm/litellm/tests/values/required.yaml rename to litellm/deploy/helm/litellm/tests/values/required.yaml diff --git a/helm/litellm/values.schema.json b/litellm/deploy/helm/litellm/values.schema.json similarity index 100% rename from helm/litellm/values.schema.json rename to litellm/deploy/helm/litellm/values.schema.json diff --git a/helm/litellm/values.yaml b/litellm/deploy/helm/litellm/values.yaml similarity index 100% rename from helm/litellm/values.yaml rename to litellm/deploy/helm/litellm/values.yaml diff --git a/terraform/litellm/README.md b/litellm/deploy/terraform/litellm/README.md similarity index 96% rename from terraform/litellm/README.md rename to litellm/deploy/terraform/litellm/README.md index 1c2ad1d9b25..70011dbb393 100644 --- a/terraform/litellm/README.md +++ b/litellm/deploy/terraform/litellm/README.md @@ -2,7 +2,7 @@ Two self-contained, reusable Terraform **modules** that deploy the **componentized** LiteLLM proxy — the gateway, backend, and UI as three -independent containers (see `helm/litellm/` for the canonical chart with the +independent containers (see `litellm/deploy/helm/litellm/` for the canonical chart with the same split). Each module declares **no `provider` block of its own**, so it can be called @@ -14,7 +14,7 @@ by source: ```hcl module "litellm" { - source = "github.com/BerriAI/litellm//terraform/litellm/aws?ref=" + source = "github.com/BerriAI/litellm//litellm/deploy/terraform/litellm/aws?ref=" # ... inputs ... } ``` @@ -26,7 +26,7 @@ module "litellm" { Each stack creates its own VPC and managed data stores — from `/examples/default/`, drop in a tfvars file and run `terraform apply`. -Both stacks support a typed `proxy_config` input (mirrors `helm/litellm`'s +Both stacks support a typed `proxy_config` input (mirrors `litellm/deploy/helm/litellm`'s `gateway.config.proxy_config`) and per-component extra env vars / secret-manager refs. @@ -52,7 +52,7 @@ everything else to the backend. ## Architecture -### AWS (`terraform/litellm/aws/`) +### AWS (`litellm/deploy/terraform/litellm/aws/`) ``` ┌───────────────────────────────────────┐ @@ -97,7 +97,7 @@ everything else to the backend. egress to LLM providers ``` -### GCP (`terraform/litellm/gcp/`) +### GCP (`litellm/deploy/terraform/litellm/gcp/`) ``` ┌───────────────────────────────────────┐ @@ -238,11 +238,11 @@ dynamic-credentials OIDC). Required overrides the launcher must supply per stack: -- **AWS** (`terraform/litellm/aws`): `region`, `azs`, `tenant`, `env`. +- **AWS** (`litellm/deploy/terraform/litellm/aws`): `region`, `azs`, `tenant`, `env`. `image` can be left at its default: the GHCR image is anonymous-readable and ECS Fargate pulls it without extra credentials. -- **GCP** (`terraform/litellm/gcp`): `project`, `tenant`, `env`, **and +- **GCP** (`litellm/deploy/terraform/litellm/gcp`): `project`, `tenant`, `env`, **and one of**: - `image_registry` pointed at an Artifact Registry **remote** repository backed by `https://ghcr.io` (e.g. @@ -254,7 +254,7 @@ Required overrides the launcher must supply per stack: The defaults (`ghcr.io/berriai`) cause Cloud Run admission to reject the service spec — Cloud Run only authenticates against Artifact Registry, `[region.]gcr.io`, or `docker.io`. See - `terraform/litellm/gcp/README.md#image-pulls` for the + `litellm/deploy/terraform/litellm/gcp/README.md#image-pulls` for the `gcloud artifacts repositories create … --mode=remote-repository` command that sets up the passthrough repo (one-time, per project). diff --git a/terraform/litellm/aws/.terraform.lock.hcl b/litellm/deploy/terraform/litellm/aws/.terraform.lock.hcl similarity index 100% rename from terraform/litellm/aws/.terraform.lock.hcl rename to litellm/deploy/terraform/litellm/aws/.terraform.lock.hcl diff --git a/terraform/litellm/aws/README.md b/litellm/deploy/terraform/litellm/aws/README.md similarity index 98% rename from terraform/litellm/aws/README.md rename to litellm/deploy/terraform/litellm/aws/README.md index 7aebfe2acc9..c63ff6bc0e4 100644 --- a/terraform/litellm/aws/README.md +++ b/litellm/deploy/terraform/litellm/aws/README.md @@ -391,7 +391,7 @@ For a per-tenant instance via the example root, the only inputs that change are the tenant slug, env, and the two pre-issued secrets: ```bash -cd terraform/litellm/aws/examples/default +cd litellm/deploy/terraform/litellm/aws/examples/default export TF_VAR_litellm_master_key="sk-..." # the tenant's master key export TF_VAR_litellm_license="lic-..." # their LITELLM_LICENSE @@ -408,7 +408,7 @@ To run *many* tenants from a single config, call the module with ```hcl module "litellm" { for_each = toset(["acme", "globex"]) - source = "github.com/BerriAI/litellm//terraform/litellm/aws?ref=" + source = "github.com/BerriAI/litellm//litellm/deploy/terraform/litellm/aws?ref=" image_tag = "" tenant = each.key env = "prod" @@ -432,7 +432,7 @@ example files. ## Quick start ```bash -cd terraform/litellm/aws/examples/default +cd litellm/deploy/terraform/litellm/aws/examples/default cp terraform.tfvars.example terraform.tfvars # Edit: region, tenant, env, azs, proxy_config, gateway_extra_secrets. @@ -473,7 +473,7 @@ provider "aws" { } module "litellm" { - source = "github.com/BerriAI/litellm//terraform/litellm/aws?ref=" + source = "github.com/BerriAI/litellm//litellm/deploy/terraform/litellm/aws?ref=" image_tag = "" # a git ref ships no image default, a registry version does diff --git a/terraform/litellm/aws/alb.tf b/litellm/deploy/terraform/litellm/aws/alb.tf similarity index 100% rename from terraform/litellm/aws/alb.tf rename to litellm/deploy/terraform/litellm/aws/alb.tf diff --git a/terraform/litellm/aws/autoscaling.tf b/litellm/deploy/terraform/litellm/aws/autoscaling.tf similarity index 99% rename from terraform/litellm/aws/autoscaling.tf rename to litellm/deploy/terraform/litellm/aws/autoscaling.tf index 5197311d1b3..fcf3e23595d 100644 --- a/terraform/litellm/aws/autoscaling.tf +++ b/litellm/deploy/terraform/litellm/aws/autoscaling.tf @@ -1,5 +1,5 @@ # Application Auto Scaling for the three ECS services. Mirrors the HPA values -# baked into the helm chart at helm/litellm/values.yaml: +# baked into the helm chart at litellm/deploy/helm/litellm/values.yaml: # # gateway: 1-10 replicas, target 70% CPU + 80% memory # backend: 1-4 replicas, target 70% CPU diff --git a/terraform/litellm/aws/bootstrap.tf b/litellm/deploy/terraform/litellm/aws/bootstrap.tf similarity index 100% rename from terraform/litellm/aws/bootstrap.tf rename to litellm/deploy/terraform/litellm/aws/bootstrap.tf diff --git a/terraform/litellm/aws/ecs.tf b/litellm/deploy/terraform/litellm/aws/ecs.tf similarity index 100% rename from terraform/litellm/aws/ecs.tf rename to litellm/deploy/terraform/litellm/aws/ecs.tf diff --git a/terraform/litellm/aws/examples/default/.terraform.lock.hcl b/litellm/deploy/terraform/litellm/aws/examples/default/.terraform.lock.hcl similarity index 100% rename from terraform/litellm/aws/examples/default/.terraform.lock.hcl rename to litellm/deploy/terraform/litellm/aws/examples/default/.terraform.lock.hcl diff --git a/terraform/litellm/aws/examples/default/main.tf b/litellm/deploy/terraform/litellm/aws/examples/default/main.tf similarity index 92% rename from terraform/litellm/aws/examples/default/main.tf rename to litellm/deploy/terraform/litellm/aws/examples/default/main.tf index 5e7a65f907f..d193ac6bf22 100644 --- a/terraform/litellm/aws/examples/default/main.tf +++ b/litellm/deploy/terraform/litellm/aws/examples/default/main.tf @@ -1,6 +1,6 @@ # One-command deploy of the LiteLLM AWS stack. # -# cd terraform/litellm/aws/examples/default +# cd litellm/deploy/terraform/litellm/aws/examples/default # cp terraform.tfvars.example terraform.tfvars # edit it # terraform init # terraform apply @@ -10,7 +10,7 @@ # from your own config with count/for_each/aliased or assume-role providers: # # module "litellm" { -# source = "github.com/BerriAI/litellm//terraform/litellm/aws?ref=" +# source = "github.com/BerriAI/litellm//litellm/deploy/terraform/litellm/aws?ref=" # ... # } # diff --git a/terraform/litellm/aws/examples/default/outputs.tf b/litellm/deploy/terraform/litellm/aws/examples/default/outputs.tf similarity index 100% rename from terraform/litellm/aws/examples/default/outputs.tf rename to litellm/deploy/terraform/litellm/aws/examples/default/outputs.tf diff --git a/terraform/litellm/aws/examples/default/providers.tf b/litellm/deploy/terraform/litellm/aws/examples/default/providers.tf similarity index 100% rename from terraform/litellm/aws/examples/default/providers.tf rename to litellm/deploy/terraform/litellm/aws/examples/default/providers.tf diff --git a/terraform/litellm/aws/examples/default/terraform.tfvars.example b/litellm/deploy/terraform/litellm/aws/examples/default/terraform.tfvars.example similarity index 100% rename from terraform/litellm/aws/examples/default/terraform.tfvars.example rename to litellm/deploy/terraform/litellm/aws/examples/default/terraform.tfvars.example diff --git a/terraform/litellm/aws/examples/default/variables.tf b/litellm/deploy/terraform/litellm/aws/examples/default/variables.tf similarity index 100% rename from terraform/litellm/aws/examples/default/variables.tf rename to litellm/deploy/terraform/litellm/aws/examples/default/variables.tf diff --git a/terraform/litellm/aws/examples/default/versions.tf b/litellm/deploy/terraform/litellm/aws/examples/default/versions.tf similarity index 100% rename from terraform/litellm/aws/examples/default/versions.tf rename to litellm/deploy/terraform/litellm/aws/examples/default/versions.tf diff --git a/terraform/litellm/aws/iam.tf b/litellm/deploy/terraform/litellm/aws/iam.tf similarity index 100% rename from terraform/litellm/aws/iam.tf rename to litellm/deploy/terraform/litellm/aws/iam.tf diff --git a/terraform/litellm/aws/locals.tf b/litellm/deploy/terraform/litellm/aws/locals.tf similarity index 98% rename from terraform/litellm/aws/locals.tf rename to litellm/deploy/terraform/litellm/aws/locals.tf index e31e2b3c11b..e15310ead3e 100644 --- a/terraform/litellm/aws/locals.tf +++ b/litellm/deploy/terraform/litellm/aws/locals.tf @@ -1,5 +1,5 @@ # Gateway path prefixes — mirrored verbatim from gateway/routes/allowlist.py -# and the helm ingress in helm/litellm/templates/ingress.yaml. Anything not in +# and the helm ingress in litellm/deploy/helm/litellm/templates/ingress.yaml. Anything not in # this list and not a UI asset path falls through to the backend (management # API) catch-all rule on the ALB. # diff --git a/terraform/litellm/aws/migrations.tf b/litellm/deploy/terraform/litellm/aws/migrations.tf similarity index 100% rename from terraform/litellm/aws/migrations.tf rename to litellm/deploy/terraform/litellm/aws/migrations.tf diff --git a/terraform/litellm/aws/network.tf b/litellm/deploy/terraform/litellm/aws/network.tf similarity index 100% rename from terraform/litellm/aws/network.tf rename to litellm/deploy/terraform/litellm/aws/network.tf diff --git a/terraform/litellm/aws/outputs.tf b/litellm/deploy/terraform/litellm/aws/outputs.tf similarity index 100% rename from terraform/litellm/aws/outputs.tf rename to litellm/deploy/terraform/litellm/aws/outputs.tf diff --git a/terraform/litellm/aws/rds.tf b/litellm/deploy/terraform/litellm/aws/rds.tf similarity index 100% rename from terraform/litellm/aws/rds.tf rename to litellm/deploy/terraform/litellm/aws/rds.tf diff --git a/terraform/litellm/aws/redis.tf b/litellm/deploy/terraform/litellm/aws/redis.tf similarity index 100% rename from terraform/litellm/aws/redis.tf rename to litellm/deploy/terraform/litellm/aws/redis.tf diff --git a/terraform/litellm/aws/s3.tf b/litellm/deploy/terraform/litellm/aws/s3.tf similarity index 100% rename from terraform/litellm/aws/s3.tf rename to litellm/deploy/terraform/litellm/aws/s3.tf diff --git a/terraform/litellm/aws/secrets.tf b/litellm/deploy/terraform/litellm/aws/secrets.tf similarity index 100% rename from terraform/litellm/aws/secrets.tf rename to litellm/deploy/terraform/litellm/aws/secrets.tf diff --git a/terraform/litellm/aws/tests/byo_infrastructure.tftest.hcl b/litellm/deploy/terraform/litellm/aws/tests/byo_infrastructure.tftest.hcl similarity index 99% rename from terraform/litellm/aws/tests/byo_infrastructure.tftest.hcl rename to litellm/deploy/terraform/litellm/aws/tests/byo_infrastructure.tftest.hcl index 702ba37184c..620dcc37bf9 100644 --- a/terraform/litellm/aws/tests/byo_infrastructure.tftest.hcl +++ b/litellm/deploy/terraform/litellm/aws/tests/byo_infrastructure.tftest.hcl @@ -1,6 +1,6 @@ # Plan-only coverage for the four networking/database/cache permutations. # `mock_provider` keeps this offline: no AWS credentials, no API calls, no -# resources. Run from terraform/litellm/aws with `terraform test`. +# resources. Run from litellm/deploy/terraform/litellm/aws with `terraform test`. mock_provider "aws" { # IAM policy documents are validated as JSON by the provider, so the diff --git a/terraform/litellm/aws/tests/collector.tftest.hcl b/litellm/deploy/terraform/litellm/aws/tests/collector.tftest.hcl similarity index 98% rename from terraform/litellm/aws/tests/collector.tftest.hcl rename to litellm/deploy/terraform/litellm/aws/tests/collector.tftest.hcl index d38c3882a1b..18060d3f4c7 100644 --- a/terraform/litellm/aws/tests/collector.tftest.hcl +++ b/litellm/deploy/terraform/litellm/aws/tests/collector.tftest.hcl @@ -1,7 +1,7 @@ # Plan-only coverage for the opt-in collector sidecar in the gateway task. # The rendered container_definitions JSON is unknown at plan time (it embeds # Aurora/ElastiCache endpoints and secret ARNs), so the assertions target the -# locals it is built from. Run from terraform/litellm/aws with `terraform test`. +# locals it is built from. Run from litellm/deploy/terraform/litellm/aws with `terraform test`. mock_provider "aws" { mock_data "aws_iam_policy_document" { diff --git a/terraform/litellm/aws/tests/connection_pool.tftest.hcl b/litellm/deploy/terraform/litellm/aws/tests/connection_pool.tftest.hcl similarity index 98% rename from terraform/litellm/aws/tests/connection_pool.tftest.hcl rename to litellm/deploy/terraform/litellm/aws/tests/connection_pool.tftest.hcl index c22f0a11fc1..4b45131ff2e 100644 --- a/terraform/litellm/aws/tests/connection_pool.tftest.hcl +++ b/litellm/deploy/terraform/litellm/aws/tests/connection_pool.tftest.hcl @@ -1,6 +1,6 @@ # Plan-only coverage for the in-container PgBouncer knobs on the gateway task. # `mock_provider` keeps this offline: no AWS credentials, no API calls, no -# resources. Run from terraform/litellm/aws with `terraform test`. +# resources. Run from litellm/deploy/terraform/litellm/aws with `terraform test`. mock_provider "aws" { mock_data "aws_iam_policy_document" { diff --git a/terraform/litellm/aws/tests/images.tftest.hcl b/litellm/deploy/terraform/litellm/aws/tests/images.tftest.hcl similarity index 100% rename from terraform/litellm/aws/tests/images.tftest.hcl rename to litellm/deploy/terraform/litellm/aws/tests/images.tftest.hcl diff --git a/terraform/litellm/aws/tests/metrics_sidecar.tftest.hcl b/litellm/deploy/terraform/litellm/aws/tests/metrics_sidecar.tftest.hcl similarity index 100% rename from terraform/litellm/aws/tests/metrics_sidecar.tftest.hcl rename to litellm/deploy/terraform/litellm/aws/tests/metrics_sidecar.tftest.hcl diff --git a/terraform/litellm/aws/tests/unified_image.tftest.hcl b/litellm/deploy/terraform/litellm/aws/tests/unified_image.tftest.hcl similarity index 100% rename from terraform/litellm/aws/tests/unified_image.tftest.hcl rename to litellm/deploy/terraform/litellm/aws/tests/unified_image.tftest.hcl diff --git a/terraform/litellm/aws/tests/workload_autoscaling.tftest.hcl b/litellm/deploy/terraform/litellm/aws/tests/workload_autoscaling.tftest.hcl similarity index 100% rename from terraform/litellm/aws/tests/workload_autoscaling.tftest.hcl rename to litellm/deploy/terraform/litellm/aws/tests/workload_autoscaling.tftest.hcl diff --git a/terraform/litellm/aws/variables.tf b/litellm/deploy/terraform/litellm/aws/variables.tf similarity index 99% rename from terraform/litellm/aws/variables.tf rename to litellm/deploy/terraform/litellm/aws/variables.tf index fb5460ff56d..51998f40685 100644 --- a/terraform/litellm/aws/variables.tf +++ b/litellm/deploy/terraform/litellm/aws/variables.tf @@ -271,7 +271,7 @@ variable "ui_desired_count" { } # ---------- Autoscaling ---------- -# Defaults mirror helm/litellm/values.yaml HPAs. The "*_desired_count" vars +# Defaults mirror litellm/deploy/helm/litellm/values.yaml HPAs. The "*_desired_count" vars # above seed the initial task count; once autoscaling is enabled, the service's # desired_count is left to Application Auto Scaling (ecs.tf ignores future # changes to it). @@ -450,7 +450,7 @@ variable "db_master_username" { } variable "db_username" { - description = "IAM-authed Postgres user the proxy connects as. Must be CREATEd in the cluster and granted the rds_iam role — see terraform/litellm/aws/README.md." + description = "IAM-authed Postgres user the proxy connects as. Must be CREATEd in the cluster and granted the rds_iam role — see litellm/deploy/terraform/litellm/aws/README.md." type = string default = "litellm_app" } diff --git a/terraform/litellm/aws/versions.tf b/litellm/deploy/terraform/litellm/aws/versions.tf similarity index 100% rename from terraform/litellm/aws/versions.tf rename to litellm/deploy/terraform/litellm/aws/versions.tf diff --git a/terraform/litellm/gcp/.terraform.lock.hcl b/litellm/deploy/terraform/litellm/gcp/.terraform.lock.hcl similarity index 100% rename from terraform/litellm/gcp/.terraform.lock.hcl rename to litellm/deploy/terraform/litellm/gcp/.terraform.lock.hcl diff --git a/terraform/litellm/gcp/README.md b/litellm/deploy/terraform/litellm/gcp/README.md similarity index 99% rename from terraform/litellm/gcp/README.md rename to litellm/deploy/terraform/litellm/gcp/README.md index 32bbd1533f9..a658a45c358 100644 --- a/terraform/litellm/gcp/README.md +++ b/litellm/deploy/terraform/litellm/gcp/README.md @@ -378,7 +378,7 @@ For a per-tenant instance via the example root, the only inputs that change are the tenant slug, env, and the two pre-issued secrets: ```bash -cd terraform/litellm/gcp/examples/default +cd litellm/deploy/terraform/litellm/gcp/examples/default export TF_VAR_litellm_master_key="sk-..." # the tenant's master key export TF_VAR_litellm_license="lic-..." # their LITELLM_LICENSE @@ -406,7 +406,7 @@ example files. ## Quick start ```bash -cd terraform/litellm/gcp/examples/default +cd litellm/deploy/terraform/litellm/gcp/examples/default cp terraform.tfvars.example terraform.tfvars # Edit: project, region, tenant, env, image_registry, proxy_config, gateway_extra_secrets. @@ -483,7 +483,7 @@ provider "google-beta" { } module "litellm" { - source = "github.com/BerriAI/litellm//terraform/litellm/gcp?ref=" + source = "github.com/BerriAI/litellm//litellm/deploy/terraform/litellm/gcp?ref=" image_tag = "" # a git ref ships no image default, a registry version does diff --git a/terraform/litellm/gcp/bootstrap.tf b/litellm/deploy/terraform/litellm/gcp/bootstrap.tf similarity index 100% rename from terraform/litellm/gcp/bootstrap.tf rename to litellm/deploy/terraform/litellm/gcp/bootstrap.tf diff --git a/terraform/litellm/gcp/cloudrun.tf b/litellm/deploy/terraform/litellm/gcp/cloudrun.tf similarity index 100% rename from terraform/litellm/gcp/cloudrun.tf rename to litellm/deploy/terraform/litellm/gcp/cloudrun.tf diff --git a/terraform/litellm/gcp/cloudsql.tf b/litellm/deploy/terraform/litellm/gcp/cloudsql.tf similarity index 100% rename from terraform/litellm/gcp/cloudsql.tf rename to litellm/deploy/terraform/litellm/gcp/cloudsql.tf diff --git a/terraform/litellm/gcp/examples/default/.terraform.lock.hcl b/litellm/deploy/terraform/litellm/gcp/examples/default/.terraform.lock.hcl similarity index 100% rename from terraform/litellm/gcp/examples/default/.terraform.lock.hcl rename to litellm/deploy/terraform/litellm/gcp/examples/default/.terraform.lock.hcl diff --git a/terraform/litellm/gcp/examples/default/TUTORIAL.md b/litellm/deploy/terraform/litellm/gcp/examples/default/TUTORIAL.md similarity index 100% rename from terraform/litellm/gcp/examples/default/TUTORIAL.md rename to litellm/deploy/terraform/litellm/gcp/examples/default/TUTORIAL.md diff --git a/terraform/litellm/gcp/examples/default/deploystack.json b/litellm/deploy/terraform/litellm/gcp/examples/default/deploystack.json similarity index 97% rename from terraform/litellm/gcp/examples/default/deploystack.json rename to litellm/deploy/terraform/litellm/gcp/examples/default/deploystack.json index 2b80084ffa3..81d5d19a513 100644 --- a/terraform/litellm/gcp/examples/default/deploystack.json +++ b/litellm/deploy/terraform/litellm/gcp/examples/default/deploystack.json @@ -3,7 +3,7 @@ "name": "litellm-gcp", "description": "Deploys the LiteLLM proxy on GCP: Cloud Run gateway/backend/UI, Cloud SQL with a read replica, Memorystore Redis, a GCS bucket, Secret Manager entries, and an external HTTPS load balancer. Takes ~20-25 minutes on the first apply.", "duration": 25, - "documentation_link": "https://github.com/BerriAI/litellm/blob/main/terraform/litellm/gcp/README.md", + "documentation_link": "https://github.com/BerriAI/litellm/blob/main/litellm/deploy/terraform/litellm/gcp/README.md", "collect_project": true, "collect_region": true, "region_type": "run", diff --git a/terraform/litellm/gcp/examples/default/main.tf b/litellm/deploy/terraform/litellm/gcp/examples/default/main.tf similarity index 93% rename from terraform/litellm/gcp/examples/default/main.tf rename to litellm/deploy/terraform/litellm/gcp/examples/default/main.tf index b1462fd2f95..f0c1a09cf05 100644 --- a/terraform/litellm/gcp/examples/default/main.tf +++ b/litellm/deploy/terraform/litellm/gcp/examples/default/main.tf @@ -1,6 +1,6 @@ # One-command deploy of the LiteLLM GCP stack. # -# cd terraform/litellm/gcp/examples/default +# cd litellm/deploy/terraform/litellm/gcp/examples/default # cp terraform.tfvars.example terraform.tfvars # edit it # terraform init # terraform apply @@ -10,7 +10,7 @@ # from your own config with count/for_each or impersonated-SA providers: # # module "litellm" { -# source = "github.com/BerriAI/litellm//terraform/litellm/gcp?ref=" +# source = "github.com/BerriAI/litellm//litellm/deploy/terraform/litellm/gcp?ref=" # ... # } # diff --git a/terraform/litellm/gcp/examples/default/outputs.tf b/litellm/deploy/terraform/litellm/gcp/examples/default/outputs.tf similarity index 100% rename from terraform/litellm/gcp/examples/default/outputs.tf rename to litellm/deploy/terraform/litellm/gcp/examples/default/outputs.tf diff --git a/terraform/litellm/gcp/examples/default/providers.tf b/litellm/deploy/terraform/litellm/gcp/examples/default/providers.tf similarity index 100% rename from terraform/litellm/gcp/examples/default/providers.tf rename to litellm/deploy/terraform/litellm/gcp/examples/default/providers.tf diff --git a/terraform/litellm/gcp/examples/default/terraform.tfvars.example b/litellm/deploy/terraform/litellm/gcp/examples/default/terraform.tfvars.example similarity index 100% rename from terraform/litellm/gcp/examples/default/terraform.tfvars.example rename to litellm/deploy/terraform/litellm/gcp/examples/default/terraform.tfvars.example diff --git a/terraform/litellm/gcp/examples/default/variables.tf b/litellm/deploy/terraform/litellm/gcp/examples/default/variables.tf similarity index 100% rename from terraform/litellm/gcp/examples/default/variables.tf rename to litellm/deploy/terraform/litellm/gcp/examples/default/variables.tf diff --git a/terraform/litellm/gcp/examples/default/versions.tf b/litellm/deploy/terraform/litellm/gcp/examples/default/versions.tf similarity index 100% rename from terraform/litellm/gcp/examples/default/versions.tf rename to litellm/deploy/terraform/litellm/gcp/examples/default/versions.tf diff --git a/terraform/litellm/gcp/gcs.tf b/litellm/deploy/terraform/litellm/gcp/gcs.tf similarity index 100% rename from terraform/litellm/gcp/gcs.tf rename to litellm/deploy/terraform/litellm/gcp/gcs.tf diff --git a/terraform/litellm/gcp/iam.tf b/litellm/deploy/terraform/litellm/gcp/iam.tf similarity index 100% rename from terraform/litellm/gcp/iam.tf rename to litellm/deploy/terraform/litellm/gcp/iam.tf diff --git a/terraform/litellm/gcp/load_balancer.tf b/litellm/deploy/terraform/litellm/gcp/load_balancer.tf similarity index 100% rename from terraform/litellm/gcp/load_balancer.tf rename to litellm/deploy/terraform/litellm/gcp/load_balancer.tf diff --git a/terraform/litellm/gcp/locals.tf b/litellm/deploy/terraform/litellm/gcp/locals.tf similarity index 97% rename from terraform/litellm/gcp/locals.tf rename to litellm/deploy/terraform/litellm/gcp/locals.tf index 270036590c5..ad3a0d385d9 100644 --- a/terraform/litellm/gcp/locals.tf +++ b/litellm/deploy/terraform/litellm/gcp/locals.tf @@ -1,5 +1,5 @@ # Gateway path prefixes — mirrored verbatim from gateway/routes/allowlist.py -# and helm/litellm/templates/ingress.yaml. URL maps use the "path matcher" +# and litellm/deploy/helm/litellm/templates/ingress.yaml. URL maps use the "path matcher" # rule with `paths` lists; up to 10 path globs per rule, up to 50 rules # per matcher. Easily fits the gateway list in one rule per chunk-of-10. locals { diff --git a/terraform/litellm/gcp/network.tf b/litellm/deploy/terraform/litellm/gcp/network.tf similarity index 100% rename from terraform/litellm/gcp/network.tf rename to litellm/deploy/terraform/litellm/gcp/network.tf diff --git a/terraform/litellm/gcp/outputs.tf b/litellm/deploy/terraform/litellm/gcp/outputs.tf similarity index 100% rename from terraform/litellm/gcp/outputs.tf rename to litellm/deploy/terraform/litellm/gcp/outputs.tf diff --git a/terraform/litellm/gcp/redis.tf b/litellm/deploy/terraform/litellm/gcp/redis.tf similarity index 100% rename from terraform/litellm/gcp/redis.tf rename to litellm/deploy/terraform/litellm/gcp/redis.tf diff --git a/terraform/litellm/gcp/secrets.tf b/litellm/deploy/terraform/litellm/gcp/secrets.tf similarity index 100% rename from terraform/litellm/gcp/secrets.tf rename to litellm/deploy/terraform/litellm/gcp/secrets.tf diff --git a/terraform/litellm/gcp/tests/collector.tftest.hcl b/litellm/deploy/terraform/litellm/gcp/tests/collector.tftest.hcl similarity index 98% rename from terraform/litellm/gcp/tests/collector.tftest.hcl rename to litellm/deploy/terraform/litellm/gcp/tests/collector.tftest.hcl index 6c7810454df..46793e60ac8 100644 --- a/terraform/litellm/gcp/tests/collector.tftest.hcl +++ b/litellm/deploy/terraform/litellm/gcp/tests/collector.tftest.hcl @@ -1,6 +1,6 @@ # Plan-only coverage for the opt-in collector sidecar on the gateway Cloud # Run service. `mock_provider` keeps this offline: no GCP credentials, no API -# calls. Run from terraform/litellm/gcp with `terraform test`. +# calls. Run from litellm/deploy/terraform/litellm/gcp with `terraform test`. mock_provider "google" {} mock_provider "google-beta" {} diff --git a/terraform/litellm/gcp/tests/connection_pool.tftest.hcl b/litellm/deploy/terraform/litellm/gcp/tests/connection_pool.tftest.hcl similarity index 98% rename from terraform/litellm/gcp/tests/connection_pool.tftest.hcl rename to litellm/deploy/terraform/litellm/gcp/tests/connection_pool.tftest.hcl index 98ef6f7fe5d..5d0f46d461d 100644 --- a/terraform/litellm/gcp/tests/connection_pool.tftest.hcl +++ b/litellm/deploy/terraform/litellm/gcp/tests/connection_pool.tftest.hcl @@ -1,6 +1,6 @@ # Plan-only coverage for the in-container PgBouncer knobs on the gateway # service. `mock_provider` keeps this offline: no GCP credentials, no API -# calls, no resources. Run from terraform/litellm/gcp with `terraform test`. +# calls, no resources. Run from litellm/deploy/terraform/litellm/gcp with `terraform test`. mock_provider "google" { mock_resource "google_redis_instance" { diff --git a/terraform/litellm/gcp/tests/deps_only.tftest.hcl b/litellm/deploy/terraform/litellm/gcp/tests/deps_only.tftest.hcl similarity index 100% rename from terraform/litellm/gcp/tests/deps_only.tftest.hcl rename to litellm/deploy/terraform/litellm/gcp/tests/deps_only.tftest.hcl diff --git a/terraform/litellm/gcp/tests/metrics_sidecar.tftest.hcl b/litellm/deploy/terraform/litellm/gcp/tests/metrics_sidecar.tftest.hcl similarity index 100% rename from terraform/litellm/gcp/tests/metrics_sidecar.tftest.hcl rename to litellm/deploy/terraform/litellm/gcp/tests/metrics_sidecar.tftest.hcl diff --git a/terraform/litellm/gcp/tests/unified_image.tftest.hcl b/litellm/deploy/terraform/litellm/gcp/tests/unified_image.tftest.hcl similarity index 100% rename from terraform/litellm/gcp/tests/unified_image.tftest.hcl rename to litellm/deploy/terraform/litellm/gcp/tests/unified_image.tftest.hcl diff --git a/terraform/litellm/gcp/variables.tf b/litellm/deploy/terraform/litellm/gcp/variables.tf similarity index 99% rename from terraform/litellm/gcp/variables.tf rename to litellm/deploy/terraform/litellm/gcp/variables.tf index 21d80eb2083..d1be9fa2540 100644 --- a/terraform/litellm/gcp/variables.tf +++ b/litellm/deploy/terraform/litellm/gcp/variables.tf @@ -232,7 +232,7 @@ variable "gateway_pool_max_client_conn" { } # Cloud Run autoscales out of the box (request-rate driven). The min/max -# bounds mirror the HPA replica bounds in helm/litellm/values.yaml so each +# bounds mirror the HPA replica bounds in litellm/deploy/helm/litellm/values.yaml so each # stack scales over the same range. Cloud Run has no direct CPU-utilization # target; the request-concurrency knob below is the closest analog. diff --git a/terraform/litellm/gcp/versions.tf b/litellm/deploy/terraform/litellm/gcp/versions.tf similarity index 100% rename from terraform/litellm/gcp/versions.tf rename to litellm/deploy/terraform/litellm/gcp/versions.tf diff --git a/terraform/provider/.gitignore b/litellm/deploy/terraform/provider/.gitignore similarity index 100% rename from terraform/provider/.gitignore rename to litellm/deploy/terraform/provider/.gitignore diff --git a/terraform/provider/.goreleaser.yml b/litellm/deploy/terraform/provider/.goreleaser.yml similarity index 100% rename from terraform/provider/.goreleaser.yml rename to litellm/deploy/terraform/provider/.goreleaser.yml diff --git a/terraform/provider/CHANGELOG.md b/litellm/deploy/terraform/provider/CHANGELOG.md similarity index 99% rename from terraform/provider/CHANGELOG.md rename to litellm/deploy/terraform/provider/CHANGELOG.md index 0e60c2a7806..46b096d05b0 100644 --- a/terraform/provider/CHANGELOG.md +++ b/litellm/deploy/terraform/provider/CHANGELOG.md @@ -85,7 +85,7 @@ longer signal it. ### Changed -- The provider source of truth moved to `terraform/provider/` in [BerriAI/litellm](https://github.com/BerriAI/litellm); this repository is now a release mirror. CI in the monorepo statically audits every endpoint the provider calls against the proxy's OpenAPI schema on every change +- The provider source of truth moved to `litellm/deploy/terraform/provider/` in [BerriAI/litellm](https://github.com/BerriAI/litellm); this repository is now a release mirror. CI in the monorepo statically audits every endpoint the provider calls against the proxy's OpenAPI schema on every change - **mcp_server**, **vector_store**: `env` and `litellm_params` are now marked sensitive, so they are redacted from plan/apply output, and they are no longer read back from the API into state — the configured value is authoritative. If the proxy returns values that differ from the configuration, that drift is no longer surfaced on refresh - Dependency updates: `grpc` and `golang.org/x` modules diff --git a/terraform/provider/LICENSE b/litellm/deploy/terraform/provider/LICENSE similarity index 100% rename from terraform/provider/LICENSE rename to litellm/deploy/terraform/provider/LICENSE diff --git a/terraform/provider/Makefile b/litellm/deploy/terraform/provider/Makefile similarity index 100% rename from terraform/provider/Makefile rename to litellm/deploy/terraform/provider/Makefile diff --git a/terraform/provider/README.md b/litellm/deploy/terraform/provider/README.md similarity index 89% rename from terraform/provider/README.md rename to litellm/deploy/terraform/provider/README.md index b5ff0e5e8f8..bafee72bca7 100644 --- a/terraform/provider/README.md +++ b/litellm/deploy/terraform/provider/README.md @@ -4,7 +4,7 @@ This Terraform provider allows you to manage LiteLLM resources through Infrastru ## Source of truth -This directory (`terraform/provider/` in [BerriAI/litellm](https://github.com/BerriAI/litellm)) is the source of truth for the provider. [BerriAI/terraform-provider-litellm](https://github.com/BerriAI/terraform-provider-litellm) is a thin release mirror that the public Terraform Registry ingests from; do not open PRs there. Changes land here, where CI builds the provider, runs its tests, and statically audits every endpoint the provider calls against the proxy's generated OpenAPI schema (`tools/endpointaudit/`), so the provider cannot drift from the LiteLLM API silently. The same audit runs in reverse as a coverage gate: every management endpoint in the schema must be covered by a resource or data source, or carry a documented entry in `tools/endpointaudit/coverage_allowlist.txt`, and stale allowlist entries fail CI. Releases are published by mirroring this directory into the split repo and tagging it, which triggers the goreleaser workflow there (see `RELEASING.md`) +This directory (`litellm/deploy/terraform/provider/` in [BerriAI/litellm](https://github.com/BerriAI/litellm)) is the source of truth for the provider. [BerriAI/terraform-provider-litellm](https://github.com/BerriAI/terraform-provider-litellm) is a thin release mirror that the public Terraform Registry ingests from; do not open PRs there. Changes land here, where CI builds the provider, runs its tests, and statically audits every endpoint the provider calls against the proxy's generated OpenAPI schema (`tools/endpointaudit/`), so the provider cannot drift from the LiteLLM API silently. The same audit runs in reverse as a coverage gate: every management endpoint in the schema must be covered by a resource or data source, or carry a documented entry in `tools/endpointaudit/coverage_allowlist.txt`, and stale allowlist entries fail CI. Releases are published by mirroring this directory into the split repo and tagging it, which triggers the goreleaser workflow there (see `RELEASING.md`) ## Versioning @@ -226,7 +226,7 @@ make test ### Contributing -Contributions are welcome! Please read our [contributing guidelines](../../.github/CONTRIBUTING.md) first. +Contributions are welcome! Please read our [contributing guidelines](../../../../.github/CONTRIBUTING.md) first. ## License diff --git a/terraform/provider/RELEASING.md b/litellm/deploy/terraform/provider/RELEASING.md similarity index 93% rename from terraform/provider/RELEASING.md rename to litellm/deploy/terraform/provider/RELEASING.md index 5b72621c291..c3860ce5337 100644 --- a/terraform/provider/RELEASING.md +++ b/litellm/deploy/terraform/provider/RELEASING.md @@ -9,11 +9,11 @@ The provider is released **in lockstep with LiteLLM**: every LiteLLM release (de The flow, end to end: 1. `BerriAI/project-releaser`'s release pipeline resolves the commit to release (`main` HEAD for dev; `main` HEAD or an operator-supplied SHA for rc/stable) and passes the release approval gate -2. Its componentized terraform job rsyncs `terraform/provider/` from that commit into `BerriAI/terraform-provider-litellm`, commits, and pushes the tag `v` (for example `v1.99.0`, `v1.99.0-rc.1`, `v1.99.0-dev.1`), alongside the `terraform-aws-litellm` / `terraform-google-litellm` module mirrors which get the same tag +2. Its componentized terraform job rsyncs `litellm/deploy/terraform/provider/` from that commit into `BerriAI/terraform-provider-litellm`, commits, and pushes the tag `v` (for example `v1.99.0`, `v1.99.0-rc.1`, `v1.99.0-dev.1`), alongside the `terraform-aws-litellm` / `terraform-google-litellm` module mirrors which get the same tag 3. The tag push triggers the mirror's own `Release` workflow (goreleaser): multi-platform build, GPG-signed checksums, GitHub release. It runs unattended; project-releaser does not wait for it 4. The public Terraform Registry ingests the GitHub release as provider version `` -`terraform/provider/` only exists from LiteLLM ~1.95, so a stable patch cut from an older line skips the provider and publishes only the modules. +`litellm/deploy/terraform/provider/` only exists from LiteLLM ~1.95, so a stable patch cut from an older line skips the provider and publishes only the modules. ## Prerequisites diff --git a/terraform/provider/docs/data-sources/access_group.md b/litellm/deploy/terraform/provider/docs/data-sources/access_group.md similarity index 100% rename from terraform/provider/docs/data-sources/access_group.md rename to litellm/deploy/terraform/provider/docs/data-sources/access_group.md diff --git a/terraform/provider/docs/data-sources/access_groups.md b/litellm/deploy/terraform/provider/docs/data-sources/access_groups.md similarity index 100% rename from terraform/provider/docs/data-sources/access_groups.md rename to litellm/deploy/terraform/provider/docs/data-sources/access_groups.md diff --git a/terraform/provider/docs/data-sources/agent.md b/litellm/deploy/terraform/provider/docs/data-sources/agent.md similarity index 100% rename from terraform/provider/docs/data-sources/agent.md rename to litellm/deploy/terraform/provider/docs/data-sources/agent.md diff --git a/terraform/provider/docs/data-sources/agents.md b/litellm/deploy/terraform/provider/docs/data-sources/agents.md similarity index 100% rename from terraform/provider/docs/data-sources/agents.md rename to litellm/deploy/terraform/provider/docs/data-sources/agents.md diff --git a/terraform/provider/docs/data-sources/budget.md b/litellm/deploy/terraform/provider/docs/data-sources/budget.md similarity index 100% rename from terraform/provider/docs/data-sources/budget.md rename to litellm/deploy/terraform/provider/docs/data-sources/budget.md diff --git a/terraform/provider/docs/data-sources/budgets.md b/litellm/deploy/terraform/provider/docs/data-sources/budgets.md similarity index 100% rename from terraform/provider/docs/data-sources/budgets.md rename to litellm/deploy/terraform/provider/docs/data-sources/budgets.md diff --git a/terraform/provider/docs/data-sources/credential.md b/litellm/deploy/terraform/provider/docs/data-sources/credential.md similarity index 100% rename from terraform/provider/docs/data-sources/credential.md rename to litellm/deploy/terraform/provider/docs/data-sources/credential.md diff --git a/terraform/provider/docs/data-sources/fallback.md b/litellm/deploy/terraform/provider/docs/data-sources/fallback.md similarity index 100% rename from terraform/provider/docs/data-sources/fallback.md rename to litellm/deploy/terraform/provider/docs/data-sources/fallback.md diff --git a/terraform/provider/docs/data-sources/guardrail.md b/litellm/deploy/terraform/provider/docs/data-sources/guardrail.md similarity index 100% rename from terraform/provider/docs/data-sources/guardrail.md rename to litellm/deploy/terraform/provider/docs/data-sources/guardrail.md diff --git a/terraform/provider/docs/data-sources/guardrails.md b/litellm/deploy/terraform/provider/docs/data-sources/guardrails.md similarity index 100% rename from terraform/provider/docs/data-sources/guardrails.md rename to litellm/deploy/terraform/provider/docs/data-sources/guardrails.md diff --git a/terraform/provider/docs/data-sources/key.md b/litellm/deploy/terraform/provider/docs/data-sources/key.md similarity index 100% rename from terraform/provider/docs/data-sources/key.md rename to litellm/deploy/terraform/provider/docs/data-sources/key.md diff --git a/terraform/provider/docs/data-sources/keys.md b/litellm/deploy/terraform/provider/docs/data-sources/keys.md similarity index 100% rename from terraform/provider/docs/data-sources/keys.md rename to litellm/deploy/terraform/provider/docs/data-sources/keys.md diff --git a/terraform/provider/docs/data-sources/mcp_server.md b/litellm/deploy/terraform/provider/docs/data-sources/mcp_server.md similarity index 100% rename from terraform/provider/docs/data-sources/mcp_server.md rename to litellm/deploy/terraform/provider/docs/data-sources/mcp_server.md diff --git a/terraform/provider/docs/data-sources/mcp_servers.md b/litellm/deploy/terraform/provider/docs/data-sources/mcp_servers.md similarity index 100% rename from terraform/provider/docs/data-sources/mcp_servers.md rename to litellm/deploy/terraform/provider/docs/data-sources/mcp_servers.md diff --git a/terraform/provider/docs/data-sources/model.md b/litellm/deploy/terraform/provider/docs/data-sources/model.md similarity index 100% rename from terraform/provider/docs/data-sources/model.md rename to litellm/deploy/terraform/provider/docs/data-sources/model.md diff --git a/terraform/provider/docs/data-sources/models.md b/litellm/deploy/terraform/provider/docs/data-sources/models.md similarity index 100% rename from terraform/provider/docs/data-sources/models.md rename to litellm/deploy/terraform/provider/docs/data-sources/models.md diff --git a/terraform/provider/docs/data-sources/organization.md b/litellm/deploy/terraform/provider/docs/data-sources/organization.md similarity index 100% rename from terraform/provider/docs/data-sources/organization.md rename to litellm/deploy/terraform/provider/docs/data-sources/organization.md diff --git a/terraform/provider/docs/data-sources/organizations.md b/litellm/deploy/terraform/provider/docs/data-sources/organizations.md similarity index 100% rename from terraform/provider/docs/data-sources/organizations.md rename to litellm/deploy/terraform/provider/docs/data-sources/organizations.md diff --git a/terraform/provider/docs/data-sources/project.md b/litellm/deploy/terraform/provider/docs/data-sources/project.md similarity index 100% rename from terraform/provider/docs/data-sources/project.md rename to litellm/deploy/terraform/provider/docs/data-sources/project.md diff --git a/terraform/provider/docs/data-sources/projects.md b/litellm/deploy/terraform/provider/docs/data-sources/projects.md similarity index 100% rename from terraform/provider/docs/data-sources/projects.md rename to litellm/deploy/terraform/provider/docs/data-sources/projects.md diff --git a/terraform/provider/docs/data-sources/prompt.md b/litellm/deploy/terraform/provider/docs/data-sources/prompt.md similarity index 100% rename from terraform/provider/docs/data-sources/prompt.md rename to litellm/deploy/terraform/provider/docs/data-sources/prompt.md diff --git a/terraform/provider/docs/data-sources/prompts.md b/litellm/deploy/terraform/provider/docs/data-sources/prompts.md similarity index 100% rename from terraform/provider/docs/data-sources/prompts.md rename to litellm/deploy/terraform/provider/docs/data-sources/prompts.md diff --git a/terraform/provider/docs/data-sources/search_tool.md b/litellm/deploy/terraform/provider/docs/data-sources/search_tool.md similarity index 100% rename from terraform/provider/docs/data-sources/search_tool.md rename to litellm/deploy/terraform/provider/docs/data-sources/search_tool.md diff --git a/terraform/provider/docs/data-sources/search_tools.md b/litellm/deploy/terraform/provider/docs/data-sources/search_tools.md similarity index 100% rename from terraform/provider/docs/data-sources/search_tools.md rename to litellm/deploy/terraform/provider/docs/data-sources/search_tools.md diff --git a/terraform/provider/docs/data-sources/tag.md b/litellm/deploy/terraform/provider/docs/data-sources/tag.md similarity index 100% rename from terraform/provider/docs/data-sources/tag.md rename to litellm/deploy/terraform/provider/docs/data-sources/tag.md diff --git a/terraform/provider/docs/data-sources/tags.md b/litellm/deploy/terraform/provider/docs/data-sources/tags.md similarity index 100% rename from terraform/provider/docs/data-sources/tags.md rename to litellm/deploy/terraform/provider/docs/data-sources/tags.md diff --git a/terraform/provider/docs/data-sources/team.md b/litellm/deploy/terraform/provider/docs/data-sources/team.md similarity index 100% rename from terraform/provider/docs/data-sources/team.md rename to litellm/deploy/terraform/provider/docs/data-sources/team.md diff --git a/terraform/provider/docs/data-sources/teams.md b/litellm/deploy/terraform/provider/docs/data-sources/teams.md similarity index 100% rename from terraform/provider/docs/data-sources/teams.md rename to litellm/deploy/terraform/provider/docs/data-sources/teams.md diff --git a/terraform/provider/docs/data-sources/unified_access_group.md b/litellm/deploy/terraform/provider/docs/data-sources/unified_access_group.md similarity index 100% rename from terraform/provider/docs/data-sources/unified_access_group.md rename to litellm/deploy/terraform/provider/docs/data-sources/unified_access_group.md diff --git a/terraform/provider/docs/data-sources/unified_access_groups.md b/litellm/deploy/terraform/provider/docs/data-sources/unified_access_groups.md similarity index 100% rename from terraform/provider/docs/data-sources/unified_access_groups.md rename to litellm/deploy/terraform/provider/docs/data-sources/unified_access_groups.md diff --git a/terraform/provider/docs/data-sources/user.md b/litellm/deploy/terraform/provider/docs/data-sources/user.md similarity index 100% rename from terraform/provider/docs/data-sources/user.md rename to litellm/deploy/terraform/provider/docs/data-sources/user.md diff --git a/terraform/provider/docs/data-sources/users.md b/litellm/deploy/terraform/provider/docs/data-sources/users.md similarity index 100% rename from terraform/provider/docs/data-sources/users.md rename to litellm/deploy/terraform/provider/docs/data-sources/users.md diff --git a/terraform/provider/docs/data-sources/vector_store.md b/litellm/deploy/terraform/provider/docs/data-sources/vector_store.md similarity index 100% rename from terraform/provider/docs/data-sources/vector_store.md rename to litellm/deploy/terraform/provider/docs/data-sources/vector_store.md diff --git a/terraform/provider/docs/index.md b/litellm/deploy/terraform/provider/docs/index.md similarity index 100% rename from terraform/provider/docs/index.md rename to litellm/deploy/terraform/provider/docs/index.md diff --git a/terraform/provider/docs/resources/access_group.md b/litellm/deploy/terraform/provider/docs/resources/access_group.md similarity index 100% rename from terraform/provider/docs/resources/access_group.md rename to litellm/deploy/terraform/provider/docs/resources/access_group.md diff --git a/terraform/provider/docs/resources/agent.md b/litellm/deploy/terraform/provider/docs/resources/agent.md similarity index 100% rename from terraform/provider/docs/resources/agent.md rename to litellm/deploy/terraform/provider/docs/resources/agent.md diff --git a/terraform/provider/docs/resources/budget.md b/litellm/deploy/terraform/provider/docs/resources/budget.md similarity index 100% rename from terraform/provider/docs/resources/budget.md rename to litellm/deploy/terraform/provider/docs/resources/budget.md diff --git a/terraform/provider/docs/resources/credential.md b/litellm/deploy/terraform/provider/docs/resources/credential.md similarity index 100% rename from terraform/provider/docs/resources/credential.md rename to litellm/deploy/terraform/provider/docs/resources/credential.md diff --git a/terraform/provider/docs/resources/fallback.md b/litellm/deploy/terraform/provider/docs/resources/fallback.md similarity index 100% rename from terraform/provider/docs/resources/fallback.md rename to litellm/deploy/terraform/provider/docs/resources/fallback.md diff --git a/terraform/provider/docs/resources/guardrail.md b/litellm/deploy/terraform/provider/docs/resources/guardrail.md similarity index 100% rename from terraform/provider/docs/resources/guardrail.md rename to litellm/deploy/terraform/provider/docs/resources/guardrail.md diff --git a/terraform/provider/docs/resources/jwt_key_mapping.md b/litellm/deploy/terraform/provider/docs/resources/jwt_key_mapping.md similarity index 100% rename from terraform/provider/docs/resources/jwt_key_mapping.md rename to litellm/deploy/terraform/provider/docs/resources/jwt_key_mapping.md diff --git a/terraform/provider/docs/resources/key.md b/litellm/deploy/terraform/provider/docs/resources/key.md similarity index 100% rename from terraform/provider/docs/resources/key.md rename to litellm/deploy/terraform/provider/docs/resources/key.md diff --git a/terraform/provider/docs/resources/key_block.md b/litellm/deploy/terraform/provider/docs/resources/key_block.md similarity index 100% rename from terraform/provider/docs/resources/key_block.md rename to litellm/deploy/terraform/provider/docs/resources/key_block.md diff --git a/terraform/provider/docs/resources/mcp_server.md b/litellm/deploy/terraform/provider/docs/resources/mcp_server.md similarity index 100% rename from terraform/provider/docs/resources/mcp_server.md rename to litellm/deploy/terraform/provider/docs/resources/mcp_server.md diff --git a/terraform/provider/docs/resources/model.md b/litellm/deploy/terraform/provider/docs/resources/model.md similarity index 100% rename from terraform/provider/docs/resources/model.md rename to litellm/deploy/terraform/provider/docs/resources/model.md diff --git a/terraform/provider/docs/resources/project.md b/litellm/deploy/terraform/provider/docs/resources/project.md similarity index 100% rename from terraform/provider/docs/resources/project.md rename to litellm/deploy/terraform/provider/docs/resources/project.md diff --git a/terraform/provider/docs/resources/prompt.md b/litellm/deploy/terraform/provider/docs/resources/prompt.md similarity index 100% rename from terraform/provider/docs/resources/prompt.md rename to litellm/deploy/terraform/provider/docs/resources/prompt.md diff --git a/terraform/provider/docs/resources/search_tool.md b/litellm/deploy/terraform/provider/docs/resources/search_tool.md similarity index 100% rename from terraform/provider/docs/resources/search_tool.md rename to litellm/deploy/terraform/provider/docs/resources/search_tool.md diff --git a/terraform/provider/docs/resources/tag.md b/litellm/deploy/terraform/provider/docs/resources/tag.md similarity index 100% rename from terraform/provider/docs/resources/tag.md rename to litellm/deploy/terraform/provider/docs/resources/tag.md diff --git a/terraform/provider/docs/resources/team.md b/litellm/deploy/terraform/provider/docs/resources/team.md similarity index 100% rename from terraform/provider/docs/resources/team.md rename to litellm/deploy/terraform/provider/docs/resources/team.md diff --git a/terraform/provider/docs/resources/team_block.md b/litellm/deploy/terraform/provider/docs/resources/team_block.md similarity index 100% rename from terraform/provider/docs/resources/team_block.md rename to litellm/deploy/terraform/provider/docs/resources/team_block.md diff --git a/terraform/provider/docs/resources/team_member.md b/litellm/deploy/terraform/provider/docs/resources/team_member.md similarity index 100% rename from terraform/provider/docs/resources/team_member.md rename to litellm/deploy/terraform/provider/docs/resources/team_member.md diff --git a/terraform/provider/docs/resources/team_member_add.md b/litellm/deploy/terraform/provider/docs/resources/team_member_add.md similarity index 100% rename from terraform/provider/docs/resources/team_member_add.md rename to litellm/deploy/terraform/provider/docs/resources/team_member_add.md diff --git a/terraform/provider/docs/resources/unified_access_group.md b/litellm/deploy/terraform/provider/docs/resources/unified_access_group.md similarity index 100% rename from terraform/provider/docs/resources/unified_access_group.md rename to litellm/deploy/terraform/provider/docs/resources/unified_access_group.md diff --git a/terraform/provider/docs/resources/user.md b/litellm/deploy/terraform/provider/docs/resources/user.md similarity index 100% rename from terraform/provider/docs/resources/user.md rename to litellm/deploy/terraform/provider/docs/resources/user.md diff --git a/terraform/provider/docs/resources/vector_store.md b/litellm/deploy/terraform/provider/docs/resources/vector_store.md similarity index 100% rename from terraform/provider/docs/resources/vector_store.md rename to litellm/deploy/terraform/provider/docs/resources/vector_store.md diff --git a/terraform/provider/examples/model_additional_params.tf b/litellm/deploy/terraform/provider/examples/model_additional_params.tf similarity index 100% rename from terraform/provider/examples/model_additional_params.tf rename to litellm/deploy/terraform/provider/examples/model_additional_params.tf diff --git a/terraform/provider/go.mod b/litellm/deploy/terraform/provider/go.mod similarity index 100% rename from terraform/provider/go.mod rename to litellm/deploy/terraform/provider/go.mod diff --git a/terraform/provider/go.sum b/litellm/deploy/terraform/provider/go.sum similarity index 100% rename from terraform/provider/go.sum rename to litellm/deploy/terraform/provider/go.sum diff --git a/terraform/provider/litellm/client.go b/litellm/deploy/terraform/provider/litellm/client.go similarity index 100% rename from terraform/provider/litellm/client.go rename to litellm/deploy/terraform/provider/litellm/client.go diff --git a/terraform/provider/litellm/client_test.go b/litellm/deploy/terraform/provider/litellm/client_test.go similarity index 100% rename from terraform/provider/litellm/client_test.go rename to litellm/deploy/terraform/provider/litellm/client_test.go diff --git a/terraform/provider/litellm/data_source_access_group.go b/litellm/deploy/terraform/provider/litellm/data_source_access_group.go similarity index 100% rename from terraform/provider/litellm/data_source_access_group.go rename to litellm/deploy/terraform/provider/litellm/data_source_access_group.go diff --git a/terraform/provider/litellm/data_source_access_group_test.go b/litellm/deploy/terraform/provider/litellm/data_source_access_group_test.go similarity index 100% rename from terraform/provider/litellm/data_source_access_group_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_access_group_test.go diff --git a/terraform/provider/litellm/data_source_agent.go b/litellm/deploy/terraform/provider/litellm/data_source_agent.go similarity index 100% rename from terraform/provider/litellm/data_source_agent.go rename to litellm/deploy/terraform/provider/litellm/data_source_agent.go diff --git a/terraform/provider/litellm/data_source_agent_test.go b/litellm/deploy/terraform/provider/litellm/data_source_agent_test.go similarity index 100% rename from terraform/provider/litellm/data_source_agent_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_agent_test.go diff --git a/terraform/provider/litellm/data_source_budget.go b/litellm/deploy/terraform/provider/litellm/data_source_budget.go similarity index 100% rename from terraform/provider/litellm/data_source_budget.go rename to litellm/deploy/terraform/provider/litellm/data_source_budget.go diff --git a/terraform/provider/litellm/data_source_budget_test.go b/litellm/deploy/terraform/provider/litellm/data_source_budget_test.go similarity index 100% rename from terraform/provider/litellm/data_source_budget_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_budget_test.go diff --git a/terraform/provider/litellm/data_source_credential.go b/litellm/deploy/terraform/provider/litellm/data_source_credential.go similarity index 100% rename from terraform/provider/litellm/data_source_credential.go rename to litellm/deploy/terraform/provider/litellm/data_source_credential.go diff --git a/terraform/provider/litellm/data_source_fallback.go b/litellm/deploy/terraform/provider/litellm/data_source_fallback.go similarity index 100% rename from terraform/provider/litellm/data_source_fallback.go rename to litellm/deploy/terraform/provider/litellm/data_source_fallback.go diff --git a/terraform/provider/litellm/data_source_fallback_test.go b/litellm/deploy/terraform/provider/litellm/data_source_fallback_test.go similarity index 100% rename from terraform/provider/litellm/data_source_fallback_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_fallback_test.go diff --git a/terraform/provider/litellm/data_source_guardrail.go b/litellm/deploy/terraform/provider/litellm/data_source_guardrail.go similarity index 100% rename from terraform/provider/litellm/data_source_guardrail.go rename to litellm/deploy/terraform/provider/litellm/data_source_guardrail.go diff --git a/terraform/provider/litellm/data_source_guardrail_test.go b/litellm/deploy/terraform/provider/litellm/data_source_guardrail_test.go similarity index 100% rename from terraform/provider/litellm/data_source_guardrail_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_guardrail_test.go diff --git a/terraform/provider/litellm/data_source_key.go b/litellm/deploy/terraform/provider/litellm/data_source_key.go similarity index 100% rename from terraform/provider/litellm/data_source_key.go rename to litellm/deploy/terraform/provider/litellm/data_source_key.go diff --git a/terraform/provider/litellm/data_source_key_test.go b/litellm/deploy/terraform/provider/litellm/data_source_key_test.go similarity index 100% rename from terraform/provider/litellm/data_source_key_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_key_test.go diff --git a/terraform/provider/litellm/data_source_mcp_server.go b/litellm/deploy/terraform/provider/litellm/data_source_mcp_server.go similarity index 100% rename from terraform/provider/litellm/data_source_mcp_server.go rename to litellm/deploy/terraform/provider/litellm/data_source_mcp_server.go diff --git a/terraform/provider/litellm/data_source_mcp_server_test.go b/litellm/deploy/terraform/provider/litellm/data_source_mcp_server_test.go similarity index 100% rename from terraform/provider/litellm/data_source_mcp_server_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_mcp_server_test.go diff --git a/terraform/provider/litellm/data_source_model.go b/litellm/deploy/terraform/provider/litellm/data_source_model.go similarity index 100% rename from terraform/provider/litellm/data_source_model.go rename to litellm/deploy/terraform/provider/litellm/data_source_model.go diff --git a/terraform/provider/litellm/data_source_model_test.go b/litellm/deploy/terraform/provider/litellm/data_source_model_test.go similarity index 100% rename from terraform/provider/litellm/data_source_model_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_model_test.go diff --git a/terraform/provider/litellm/data_source_organization.go b/litellm/deploy/terraform/provider/litellm/data_source_organization.go similarity index 100% rename from terraform/provider/litellm/data_source_organization.go rename to litellm/deploy/terraform/provider/litellm/data_source_organization.go diff --git a/terraform/provider/litellm/data_source_organization_test.go b/litellm/deploy/terraform/provider/litellm/data_source_organization_test.go similarity index 100% rename from terraform/provider/litellm/data_source_organization_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_organization_test.go diff --git a/terraform/provider/litellm/data_source_project.go b/litellm/deploy/terraform/provider/litellm/data_source_project.go similarity index 100% rename from terraform/provider/litellm/data_source_project.go rename to litellm/deploy/terraform/provider/litellm/data_source_project.go diff --git a/terraform/provider/litellm/data_source_project_test.go b/litellm/deploy/terraform/provider/litellm/data_source_project_test.go similarity index 100% rename from terraform/provider/litellm/data_source_project_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_project_test.go diff --git a/terraform/provider/litellm/data_source_prompt.go b/litellm/deploy/terraform/provider/litellm/data_source_prompt.go similarity index 100% rename from terraform/provider/litellm/data_source_prompt.go rename to litellm/deploy/terraform/provider/litellm/data_source_prompt.go diff --git a/terraform/provider/litellm/data_source_prompt_test.go b/litellm/deploy/terraform/provider/litellm/data_source_prompt_test.go similarity index 100% rename from terraform/provider/litellm/data_source_prompt_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_prompt_test.go diff --git a/terraform/provider/litellm/data_source_search_tool.go b/litellm/deploy/terraform/provider/litellm/data_source_search_tool.go similarity index 100% rename from terraform/provider/litellm/data_source_search_tool.go rename to litellm/deploy/terraform/provider/litellm/data_source_search_tool.go diff --git a/terraform/provider/litellm/data_source_search_tool_test.go b/litellm/deploy/terraform/provider/litellm/data_source_search_tool_test.go similarity index 100% rename from terraform/provider/litellm/data_source_search_tool_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_search_tool_test.go diff --git a/terraform/provider/litellm/data_source_tag.go b/litellm/deploy/terraform/provider/litellm/data_source_tag.go similarity index 100% rename from terraform/provider/litellm/data_source_tag.go rename to litellm/deploy/terraform/provider/litellm/data_source_tag.go diff --git a/terraform/provider/litellm/data_source_tag_test.go b/litellm/deploy/terraform/provider/litellm/data_source_tag_test.go similarity index 100% rename from terraform/provider/litellm/data_source_tag_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_tag_test.go diff --git a/terraform/provider/litellm/data_source_team.go b/litellm/deploy/terraform/provider/litellm/data_source_team.go similarity index 100% rename from terraform/provider/litellm/data_source_team.go rename to litellm/deploy/terraform/provider/litellm/data_source_team.go diff --git a/terraform/provider/litellm/data_source_team_test.go b/litellm/deploy/terraform/provider/litellm/data_source_team_test.go similarity index 100% rename from terraform/provider/litellm/data_source_team_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_team_test.go diff --git a/terraform/provider/litellm/data_source_unified_access_group.go b/litellm/deploy/terraform/provider/litellm/data_source_unified_access_group.go similarity index 100% rename from terraform/provider/litellm/data_source_unified_access_group.go rename to litellm/deploy/terraform/provider/litellm/data_source_unified_access_group.go diff --git a/terraform/provider/litellm/data_source_unified_access_group_test.go b/litellm/deploy/terraform/provider/litellm/data_source_unified_access_group_test.go similarity index 100% rename from terraform/provider/litellm/data_source_unified_access_group_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_unified_access_group_test.go diff --git a/terraform/provider/litellm/data_source_user.go b/litellm/deploy/terraform/provider/litellm/data_source_user.go similarity index 100% rename from terraform/provider/litellm/data_source_user.go rename to litellm/deploy/terraform/provider/litellm/data_source_user.go diff --git a/terraform/provider/litellm/data_source_user_test.go b/litellm/deploy/terraform/provider/litellm/data_source_user_test.go similarity index 100% rename from terraform/provider/litellm/data_source_user_test.go rename to litellm/deploy/terraform/provider/litellm/data_source_user_test.go diff --git a/terraform/provider/litellm/data_source_vector_store.go b/litellm/deploy/terraform/provider/litellm/data_source_vector_store.go similarity index 100% rename from terraform/provider/litellm/data_source_vector_store.go rename to litellm/deploy/terraform/provider/litellm/data_source_vector_store.go diff --git a/terraform/provider/litellm/provider.go b/litellm/deploy/terraform/provider/litellm/provider.go similarity index 100% rename from terraform/provider/litellm/provider.go rename to litellm/deploy/terraform/provider/litellm/provider.go diff --git a/terraform/provider/litellm/provider_test.go b/litellm/deploy/terraform/provider/litellm/provider_test.go similarity index 100% rename from terraform/provider/litellm/provider_test.go rename to litellm/deploy/terraform/provider/litellm/provider_test.go diff --git a/terraform/provider/litellm/resource_access_group.go b/litellm/deploy/terraform/provider/litellm/resource_access_group.go similarity index 100% rename from terraform/provider/litellm/resource_access_group.go rename to litellm/deploy/terraform/provider/litellm/resource_access_group.go diff --git a/terraform/provider/litellm/resource_access_group_test.go b/litellm/deploy/terraform/provider/litellm/resource_access_group_test.go similarity index 100% rename from terraform/provider/litellm/resource_access_group_test.go rename to litellm/deploy/terraform/provider/litellm/resource_access_group_test.go diff --git a/terraform/provider/litellm/resource_agent.go b/litellm/deploy/terraform/provider/litellm/resource_agent.go similarity index 100% rename from terraform/provider/litellm/resource_agent.go rename to litellm/deploy/terraform/provider/litellm/resource_agent.go diff --git a/terraform/provider/litellm/resource_agent_test.go b/litellm/deploy/terraform/provider/litellm/resource_agent_test.go similarity index 100% rename from terraform/provider/litellm/resource_agent_test.go rename to litellm/deploy/terraform/provider/litellm/resource_agent_test.go diff --git a/terraform/provider/litellm/resource_budget.go b/litellm/deploy/terraform/provider/litellm/resource_budget.go similarity index 100% rename from terraform/provider/litellm/resource_budget.go rename to litellm/deploy/terraform/provider/litellm/resource_budget.go diff --git a/terraform/provider/litellm/resource_budget_test.go b/litellm/deploy/terraform/provider/litellm/resource_budget_test.go similarity index 100% rename from terraform/provider/litellm/resource_budget_test.go rename to litellm/deploy/terraform/provider/litellm/resource_budget_test.go diff --git a/terraform/provider/litellm/resource_credential.go b/litellm/deploy/terraform/provider/litellm/resource_credential.go similarity index 100% rename from terraform/provider/litellm/resource_credential.go rename to litellm/deploy/terraform/provider/litellm/resource_credential.go diff --git a/terraform/provider/litellm/resource_credential_crud.go b/litellm/deploy/terraform/provider/litellm/resource_credential_crud.go similarity index 100% rename from terraform/provider/litellm/resource_credential_crud.go rename to litellm/deploy/terraform/provider/litellm/resource_credential_crud.go diff --git a/terraform/provider/litellm/resource_credential_crud_test.go b/litellm/deploy/terraform/provider/litellm/resource_credential_crud_test.go similarity index 100% rename from terraform/provider/litellm/resource_credential_crud_test.go rename to litellm/deploy/terraform/provider/litellm/resource_credential_crud_test.go diff --git a/terraform/provider/litellm/resource_fallback.go b/litellm/deploy/terraform/provider/litellm/resource_fallback.go similarity index 100% rename from terraform/provider/litellm/resource_fallback.go rename to litellm/deploy/terraform/provider/litellm/resource_fallback.go diff --git a/terraform/provider/litellm/resource_fallback_test.go b/litellm/deploy/terraform/provider/litellm/resource_fallback_test.go similarity index 100% rename from terraform/provider/litellm/resource_fallback_test.go rename to litellm/deploy/terraform/provider/litellm/resource_fallback_test.go diff --git a/terraform/provider/litellm/resource_guardrail.go b/litellm/deploy/terraform/provider/litellm/resource_guardrail.go similarity index 100% rename from terraform/provider/litellm/resource_guardrail.go rename to litellm/deploy/terraform/provider/litellm/resource_guardrail.go diff --git a/terraform/provider/litellm/resource_guardrail_test.go b/litellm/deploy/terraform/provider/litellm/resource_guardrail_test.go similarity index 100% rename from terraform/provider/litellm/resource_guardrail_test.go rename to litellm/deploy/terraform/provider/litellm/resource_guardrail_test.go diff --git a/terraform/provider/litellm/resource_jwt_key_mapping.go b/litellm/deploy/terraform/provider/litellm/resource_jwt_key_mapping.go similarity index 100% rename from terraform/provider/litellm/resource_jwt_key_mapping.go rename to litellm/deploy/terraform/provider/litellm/resource_jwt_key_mapping.go diff --git a/terraform/provider/litellm/resource_jwt_key_mapping_crud.go b/litellm/deploy/terraform/provider/litellm/resource_jwt_key_mapping_crud.go similarity index 100% rename from terraform/provider/litellm/resource_jwt_key_mapping_crud.go rename to litellm/deploy/terraform/provider/litellm/resource_jwt_key_mapping_crud.go diff --git a/terraform/provider/litellm/resource_jwt_key_mapping_crud_test.go b/litellm/deploy/terraform/provider/litellm/resource_jwt_key_mapping_crud_test.go similarity index 100% rename from terraform/provider/litellm/resource_jwt_key_mapping_crud_test.go rename to litellm/deploy/terraform/provider/litellm/resource_jwt_key_mapping_crud_test.go diff --git a/terraform/provider/litellm/resource_key.go b/litellm/deploy/terraform/provider/litellm/resource_key.go similarity index 100% rename from terraform/provider/litellm/resource_key.go rename to litellm/deploy/terraform/provider/litellm/resource_key.go diff --git a/terraform/provider/litellm/resource_key_block.go b/litellm/deploy/terraform/provider/litellm/resource_key_block.go similarity index 100% rename from terraform/provider/litellm/resource_key_block.go rename to litellm/deploy/terraform/provider/litellm/resource_key_block.go diff --git a/terraform/provider/litellm/resource_key_block_test.go b/litellm/deploy/terraform/provider/litellm/resource_key_block_test.go similarity index 100% rename from terraform/provider/litellm/resource_key_block_test.go rename to litellm/deploy/terraform/provider/litellm/resource_key_block_test.go diff --git a/terraform/provider/litellm/resource_key_test.go b/litellm/deploy/terraform/provider/litellm/resource_key_test.go similarity index 100% rename from terraform/provider/litellm/resource_key_test.go rename to litellm/deploy/terraform/provider/litellm/resource_key_test.go diff --git a/terraform/provider/litellm/resource_key_utils.go b/litellm/deploy/terraform/provider/litellm/resource_key_utils.go similarity index 100% rename from terraform/provider/litellm/resource_key_utils.go rename to litellm/deploy/terraform/provider/litellm/resource_key_utils.go diff --git a/terraform/provider/litellm/resource_mcp_server.go b/litellm/deploy/terraform/provider/litellm/resource_mcp_server.go similarity index 100% rename from terraform/provider/litellm/resource_mcp_server.go rename to litellm/deploy/terraform/provider/litellm/resource_mcp_server.go diff --git a/terraform/provider/litellm/resource_mcp_server_crud.go b/litellm/deploy/terraform/provider/litellm/resource_mcp_server_crud.go similarity index 100% rename from terraform/provider/litellm/resource_mcp_server_crud.go rename to litellm/deploy/terraform/provider/litellm/resource_mcp_server_crud.go diff --git a/terraform/provider/litellm/resource_mcp_server_crud_test.go b/litellm/deploy/terraform/provider/litellm/resource_mcp_server_crud_test.go similarity index 100% rename from terraform/provider/litellm/resource_mcp_server_crud_test.go rename to litellm/deploy/terraform/provider/litellm/resource_mcp_server_crud_test.go diff --git a/terraform/provider/litellm/resource_model.go b/litellm/deploy/terraform/provider/litellm/resource_model.go similarity index 100% rename from terraform/provider/litellm/resource_model.go rename to litellm/deploy/terraform/provider/litellm/resource_model.go diff --git a/terraform/provider/litellm/resource_model_crud.go b/litellm/deploy/terraform/provider/litellm/resource_model_crud.go similarity index 100% rename from terraform/provider/litellm/resource_model_crud.go rename to litellm/deploy/terraform/provider/litellm/resource_model_crud.go diff --git a/terraform/provider/litellm/resource_model_test.go b/litellm/deploy/terraform/provider/litellm/resource_model_test.go similarity index 100% rename from terraform/provider/litellm/resource_model_test.go rename to litellm/deploy/terraform/provider/litellm/resource_model_test.go diff --git a/terraform/provider/litellm/resource_organization.go b/litellm/deploy/terraform/provider/litellm/resource_organization.go similarity index 100% rename from terraform/provider/litellm/resource_organization.go rename to litellm/deploy/terraform/provider/litellm/resource_organization.go diff --git a/terraform/provider/litellm/resource_organization_member.go b/litellm/deploy/terraform/provider/litellm/resource_organization_member.go similarity index 100% rename from terraform/provider/litellm/resource_organization_member.go rename to litellm/deploy/terraform/provider/litellm/resource_organization_member.go diff --git a/terraform/provider/litellm/resource_organization_member_add.go b/litellm/deploy/terraform/provider/litellm/resource_organization_member_add.go similarity index 100% rename from terraform/provider/litellm/resource_organization_member_add.go rename to litellm/deploy/terraform/provider/litellm/resource_organization_member_add.go diff --git a/terraform/provider/litellm/resource_organization_member_add_test.go b/litellm/deploy/terraform/provider/litellm/resource_organization_member_add_test.go similarity index 100% rename from terraform/provider/litellm/resource_organization_member_add_test.go rename to litellm/deploy/terraform/provider/litellm/resource_organization_member_add_test.go diff --git a/terraform/provider/litellm/resource_organization_member_test.go b/litellm/deploy/terraform/provider/litellm/resource_organization_member_test.go similarity index 100% rename from terraform/provider/litellm/resource_organization_member_test.go rename to litellm/deploy/terraform/provider/litellm/resource_organization_member_test.go diff --git a/terraform/provider/litellm/resource_organization_test.go b/litellm/deploy/terraform/provider/litellm/resource_organization_test.go similarity index 100% rename from terraform/provider/litellm/resource_organization_test.go rename to litellm/deploy/terraform/provider/litellm/resource_organization_test.go diff --git a/terraform/provider/litellm/resource_project.go b/litellm/deploy/terraform/provider/litellm/resource_project.go similarity index 100% rename from terraform/provider/litellm/resource_project.go rename to litellm/deploy/terraform/provider/litellm/resource_project.go diff --git a/terraform/provider/litellm/resource_project_test.go b/litellm/deploy/terraform/provider/litellm/resource_project_test.go similarity index 100% rename from terraform/provider/litellm/resource_project_test.go rename to litellm/deploy/terraform/provider/litellm/resource_project_test.go diff --git a/terraform/provider/litellm/resource_prompt.go b/litellm/deploy/terraform/provider/litellm/resource_prompt.go similarity index 100% rename from terraform/provider/litellm/resource_prompt.go rename to litellm/deploy/terraform/provider/litellm/resource_prompt.go diff --git a/terraform/provider/litellm/resource_prompt_test.go b/litellm/deploy/terraform/provider/litellm/resource_prompt_test.go similarity index 100% rename from terraform/provider/litellm/resource_prompt_test.go rename to litellm/deploy/terraform/provider/litellm/resource_prompt_test.go diff --git a/terraform/provider/litellm/resource_search_tool.go b/litellm/deploy/terraform/provider/litellm/resource_search_tool.go similarity index 100% rename from terraform/provider/litellm/resource_search_tool.go rename to litellm/deploy/terraform/provider/litellm/resource_search_tool.go diff --git a/terraform/provider/litellm/resource_search_tool_test.go b/litellm/deploy/terraform/provider/litellm/resource_search_tool_test.go similarity index 100% rename from terraform/provider/litellm/resource_search_tool_test.go rename to litellm/deploy/terraform/provider/litellm/resource_search_tool_test.go diff --git a/terraform/provider/litellm/resource_tag.go b/litellm/deploy/terraform/provider/litellm/resource_tag.go similarity index 100% rename from terraform/provider/litellm/resource_tag.go rename to litellm/deploy/terraform/provider/litellm/resource_tag.go diff --git a/terraform/provider/litellm/resource_tag_test.go b/litellm/deploy/terraform/provider/litellm/resource_tag_test.go similarity index 100% rename from terraform/provider/litellm/resource_tag_test.go rename to litellm/deploy/terraform/provider/litellm/resource_tag_test.go diff --git a/terraform/provider/litellm/resource_team.go b/litellm/deploy/terraform/provider/litellm/resource_team.go similarity index 100% rename from terraform/provider/litellm/resource_team.go rename to litellm/deploy/terraform/provider/litellm/resource_team.go diff --git a/terraform/provider/litellm/resource_team_block.go b/litellm/deploy/terraform/provider/litellm/resource_team_block.go similarity index 100% rename from terraform/provider/litellm/resource_team_block.go rename to litellm/deploy/terraform/provider/litellm/resource_team_block.go diff --git a/terraform/provider/litellm/resource_team_block_test.go b/litellm/deploy/terraform/provider/litellm/resource_team_block_test.go similarity index 100% rename from terraform/provider/litellm/resource_team_block_test.go rename to litellm/deploy/terraform/provider/litellm/resource_team_block_test.go diff --git a/terraform/provider/litellm/resource_team_member.go b/litellm/deploy/terraform/provider/litellm/resource_team_member.go similarity index 100% rename from terraform/provider/litellm/resource_team_member.go rename to litellm/deploy/terraform/provider/litellm/resource_team_member.go diff --git a/terraform/provider/litellm/resource_team_member_add.go b/litellm/deploy/terraform/provider/litellm/resource_team_member_add.go similarity index 100% rename from terraform/provider/litellm/resource_team_member_add.go rename to litellm/deploy/terraform/provider/litellm/resource_team_member_add.go diff --git a/terraform/provider/litellm/resource_team_member_add_test.go b/litellm/deploy/terraform/provider/litellm/resource_team_member_add_test.go similarity index 100% rename from terraform/provider/litellm/resource_team_member_add_test.go rename to litellm/deploy/terraform/provider/litellm/resource_team_member_add_test.go diff --git a/terraform/provider/litellm/resource_team_member_test.go b/litellm/deploy/terraform/provider/litellm/resource_team_member_test.go similarity index 100% rename from terraform/provider/litellm/resource_team_member_test.go rename to litellm/deploy/terraform/provider/litellm/resource_team_member_test.go diff --git a/terraform/provider/litellm/resource_team_test.go b/litellm/deploy/terraform/provider/litellm/resource_team_test.go similarity index 100% rename from terraform/provider/litellm/resource_team_test.go rename to litellm/deploy/terraform/provider/litellm/resource_team_test.go diff --git a/terraform/provider/litellm/resource_unified_access_group.go b/litellm/deploy/terraform/provider/litellm/resource_unified_access_group.go similarity index 100% rename from terraform/provider/litellm/resource_unified_access_group.go rename to litellm/deploy/terraform/provider/litellm/resource_unified_access_group.go diff --git a/terraform/provider/litellm/resource_unified_access_group_test.go b/litellm/deploy/terraform/provider/litellm/resource_unified_access_group_test.go similarity index 100% rename from terraform/provider/litellm/resource_unified_access_group_test.go rename to litellm/deploy/terraform/provider/litellm/resource_unified_access_group_test.go diff --git a/terraform/provider/litellm/resource_user.go b/litellm/deploy/terraform/provider/litellm/resource_user.go similarity index 100% rename from terraform/provider/litellm/resource_user.go rename to litellm/deploy/terraform/provider/litellm/resource_user.go diff --git a/terraform/provider/litellm/resource_user_test.go b/litellm/deploy/terraform/provider/litellm/resource_user_test.go similarity index 100% rename from terraform/provider/litellm/resource_user_test.go rename to litellm/deploy/terraform/provider/litellm/resource_user_test.go diff --git a/terraform/provider/litellm/resource_vector_store.go b/litellm/deploy/terraform/provider/litellm/resource_vector_store.go similarity index 100% rename from terraform/provider/litellm/resource_vector_store.go rename to litellm/deploy/terraform/provider/litellm/resource_vector_store.go diff --git a/terraform/provider/litellm/resource_vector_store_crud.go b/litellm/deploy/terraform/provider/litellm/resource_vector_store_crud.go similarity index 100% rename from terraform/provider/litellm/resource_vector_store_crud.go rename to litellm/deploy/terraform/provider/litellm/resource_vector_store_crud.go diff --git a/terraform/provider/litellm/resource_vector_store_crud_test.go b/litellm/deploy/terraform/provider/litellm/resource_vector_store_crud_test.go similarity index 100% rename from terraform/provider/litellm/resource_vector_store_crud_test.go rename to litellm/deploy/terraform/provider/litellm/resource_vector_store_crud_test.go diff --git a/terraform/provider/litellm/types.go b/litellm/deploy/terraform/provider/litellm/types.go similarity index 100% rename from terraform/provider/litellm/types.go rename to litellm/deploy/terraform/provider/litellm/types.go diff --git a/terraform/provider/litellm/utils.go b/litellm/deploy/terraform/provider/litellm/utils.go similarity index 100% rename from terraform/provider/litellm/utils.go rename to litellm/deploy/terraform/provider/litellm/utils.go diff --git a/terraform/provider/litellm/utils_test.go b/litellm/deploy/terraform/provider/litellm/utils_test.go similarity index 100% rename from terraform/provider/litellm/utils_test.go rename to litellm/deploy/terraform/provider/litellm/utils_test.go diff --git a/terraform/provider/main.go b/litellm/deploy/terraform/provider/main.go similarity index 100% rename from terraform/provider/main.go rename to litellm/deploy/terraform/provider/main.go diff --git a/terraform/provider/terraform-registry-manifest.json b/litellm/deploy/terraform/provider/terraform-registry-manifest.json similarity index 100% rename from terraform/provider/terraform-registry-manifest.json rename to litellm/deploy/terraform/provider/terraform-registry-manifest.json diff --git a/terraform/provider/tools/dump_openapi.py b/litellm/deploy/terraform/provider/tools/dump_openapi.py similarity index 68% rename from terraform/provider/tools/dump_openapi.py rename to litellm/deploy/terraform/provider/tools/dump_openapi.py index b4f2dceeb09..b49e1d47be8 100644 --- a/terraform/provider/tools/dump_openapi.py +++ b/litellm/deploy/terraform/provider/tools/dump_openapi.py @@ -2,7 +2,7 @@ Run from the litellm repo root with the proxy dependencies installed: - python terraform/provider/tools/dump_openapi.py openapi.json + python litellm/deploy/terraform/provider/tools/dump_openapi.py openapi.json """ import json @@ -18,6 +18,6 @@ def main(out_path: str) -> None: if __name__ == "__main__": if len(sys.argv) != 2: - print("usage: python terraform/provider/tools/dump_openapi.py ", file=sys.stderr) + print("usage: python litellm/deploy/terraform/provider/tools/dump_openapi.py ", file=sys.stderr) sys.exit(2) main(sys.argv[1]) diff --git a/terraform/provider/tools/endpointaudit/coverage.go b/litellm/deploy/terraform/provider/tools/endpointaudit/coverage.go similarity index 100% rename from terraform/provider/tools/endpointaudit/coverage.go rename to litellm/deploy/terraform/provider/tools/endpointaudit/coverage.go diff --git a/terraform/provider/tools/endpointaudit/coverage_allowlist.txt b/litellm/deploy/terraform/provider/tools/endpointaudit/coverage_allowlist.txt similarity index 100% rename from terraform/provider/tools/endpointaudit/coverage_allowlist.txt rename to litellm/deploy/terraform/provider/tools/endpointaudit/coverage_allowlist.txt diff --git a/terraform/provider/tools/endpointaudit/coverage_test.go b/litellm/deploy/terraform/provider/tools/endpointaudit/coverage_test.go similarity index 100% rename from terraform/provider/tools/endpointaudit/coverage_test.go rename to litellm/deploy/terraform/provider/tools/endpointaudit/coverage_test.go diff --git a/terraform/provider/tools/endpointaudit/main.go b/litellm/deploy/terraform/provider/tools/endpointaudit/main.go similarity index 100% rename from terraform/provider/tools/endpointaudit/main.go rename to litellm/deploy/terraform/provider/tools/endpointaudit/main.go diff --git a/terraform/provider/tools/endpointaudit/main_test.go b/litellm/deploy/terraform/provider/tools/endpointaudit/main_test.go similarity index 100% rename from terraform/provider/tools/endpointaudit/main_test.go rename to litellm/deploy/terraform/provider/tools/endpointaudit/main_test.go diff --git a/litellm/proxy/db/db_url_settings.py b/litellm/proxy/db/db_url_settings.py index 7f8db72a1a6..9db060d5c9d 100644 --- a/litellm/proxy/db/db_url_settings.py +++ b/litellm/proxy/db/db_url_settings.py @@ -7,8 +7,8 @@ the app directly, so they call ``DatabaseURLSettings.from_env().apply_to_env()`` to do the same thing before importing ``proxy_server``. The env var names this module reads are exactly the ones emitted by the -``helm/litellm`` chart's ``litellm.serverEnv`` block -(``helm/litellm/templates/_helpers.tpl``). Both auth styles and both +``litellm/deploy/helm/litellm`` chart's ``litellm.serverEnv`` block +(``litellm/deploy/helm/litellm/templates/_helpers.tpl``). Both auth styles and both endpoints are covered: * Token auth (``IAM_TOKEN_DB_AUTH`` truthy for AWS RDS IAM, or diff --git a/packaging/litellm-core/pyproject.toml b/packaging/litellm-core/pyproject.toml index 906ff3e45d0..86f0cd244fd 100644 --- a/packaging/litellm-core/pyproject.toml +++ b/packaging/litellm-core/pyproject.toml @@ -66,6 +66,8 @@ include = [ "litellm/proxy/common_utils/codex_bedrock_runtime_models_0.166.0.json", ] exclude = [ + "litellm/deploy", + "litellm/deploy/**", "litellm/proxy/_experimental/out", "litellm/proxy/_experimental/out/**", "litellm/proxy/enterprise", diff --git a/pyproject.toml b/pyproject.toml index e3471cd45b3..9618cbcebb9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -354,6 +354,8 @@ include = [ { path = "model_prices_and_context_window.json", format = "sdist" }, ] exclude = [ + "litellm/deploy", + "litellm/deploy/**", "litellm/proxy/discovery_endpoints/skill_scanner_adapter", "litellm/proxy/discovery_endpoints/skill_scanner_adapter/**", "litellm/proxy/enterprise", @@ -520,7 +522,7 @@ lint.external = [ ] line-length = 120 -extend-exclude = ["litellm/proxy/discovery_endpoints/skill_scanner_adapter"] +extend-exclude = ["litellm/deploy", "litellm/proxy/discovery_endpoints/skill_scanner_adapter"] format.exclude = ["**/enterprise/**"] @@ -552,7 +554,7 @@ banned-module-level-imports = ["prisma"] [tool.pyright] include = ["litellm", "litellm_cli"] ignore = [] -exclude = ["**/node_modules", "**/__pycache__", "tests/e2e/claude_code", "tests/e2e_harness/claude_code", "tests/e2e/ui", "litellm/types/utils.py", "litellm/proxy/_types.py", "litellm/proxy/discovery_endpoints/skill_scanner_adapter"] +exclude = ["**/node_modules", "**/__pycache__", "tests/e2e/claude_code", "tests/e2e_harness/claude_code", "tests/e2e/ui", "litellm/types/utils.py", "litellm/proxy/_types.py", "litellm/deploy", "litellm/proxy/discovery_endpoints/skill_scanner_adapter"] pythonVersion = "3.12" typeCheckingMode = "strict" enableTypeIgnoreComments = false diff --git a/scripts/quickstart.ps1 b/scripts/quickstart.ps1 index 2bc89f3513b..9d1d65f959e 100644 --- a/scripts/quickstart.ps1 +++ b/scripts/quickstart.ps1 @@ -41,7 +41,7 @@ function Invoke-LiteLLMQuickstart { $ProgressPreference = 'SilentlyContinue' Set-StrictMode -Version 2 - $composeUrl = 'https://raw.githubusercontent.com/BerriAI/litellm/main/docker/docker-compose.quickstart.yml' + $composeUrl = 'https://raw.githubusercontent.com/BerriAI/litellm/main/litellm/deploy/docker/docker-compose.quickstart.yml' if ($env:LITELLM_COMPOSE_URL) { $composeUrl = $env:LITELLM_COMPOSE_URL } $scriptUrl = 'https://raw.githubusercontent.com/BerriAI/litellm/main/scripts/quickstart.ps1' if ($env:LITELLM_SCRIPT_URL) { $scriptUrl = $env:LITELLM_SCRIPT_URL } diff --git a/scripts/quickstart.sh b/scripts/quickstart.sh index 0182b216788..53a6f39c74a 100755 --- a/scripts/quickstart.sh +++ b/scripts/quickstart.sh @@ -34,7 +34,7 @@ # Everything runs inside main(), so a partial download runs nothing. set -eu -COMPOSE_URL="${LITELLM_COMPOSE_URL:-https://raw.githubusercontent.com/BerriAI/litellm/main/docker/docker-compose.quickstart.yml}" +COMPOSE_URL="${LITELLM_COMPOSE_URL:-https://raw.githubusercontent.com/BerriAI/litellm/main/litellm/deploy/docker/docker-compose.quickstart.yml}" SCRIPT_URL="${LITELLM_SCRIPT_URL:-https://raw.githubusercontent.com/BerriAI/litellm/main/scripts/quickstart.sh}" # A port set by the caller is never moved; later steps export LITELLM_PORT too. PORT_PINNED="${LITELLM_PORT:+1}" diff --git a/tests/e2e/CONTRIBUTING.md b/tests/e2e/CONTRIBUTING.md index 94fb0b3372f..e09d7c251e8 100644 --- a/tests/e2e/CONTRIBUTING.md +++ b/tests/e2e/CONTRIBUTING.md @@ -25,7 +25,7 @@ The suites run against a live proxy, so bring one up first by running the litell GEMINI_API_KEY="..." ``` -2. Bring up a Postgres and a Redis for the proxy to use. The repo-root `docker-compose.yml` already defines a Postgres on `5432`; a `docker run -p 6379:6379 redis:7` covers Redis. Point `DATABASE_URL` / `REDIS_HOST` / `REDIS_PORT` at whatever you run. Tests that read Redis directly default to the deployed shape (TLS + cluster mode) whenever `REDIS_HOST` is set, so for a local standalone Redis also set `REDIS_CLUSTER=false` and `REDIS_SSL=false` (plus `REDIS_PASSWORD` when your Redis requires auth) +2. Bring up a Postgres and a Redis for the proxy to use. The `litellm/deploy/compose/docker-compose.yml` already defines a Postgres on `5432`; a `docker run -p 6379:6379 redis:7` covers Redis. Point `DATABASE_URL` / `REDIS_HOST` / `REDIS_PORT` at whatever you run. Tests that read Redis directly default to the deployed shape (TLS + cluster mode) whenever `REDIS_HOST` is set, so for a local standalone Redis also set `REDIS_CLUSTER=false` and `REDIS_SSL=false` (plus `REDIS_PASSWORD` when your Redis requires auth) 3. Start the identity provider the JWT API tests authenticate against, then the litellm proxy against your config, and confirm both are live. It is a real Keycloak, running the realm in `tests/e2e/idp_realm.json`, and the proxy trusts it because `JWT_PUBLIC_KEY_URL` points at that realm's JWKS. The proxy caches the JWKS for `public_key_ttl` (600s) and does not refetch on an unknown `kid`, so keep its data volume across restarts; restart the proxy if you deliberately replace that volume: diff --git a/tests/e2e/claude_code/cron_vm/README.md b/tests/e2e/claude_code/cron_vm/README.md index 4e47426e860..f1dcca8a88c 100644 --- a/tests/e2e/claude_code/cron_vm/README.md +++ b/tests/e2e/claude_code/cron_vm/README.md @@ -105,7 +105,7 @@ the same values if it ever has to be rebuilt. | Workspace | Litellm (the one that already builds the other litellm services) | | Type | Cron job, Docker runtime | | Repo / branch | `BerriAI/litellm` @ `main` | -| Image | Built from the recipe under [Image](#image). Render only builds a Dockerfile that lives in the connected repo, and this repo ships exactly one Dockerfile (the LiteLLM image in its root), so the service has to point at a copy of the recipe kept with the service or at a prebuilt image | +| Image | Built from the recipe under [Image](#image). Render only builds a Dockerfile that lives in the connected repo, and this repo ships exactly one Dockerfile (the LiteLLM image at `litellm/deploy/docker/Dockerfile`), so the service has to point at a copy of the recipe kept with the service or at a prebuilt image | | Docker build context | `tests/e2e` (the repo root `.dockerignore` excludes `tests`, so the context has to start below it) | | Build filter | included paths `tests/e2e/**` | | Schedule | `0 6 * * *` (06:00 UTC daily) | @@ -158,7 +158,7 @@ this `tests/e2e/` tree copied to `/opt/litellm/tests/e2e/`. Runs as the non-root user `populator` (uid/gid 1000, which is what Render's secret files are readable by). This is the recipe the Render service builds; it lives with the service because the repo ships exactly one Dockerfile, -the LiteLLM image in its root +the LiteLLM image at `litellm/deploy/docker/Dockerfile` ```dockerfile FROM debian:bookworm-slim@sha256:3783cc01769c7b2b1b83a5c5ad96c815348e28ed7da68e2e3687004faa906251 diff --git a/tests/integration/_support/process.py b/tests/integration/_support/process.py index 7a1bd7208d5..6a81d5745b7 100644 --- a/tests/integration/_support/process.py +++ b/tests/integration/_support/process.py @@ -958,7 +958,7 @@ def owned_gateway_image( output: Final = Path(os.environ.get("INTEGRATION_RESULTS_DIR", str(directory))) output.mkdir(parents=True, exist_ok=True) command: Final = ( - str(root / "docker-entrypoint.sh"), + str(root / "litellm/deploy/docker/docker-entrypoint.sh"), sys.executable, "-m", "gateway.launch", diff --git a/tests/unit/proxy/db/test_db_url_settings.py b/tests/unit/proxy/db/test_db_url_settings.py index 99957447248..1f86f6ab5d1 100644 --- a/tests/unit/proxy/db/test_db_url_settings.py +++ b/tests/unit/proxy/db/test_db_url_settings.py @@ -2,7 +2,7 @@ The model assembles ``DATABASE_URL`` (and optionally ``DATABASE_URL_READ_REPLICA``) from the discrete ``DATABASE_*`` env vars -emitted by the ``helm/litellm`` chart, before Prisma initializes. It covers +emitted by the ``litellm/deploy/helm/litellm`` chart, before Prisma initializes. It covers both token auth (mint a short-lived AWS RDS IAM or Microsoft Entra ID token) and password auth, for both the writer and the read replica. diff --git a/tests/unit/rust_bridge/test_verify_linux_native_wheel.py b/tests/unit/rust_bridge/test_verify_linux_native_wheel.py index 0eae041f535..1199d4c58ab 100644 --- a/tests/unit/rust_bridge/test_verify_linux_native_wheel.py +++ b/tests/unit/rust_bridge/test_verify_linux_native_wheel.py @@ -131,6 +131,18 @@ def test_accepts_expected_release_wheel_tags(tmp_path: Path) -> None: assert _run_verifier(wheel) == 0 +@pytest.mark.parametrize("member", ("litellm/deploy/docker/Dockerfile",)) +def test_rejects_deployment_sources_in_the_wheel( + tmp_path: Path, member: str, capsys: pytest.CaptureFixture[str] +) -> None: + wheel: Final = _write_wheel(tmp_path, filename_tag=_EXPECTED_TAG) + with zipfile.ZipFile(wheel, "a") as archive: + archive.writestr(member, "deployment source") + + assert _run_verifier(wheel) == 1 + assert member in capsys.readouterr().err + + def test_rejects_cp312_version_specific_wheel(tmp_path: Path) -> None: tag: Final = "cp312-cp312-linux_x86_64" wheel: Final = _write_wheel(tmp_path, filename_tag=tag, metadata_tags=(tag,)) diff --git a/tests/unit/test_docker_entrypoint.py b/tests/unit/test_docker_entrypoint.py index 4364fcc6203..85b74f6f4ba 100644 --- a/tests/unit/test_docker_entrypoint.py +++ b/tests/unit/test_docker_entrypoint.py @@ -14,11 +14,11 @@ import pytest from litellm.constants import PROMETHEUS_ADMITTED_SERIES_FILE_PREFIX REPO_ROOT: Final = Path(__file__).resolve().parents[2] -DOCKER_ENTRYPOINT: Final = REPO_ROOT / "docker-entrypoint.sh" -DOCKERFILE: Final = REPO_ROOT / "Dockerfile" +DOCKER_ENTRYPOINT: Final = REPO_ROOT / "litellm/deploy/docker/docker-entrypoint.sh" +DOCKERFILE: Final = REPO_ROOT / "litellm/deploy/docker/Dockerfile" TERRAFORM_MODULES: Final = { - "aws": REPO_ROOT / "terraform" / "litellm" / "aws", - "gcp": REPO_ROOT / "terraform" / "litellm" / "gcp", + "aws": REPO_ROOT / "litellm" / "deploy" / "terraform" / "litellm" / "aws", + "gcp": REPO_ROOT / "litellm" / "deploy" / "terraform" / "litellm" / "gcp", } IMAGE_ENTRYPOINT_PATH: Final = "/app/docker-entrypoint.sh" diff --git a/tests/unit/test_docker_no_network_on_deploy.py b/tests/unit/test_docker_no_network_on_deploy.py index 0bccdca7baa..c9167dab77f 100644 --- a/tests/unit/test_docker_no_network_on_deploy.py +++ b/tests/unit/test_docker_no_network_on_deploy.py @@ -5,7 +5,7 @@ _NETWORK_FETCH_TOKENS: Final = ("curl", "wget", "fetch", "http://", "https://") def test_container_build_no_network_fetch() -> None: - dockerfile: Final = (Path(__file__).resolve().parents[2] / "Dockerfile").read_text() + dockerfile: Final = (Path(__file__).resolve().parents[2] / "litellm/deploy/docker/Dockerfile").read_text() startup_lines: Final = tuple( line.strip() for line in dockerfile.splitlines() if line.strip().upper().startswith(("CMD", "ENTRYPOINT")) ) diff --git a/tests/unit/test_dockerfile_apk_repository.py b/tests/unit/test_dockerfile_apk_repository.py index cbd772defbf..baf411d848d 100644 --- a/tests/unit/test_dockerfile_apk_repository.py +++ b/tests/unit/test_dockerfile_apk_repository.py @@ -18,7 +18,7 @@ DOCKERFILE_PATH = os.path.join( os.path.dirname(__file__), "..", "..", - "Dockerfile", + "litellm/deploy/docker/Dockerfile", ) diff --git a/tests/unit/test_dockerfile_bedrock_realtime_extra.py b/tests/unit/test_dockerfile_bedrock_realtime_extra.py index f4863b5ff77..e5973543e1a 100644 --- a/tests/unit/test_dockerfile_bedrock_realtime_extra.py +++ b/tests/unit/test_dockerfile_bedrock_realtime_extra.py @@ -23,7 +23,7 @@ else: REPO_ROOT: Final = os.path.join(os.path.dirname(__file__), "..", "..") -PROXY_DOCKERFILES: Final = ("Dockerfile",) +PROXY_DOCKERFILES: Final = ("litellm/deploy/docker/Dockerfile",) CONTINUED_LINE_RE: Final = re.compile(r"(?:\\\n|[^\n])+") UV_SYNC_BOUNDARY_RE: Final = re.compile(r"(?=uv sync)") diff --git a/tests/unit/test_dockerfile_non_root.py b/tests/unit/test_dockerfile_non_root.py index d37d06c337d..1f3869a82e3 100644 --- a/tests/unit/test_dockerfile_non_root.py +++ b/tests/unit/test_dockerfile_non_root.py @@ -11,7 +11,7 @@ kubelet cannot resolve /etc/passwd inside the image at admission time. import os import re -DOCKERFILE_PATH = os.path.join(os.path.dirname(__file__), "..", "..", "Dockerfile") +DOCKERFILE_PATH = os.path.join(os.path.dirname(__file__), "..", "..", "litellm", "deploy", "docker", "Dockerfile") def _final_user_directive(dockerfile_text: str) -> str: