Minimal infrastructure orchestration tool for Terraform/OpenTofu with JavaScript configuration.
- 🚀 JavaScript Configuration - Use a real programming language instead of HCL
- 🔄 Automatic Backend Generation - No more manual backend.tf files
- 🔗 Cross-Stack References - Simple
state()function for referencing outputs - 🔐 Built-in Secrets - Native SOPS integration
- 📦 Multi-Environment - DRY configurations across dev/staging/prod
- ⚡ Minimal & Unopinionated - Thin wrapper, you build your own patterns
It's Just JavaScript! Create helper functions, abstractions, and patterns for your team's needs.
curl -fsSL https://moonwalker.github.io/comet/install.sh | shPrerequisites:OpenTofu or Terraform
See installation guide for details.
1. Create a stack file:
// stacks/dev.stack.jsstack('dev',{project: 'myapp',region: 'us-central1'})backend('gcs',{bucket: 'my-terraform-state',prefix: '{{ .stack }}/{{ .component }}'})component('vpc','modules/vpc',{cidr: '10.0.0.0/16'})2. Run commands:
comet plan dev # Show changes
comet apply dev # Create infrastructure
comet output dev # Show outputs
comet destroy dev # Tear down- Installation Guide
- Best Practices
- DSL Quick Reference
- Cross-Stack References
- It's Just JavaScript!
- Examples
Stacks - Environments (dev, staging, prod)
stack('production',{ settings })Components - Terraform modules
constvpc=component('vpc','modules/vpc',{cidr: '10.0.0.0/16'})Cross-Stack References - Reference other stacks
cluster_id: '{{ (state "infrastructure" "gke").cluster_id }}'Secrets - SOPS integration
password: secret('database/password')Your Own Helpers - It's JavaScript!
functionk8sApp(name,config){returncomponent(name,'modules/k8s-app',{replicas: 2,
...config})}See full documentation for details.
This project is licensed under the terms specified in the project's license file.