Project Editor
The IDE-like workspace for building infrastructure with AI assistance. Three resizable panels: Chat, Code Editor, and File Explorer.
Editor Panels
Chat
Describe infrastructure in plain English. AI writes code with reasoning.
Code Editor
Monaco editor with HCL syntax highlighting, auto-complete, and code folding.
File Explorer
File tree with color-coded icons. Right-click for actions.
Toolbar Actions
| Button | Description |
|---|---|
| Validate | Check Terraform syntax |
| GitHub | Push, sync, or create PR |
| Deploy | Run plan and apply |
| Outputs | View output values |
| Cost | Monthly cost estimate |
| Settings | AWS integration & backend |
AI Chat
Create Terraform code by describing what you need in plain English.
Example Prompts
Create Resources
"Create an RDS PostgreSQL instance with db.t3.medium, Multi-AZ, and automated backups"
Modify Existing
"Add a lifecycle policy to delete S3 objects after 90 days"
Explain Code
"What does the security group in main.tf do?"
Fix Errors
"I am getting InvalidParameterValue on the EC2 instance"
Example Conversation
You: Create an EKS cluster with 3 t3.medium nodes in us-east-1
AI: I'll create an EKS cluster with a managed node group. Here's what I'm setting up:
- VPC with public/private subnets (EKS requires specific networking)
- EKS cluster with Kubernetes 1.28
- Managed node group with 3 t3.medium instances
- IAM roles for cluster and nodes
- Security groups for cluster communication
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "~> 19.0"
cluster_name = "production-eks"
cluster_version = "1.28"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
eks_managed_node_groups = {
default = {
min_size = 3
max_size = 5
desired_size = 3
instance_types = ["t3.medium"]
}
}
}
You: Add cluster autoscaler
AI: I'll add the Cluster Autoscaler to automatically adjust node count based on demand...
Tips for Better Results
- Be specific - Include instance sizes, regions, naming conventions
- Reference existing code - "Add a security group to the EC2 in main.tf"
- Ask follow-ups - "Now add CloudWatch alarms for that RDS"
- Include constraints - Compliance requirements, budget limits
Code Editor
Monaco-based editor (same as VS Code) with full Terraform support.
Features
Syntax Highlighting
HCL, JSON, YAML, Markdown support.
Auto-Complete
Intelligent completion for resource types, attributes, and functions.
Code Folding
Collapse resource blocks to focus on what matters.
Auto-Save
Automatically saves your work after 2s of inactivity.
Keyboard Shortcuts
| Action | Windows/Linux | Mac |
|---|---|---|
| Save | Ctrl + S | Cmd + S |
| Find | Ctrl + F | Cmd + F |
| Replace | Ctrl + H | Cmd + H |
| Comment | Ctrl + / | Cmd + / |
| Go to line | Ctrl + G | Cmd + G |
| Delete line | Ctrl + Shift + K | Cmd + Shift + K |
| Duplicate line | Ctrl + Shift + D | Cmd + Shift + D |
Error Indicators
| Indicator | Meaning |
|---|---|
| Red underline | Syntax error |
| Yellow underline | Warning |
| Red dot in margin | Error on this line |
File Explorer
Manage your Terraform files with a tree view.
File Tree Example
EXPLORER
├── main.tf
├── variables.tf
├── outputs.tf
├── terraform.tfvars
└── modules/
└── vpc.tf
File Actions
| Action | How |
|---|---|
| Create file | Click + in header |
| Create folder | Click folder icon in header |
| Rename | Right-click → Rename |
| Delete | Right-click → Delete |
| Copy path | Right-click → Copy Path |
File Indicators
| Indicator | Meaning |
|---|---|
| Bold text | Currently open file |
| Purple dot | Unsaved changes |
Example: Building an S3 Static Website
Create Files
In the file explorer, create:
main.tfvariables.tfoutputs.tf
Ask AI
Create an S3 bucket configured for static website hosting with:
- Bucket name from variable
- index.html as default document
- error.html for 404s
- Public read access via bucket policy
- CloudFront distribution for HTTPS
Produced Code
main.tf
resource "aws_s3_bucket" "website" {
bucket = var.bucket_name
}
resource "aws_s3_bucket_website_configuration" "website" {
bucket = aws_s3_bucket.website.id
index_document {
suffix = "index.html"
}
error_document {
key = "error.html"
}
}
resource "aws_s3_bucket_public_access_block" "website" {
bucket = aws_s3_bucket.website.id
block_public_acls = false
block_public_policy = false
ignore_public_acls = false
restrict_public_buckets = false
}
resource "aws_s3_bucket_policy" "website" {
bucket = aws_s3_bucket.website.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Sid = "PublicReadGetObject"
Effect = "Allow"
Principal = "*"
Action = "s3:GetObject"
Resource = "${aws_s3_bucket.website.arn}/*"
}
]
})
}
resource "aws_cloudfront_distribution" "website" {
enabled = true
default_root_object = "index.html"
origin {
domain_name = aws_s3_bucket_website_configuration.website.website_endpoint
origin_id = "S3-Website"
custom_origin_config {
http_port = 80
https_port = 443
origin_protocol_policy = "http-only"
origin_ssl_protocols = ["TLSv1.2"]
}
}
default_cache_behavior {
allowed_methods = ["GET", "HEAD"]
cached_methods = ["GET", "HEAD"]
target_origin_id = "S3-Website"
viewer_protocol_policy = "redirect-to-https"
forwarded_values {
query_string = false
cookies {
forward = "none"
}
}
}
restrictions {
geo_restriction {
restriction_type = "none"
}
}
viewer_certificate {
cloudfront_default_certificate = true
}
}
variables.tf
variable "bucket_name" {
description = "Name of the S3 bucket for website hosting"
type = string
}
outputs.tf
output "website_url" {
description = "S3 website URL"
value = aws_s3_bucket_website_configuration.website.website_endpoint
}
output "cloudfront_url" {
description = "CloudFront distribution URL (HTTPS)"
value = "https://${aws_cloudfront_distribution.website.domain_name}"
}
Validate and Deploy
- Click Validate to check syntax
- Click GitHub to push code
- Click Deploy → Enter
bucket_namevalue → Apply
Status Indicators
| Indicator | Meaning |
|---|---|
| Purple dot on file | Unsaved changes |
| Orange dot on GitHub | Unpushed changes |
| Green checkmark | Validation passed |
| Cost badge | Monthly estimate |