Get your infrastructure up and running in 5 minutes!
-
Install Go (1.21 or later)
# Download from https://go.dev/dl/ # Or use a package manager: # macOS brew install go # Ubuntu/Debian sudo apt install golang-go # Windows choco install golang
-
Install Terraform (1.5 or later)
# Download from https://www.terraform.io/downloads # Or use a package manager: # macOS brew install terraform # Ubuntu/Debian sudo apt install terraform # Windows choco install terraform
-
Configure AWS Credentials
aws configure # Or set environment variables: export AWS_ACCESS_KEY_ID="your-key" export AWS_SECRET_ACCESS_KEY="your-secret" export AWS_DEFAULT_REGION="us-east-1"
# Clone the repository
git clone https://github.com/soloops/soloops-cli.git
cd soloops-cli
# Download dependencies
go mod download
# Build the CLI
make build
# Or manually:
go build -o bin/soloops ./cmd/soloops
# Add to PATH (optional)
export PATH=$PATH:$(pwd)/bingo install github.com/soloops/soloops-cli/cmd/soloops@latest# Linux
curl -L https://github.com/soloops/soloops-cli/releases/latest/download/soloops-linux-amd64 -o soloops
chmod +x soloops
sudo mv soloops /usr/local/bin/
# macOS
curl -L https://github.com/soloops/soloops-cli/releases/latest/download/soloops-darwin-amd64 -o soloops
chmod +x soloops
sudo mv soloops /usr/local/bin/
# Windows
# Download from releases page and add to PATHmkdir my-app
cd my-app
soloops initThis creates soloops.yaml with default configuration.
Edit soloops.yaml:
project: my-awesome-app
cloud: aws
environments:
- name: prod
region: us-east-1
budget_usd: 50
blueprints:
api:
runtime: node18
ingress: edge
website:
domain: myapp.com
policies:
require_https: true
deny_public_s3: truesoloops validateExpected output:
✓ Configuration is valid (soloops.yaml)
Project: my-awesome-app
Cloud: aws
Environments: 1
- prod (us-east-1): $50.00 budget, 2 blueprints
soloops generateThis creates:
infra/
├── provider.tf # Cloud provider setup
├── variables.tf # Input variables
├── main.tf # Infrastructure resources
├── budget.tf # Budget alerts
└── outputs.tf # Output values
soloops previewThis runs terraform plan to show what will be created.
soloops applyType yes to confirm deployment.
cd infra
terraform outputYou'll see:
- API Gateway URL
- CloudFront URL
- S3 bucket name
- Lambda function ARN
# 1. Initialize
soloops init
# 2. Edit soloops.yaml
cat > soloops.yaml << EOF
project: my-api
cloud: aws
environments:
- name: prod
region: us-east-1
budget_usd: 20
blueprints:
api:
runtime: node18
ingress: edge
policies:
require_https: true
EOF
# 3. Deploy
soloops validate
soloops generate
soloops apply
# 4. Deploy code
cd infra
# Copy your Lambda code
cp ../src/handler.js .
zip function.zip handler.js
aws lambda update-function-code \
--function-name $(terraform output -raw api_lambda_arn | cut -d: -f7) \
--zip-file fileb://function.zip
# 5. Test
curl $(terraform output -raw api_api_url)# 1. Initialize
soloops init
# 2. Configure for static site
cat > soloops.yaml << EOF
project: my-website
cloud: aws
environments:
- name: prod
region: us-east-1
budget_usd: 5
blueprints:
site:
domain: mysite.com
policies:
require_https: true
deny_public_s3: true
EOF
# 3. Deploy infrastructure
soloops validate
soloops generate
soloops apply
# 4. Upload website
cd infra
BUCKET=$(terraform output -raw site_bucket_name)
aws s3 sync ../website/ s3://$BUCKET/
# 5. Invalidate cache
DIST_ID=$(terraform output -raw site_cloudfront_distribution_id)
aws cloudfront create-invalidation --distribution-id $DIST_ID --paths "/*"
# 6. Visit your site
open https://$(terraform output -raw site_cloudfront_url)project: fullstack-app
cloud: aws
environments:
- name: prod
region: us-east-1
budget_usd: 100
blueprints:
frontend:
domain: app.example.com
backend:
runtime: node18
ingress: edgesoloops validate
soloops generate
soloops apply# Show version
soloops version
# Use different config file
soloops validate --file custom.yaml
# Target specific environment
soloops generate --env staging
# Auto-approve deployment
soloops apply --auto-approve
# Destroy infrastructure
soloops destroyInstall Go from https://go.dev/dl/
Install Terraform from https://www.terraform.io/downloads
Make sure soloops.yaml exists in the current directory, or use --file flag.
Run aws configure or set AWS environment variables.
Check the error message for details. Common issues:
- Missing required fields
- Invalid cloud provider
- Zero or negative budget
- Empty blueprints
cd infra
terraform init
terraform validateCheck Terraform logs for detailed error messages.
- Read README.md for complete documentation
- Browse infra-templates/ for blueprint examples
- Check CONTRIBUTING.md to contribute
- Join Discussions
- Documentation: README.md
- Examples: infra-templates/
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Happy Building! 🚀