Architect

Visual Designer

The Visual Designer is the heart of AIVory Architect. It provides a canvas where you can design your infrastructure by placing and connecting cloud resources.

  • Drag-and-drop resources from 7+ cloud providers onto the canvas
  • Visual connections automatically become Terraform dependencies
  • Real-time validation and pricing estimates as you design
  • Auto-save protects your work every 30 seconds
  • Import existing Terraform to visualize current infrastructure

Opening the Designer

VS Code / Cursor / Antigravity
Click the AIVory Architect icon in the Activity Bar, or run Architect: Open Designer from the Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
JetBrains IDEs
Click ViewTool WindowsAIVory Architect, or click the Architect icon in the right tool window bar

The Canvas

The canvas is your design workspace where you place and connect resources.

Action Method
Pan Hold Space and drag, or middle mouse button
Zoom In Scroll up, or Ctrl/Cmd + +
Zoom Out Scroll down, or Ctrl/Cmd + -
Fit to Screen Ctrl/Cmd + 0
Reset View Double-click empty space
Note Zoom controls are also available in the bottom-right corner of the canvas for quick access.

Grid Settings

Resources automatically snap to a grid for clean alignment:

  • Default grid size: 20px
  • Configure: Settings → architect.gridSize
  • Show/hide grid: Toggle in View menu

Auto-Save

Designs are automatically saved as you work:

  • Files stored in .aivory/designs/ in your project
  • Auto-save interval: 30 seconds
  • Manual save: Ctrl/Cmd + S
Note Design files are stored as JSON, making them easy to version control with Git.

Adding Resources

Method 1: Resource Palette

  1. Open the resource palette (left sidebar)
  2. Browse resources by cloud provider (AWS, Azure, Hetzner, etc.)
  3. Click a resource to add it to the canvas center, or
  4. Drag a resource to position it exactly where you want

Method 2: Right-Click Menu

  1. Right-click anywhere on the canvas
  2. Select Add Resource
  3. Choose the resource type from the submenu

Resource Categories

Compute
Virtual Machines, Container Instances, Kubernetes Clusters, Serverless Functions
Database
PostgreSQL, MySQL, Redis, MongoDB, Managed Database Services
Storage
Object Storage (S3/Blob), Block Storage, File Storage
Networking
Load Balancers, VPCs/VNets, Subnets, Firewalls, CDN
Containers
Docker Containers, Docker Compose Services, Kubernetes Pods
AI/ML
GPU Instances, Model Endpoints, Inference APIs

Cloud Providers

Hetzner Cloud
Server, Volume, Network, Load Balancer, Firewall
AWS
EC2, RDS, ELB, VPC, EBS, S3
Azure
VM, SQL Database, Load Balancer, VNet, Managed Disk
GCP
Compute Engine, Cloud SQL, Load Balancing, VPC
RunPod GPU
GPU Instance, Serverless Endpoint
DeepInfra AI
Model Endpoint, Inference API
Cloudflare
DNS Zone, Worker, R2 Bucket

Selecting and Moving Resources

Selection

Action Method
Select Click on a resource
Multi-select Hold Ctrl/Cmd and click multiple resources
Box select Drag a selection box around resources
Select all Ctrl/Cmd + A
Deselect Click empty canvas space

Moving

  • Single resource: Drag to reposition
  • Multiple resources: Select all, then drag any one to move them together
  • Precise positioning: Use arrow keys to nudge by grid size

Deleting

  • Select resources and press Delete or Backspace
  • Right-click → Delete
Warning Deleting a resource also removes all its connections. This action can be undone with Ctrl/Cmd + Z.

Connecting Resources

Connections represent relationships between resources (e.g., a web server connecting to a database).

Creating Connections

  1. Hover over a resource to reveal its connection ports (small circles on the edges)
  2. Click and drag from an output port (right side) to an input port (left side) of another resource
  3. Release to create the connection
Note Connection types are automatically determined based on resource types - no manual configuration needed.

Connection Auto-Detection

From To Connection Type
Compute Database Database connection
Load Balancer Compute HTTP/HTTPS traffic
Compute Storage Storage access
Firewall Compute Security rules
Network Compute Network placement

Removing Connections

  • Click on a connection line to select it
  • Press Delete or right-click → Remove Connection

Dependency Resolution

When you generate Terraform, connections become depends_on relationships and resource references:

resource "hcloud_server" "web" {
  # ...
  network {
    network_id = hcloud_network.main.id  # Connection to network
  }
}

Editing Resources

Double-click a resource to open its configuration panel.

Common Properties

All resources have these properties:

Property Description
Name Resource identifier (used in Terraform)
Provider Cloud provider for this resource
Region Deployment region/location
Tags Key-value labels for organization

Provider-Specific Properties

Each resource type has additional properties:

Hetzner Server Properties
  • Server Type - cx11, cx21, cpx11, etc.
  • Image - Ubuntu, Debian, Fedora, etc.
  • SSH Keys - Keys for server access
  • User Data - Cloud-init script
  • Backups - Enabled/disabled
AWS EC2 Properties
  • Instance Type - t3.micro, m5.large, etc.
  • AMI ID - Amazon Machine Image
  • Key Pair - SSH key pair name
  • Security Groups - Network security
  • IAM Instance Profile - Role for AWS API access

Validation

Property panels validate your input in real-time:

  • Required fields are marked with *
  • Invalid values show error messages
  • Some fields have dropdowns with valid options
  • Pricing estimates update as you change options
Note Pricing estimates are approximate and based on published cloud provider rates.

Saving and Loading Designs

Automatic Saving

Designs are automatically saved to .aivory/designs/ in your project folder.

Manual Save

  • Press Ctrl/Cmd + S
  • Click FileSave Design

Opening Existing Designs

  • Click FileOpen Design
  • Browse to a .json file in .aivory/designs/
  • Or double-click a design file in the file explorer

Design File Format

Designs are stored as JSON files containing:

  • Resource definitions and positions
  • Connection mappings
  • Canvas settings (zoom, pan position)

Multi-Select Operations

Selecting Multiple Resources

  • Click + Drag: Draw a selection box around resources
  • Shift + Click: Add/remove resources from selection
  • Ctrl/Cmd + A: Select all resources

Bulk Operations

With multiple resources selected:

  • Delete: Remove all selected resources
  • Move: Drag to reposition together
  • Copy: Ctrl/Cmd + C to copy, Ctrl/Cmd + V to paste
  • Duplicate: Ctrl/Cmd + D

Layers

Organize complex designs with layers:

  • Show/Hide: Toggle layer visibility
  • Lock: Prevent accidental edits
  • Naming: Give layers descriptive names (e.g., “Production”, “Staging”)
Note Use layers to separate environments (dev/staging/prod) within the same design file.

Working with Existing Terraform

AIVory Architect can visualize existing Terraform configurations:

  1. Open a project containing .tf files
  2. The designer automatically parses and visualizes the infrastructure
  3. Resources appear on the canvas with their connections
  4. View properties and dependencies visually
Note This feature works in both free and premium tiers, making it useful for understanding existing infrastructure.

Keyboard Shortcuts

Action Windows/Linux macOS
Save Ctrl+S Cmd+S
Undo Ctrl+Z Cmd+Z
Redo Ctrl+Shift+Z Cmd+Shift+Z
Delete selected Delete Delete
Select all Ctrl+A Cmd+A
Copy Ctrl+C Cmd+C
Paste Ctrl+V Cmd+V
Duplicate Ctrl+D Cmd+D
Zoom in Ctrl++ Cmd++
Zoom out Ctrl+- Cmd+-
Fit to screen Ctrl+0 Cmd+0
Pan Space + Drag Space + Drag

Tips

Organizing Large Designs
  • Group related resources close together
  • Use consistent naming conventions
  • Add labels to explain architecture decisions
  • Use layers to separate environments (dev/staging/prod)
Performance Tips
  • Designs with 50+ resources may need more zoom-out
  • Auto-save happens every 30 seconds
  • Large designs generate larger Terraform files
Design Best Practices
  • Start with networking (VPC/Network) as the foundation
  • Add compute resources connected to networks
  • Connect databases to compute that needs them
  • Add load balancers in front of multiple compute instances
  • Use consistent naming: {env}-{purpose}-{type} (e.g., prod-web-server)

Next Steps