Skip to content

A cloud-native control plane uniting platform and dev teams to make infrastructure effortless.

License

infraweave-io/infraweave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

InfraWeave


     

 

Discord  


  What is InfraWeave?

InfraWeave is a cloud-native control plane that bridges the gap between infrastructure as code (IaC) and development teams. It simplifies how you build, manage, and deploy infrastructure templates.

Key features:

  • Multiple Deployment Methods: Deploy infrastructure via GitOps, CLI, Python SDK, or Kubernetes manifests.

  • Terraform-Powered: Built on Terraform for reliable, production-ready infrastructure provisioning.

  • Integration Ready: Works with Backstage Developer Portal and provides APIs for custom integrations.

  • Platform Team Enablement: Publish, version, and upgrade Terraform modules with minimal friction.

  • Developer-Focused: Deploy infrastructure using prebuilt modules without deep Terraform expertise.

  • Documentation as Code: Module documentation lives alongside your Terraform code, staying in sync automatically.

  • Stack Composition: Build and share infrastructure stacks across teams with safe upgrade paths.

  • Low Maintenance: Runs on a minimal set of managed services to reduce operational overhead.

  • Scales With You: Handles everything from small projects to enterprise infrastructure.

  • Cost-Effective: Typically runs for a few dollars per month.

View the features and documentation.

Contents

Documentation

For detailed documentation, visit preview.infraweave.io.

Current Status

InfraWeave is currently in preview.

Getting Started

Setting up the platform

Bootstrap your cloud environment by deploying the central and workload modules for your cloud provider. Repository links.

Required components:

  • central - Storage and databases for the control plane
  • workload - Runtime environments deployed per project (e.g., AWS Account/Azure Subscription)

Publish a module

Start with a Terraform module you want to make available for deployment.

  1. Prepare your Terraform module (include the .terraform.lock.hcl file).
terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

resource "aws_s3_bucket" "example" {
  bucket = var.bucket_name
  tags   = var.tags
}

variable "bucket_name" {
  type    = string
}

variable "tags" {
  type = map(string)
  default = {
    Owner = "John Doe"
    Department = "Platform"
  }
}
  1. Define a module.yaml
apiVersion: infraweave.io/v1
kind: Module
metadata:
  name: s3bucket # The name of the module you define
spec:
  moduleName: S3Bucket # metadata.name cannot have any uppercase, which is why we need this
  version: 0.0.11-dev # The released version to use
  description: "This module deploys an S3 bucket in AWS" # Supports markdown
  reference: https://github.com/your-org/s3bucket # The URL to the module's source code
  1. Publish it! (to dev-track)
infraweave module publish dev .

Deploy an available module

Let’s look at four different ways to deploy this module:

  • GitOps
  • CLI
  • Kubernetes
  • Python

For the first three options, you will use a manifest like this:

apiVersion: infraweave.io/v1
kind: S3Bucket
metadata:
  name: my-s3-bucket
spec:
  moduleVersion: 0.0.11-dev # The released version to use, must match the version in the module.yaml
  region: us-west-2
  variables:
    bucketName: my-unique-bucket-name-32142j
    tags:
      Name234: my-s3bucket
      Environment43: dev

GitOps

With GitOps configured, push the manifest to your repository:

git add s3_manifest.yaml
git commit -m "Add S3 bucket"
git push

CLI

For quick local deployments:

infraweave apply <namespace> s3_manifest.yaml

Kubernetes

With the operator installed, deploy alongside your application:

kubectl apply -f s3_manifest.yaml

Python

Deploy infrastructure programmatically:

from infraweave import S3Bucket, Deployment

bucket_module = S3Bucket(
    version='0.0.11-dev',
    track="dev"
)

bucket1 = Deployment(
    name="bucket1",
    module=bucket_module,
    region="us-west-2"
)

with bucket1:
    bucket1.set_variables(
        bucket_name="my-bucket12347ydfs3"
    )
    bucket1.apply()
    # Run tests or perform operations

# Automatic cleanup on context exit

The Python SDK is useful for integration tests involving multiple modules or stacks.

Community

Join the InfraWeave community for help, ideas, and discussions:

  • Discord - Chat with the team and other users

Contributing

Contributions are welcome! See the contribution guide to get started.

Security

Report security vulnerabilities to opensource@infraweave.com rather than creating public issues.

License

InfraWeave is released under the Apache License 2.0.

About

A cloud-native control plane uniting platform and dev teams to make infrastructure effortless.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors 3

  •  
  •  
  •