-
-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Feature Request: Remove Docker Dependency from Leverage CLI
Describe the Feature
The Leverage CLI currently relies on Docker to encapsulate tool dependencies and execute commands. We propose removing this Docker dependency in favor of a native execution model (e.g., using Python +uv or system-installed tools) and environment variable–based credential handling.
Expected Behavior
- The CLI should run directly on the user's machine without requiring Docker to be installed or running.
- Authentication credentials (e.g., AWS temporary credentials) should be passed via environment variables or local config files, eliminating the need for containerized credentials or
ENTRYPOINTlogic. - Users can execute commands like
leverage tf shellwithout installing or troubleshooting Docker.
Use Case
Current behavior causes friction when Docker isn’t installed, isn’t allowed due to company policy, or fails in macOS after Docker updates. Users experience environment mismatches, docker-in-docker complexity, cache issues, and slow startup times. A Dockerless CLI would:
- Simplify onboarding and reduce cognitive overhead.
- Cut down on maintenance effort and improve reliability.
- Allow easier local debugging and integration with native tooling.
Describe Ideal Solution
- Refactor the CLI to run all commands directly, eliminating Dockerfile, container build logic, and
entrypoint.sh. - Use uv or system dependencies for OpenTofu / Terraform, AWS CLI, kubectl, etc.
- Credentials should be passed via
AWS_PROFILE,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN, or leveraging existing AWS SDK configuration. - Remove all Docker-related features and files; repurpose CI to install required tools or reference official Dockerless workflows.
- Provide a clear migration guide for users transitioning from Docker-based CLI to native CLI.
Additional Context
This change was discussed among the core team as a means to simplify CLI maintenance and tooling. Removing Docker would:
- Reduce breakage related to Docker version mismatches or system upgrades.
- Align with best practices for CLI tooling portability.
- Enable smoother local development workflows and CI integration.
By adopting this approach, the Leverage CLI becomes leaner, easier to maintain, and more robust across a variety of developer environments.