Public releases for the tf-state-pusher CLI tool.
tf-state-pusher is a CLI tool for safely pushing Terraform/OpenTofu state changes in concurrent environments without prolonged locking.
Problem: In monolithic Terraform repositories with targeted module releases, traditional state locking forces sequential execution.
Solution: This tool minimizes lock duration from "entire terraform apply" to "state validation + merge + push" (~2-5 seconds).
Download the latest release for your platform:
# AMD64
curl -L -o tf-state-pusher https://github.com/Facets-cloud/tf-state-pusher-releases/releases/latest/download/tf-state-pusher-linux-amd64
chmod +x tf-state-pusher
sudo mv tf-state-pusher /usr/local/bin/
# ARM64
curl -L -o tf-state-pusher https://github.com/Facets-cloud/tf-state-pusher-releases/releases/latest/download/tf-state-pusher-linux-arm64
chmod +x tf-state-pusher
sudo mv tf-state-pusher /usr/local/bin/# Intel
curl -L -o tf-state-pusher https://github.com/Facets-cloud/tf-state-pusher-releases/releases/latest/download/tf-state-pusher-darwin-amd64
chmod +x tf-state-pusher
sudo mv tf-state-pusher /usr/local/bin/
# Apple Silicon
curl -L -o tf-state-pusher https://github.com/Facets-cloud/tf-state-pusher-releases/releases/latest/download/tf-state-pusher-darwin-arm64
chmod +x tf-state-pusher
sudo mv tf-state-pusher /usr/local/bin/# Basic usage - push state for specific modules
tf-state-pusher -module module.level2.module.mysql_mydb -local-state ./downloaded-terraform.tfstate
# Multiple modules
tf-state-pusher \
-module module.level2.module.mysql_mydb \
-module module.level2.module.redis_cache \
-local-state ./downloaded-terraform.tfstate
# View help
tf-state-pusher --help- Local Apply: Run Terraform with local state and no lock
- Acquire Lock: Lock only for the push operation (~2-5 seconds)
- Validate Serial: Check serial number continuity
- Merge if Needed: If remote state advanced, merge module-specific changes
- Push & Release: Push merged state and release lock immediately
- S3 backend with DynamoDB locking (standard Terraform backend)
- AWS credentials configured
- Terraform/OpenTofu initialized in the working directory