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
Architect: Open Designer from the Command Palette (Ctrl+Shift+P / Cmd+Shift+P)The Canvas
The canvas is your design workspace where you place and connect resources.
Navigation Controls
| 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 |
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
Adding Resources
Method 1: Resource Palette
- Open the resource palette (left sidebar)
- Browse resources by cloud provider (AWS, Azure, Hetzner, etc.)
- Click a resource to add it to the canvas center, or
- Drag a resource to position it exactly where you want
Method 2: Right-Click Menu
- Right-click anywhere on the canvas
- Select Add Resource
- Choose the resource type from the submenu
Resource Categories
Cloud Providers
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
DeleteorBackspace - Right-click → Delete
Ctrl/Cmd + Z.
Connecting Resources
Connections represent relationships between resources (e.g., a web server connecting to a database).
Creating Connections
- Hover over a resource to reveal its connection ports (small circles on the edges)
- Click and drag from an output port (right side) to an input port (left side) of another resource
- Release to create the connection
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
Deleteor 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
Saving and Loading Designs
Automatic Saving
Designs are automatically saved to .aivory/designs/ in your project folder.
Manual Save
- Press
Ctrl/Cmd + S - Click File → Save Design
Opening Existing Designs
- Click File → Open Design
- Browse to a
.jsonfile 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 + Cto copy,Ctrl/Cmd + Vto 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”)
Working with Existing Terraform
AIVory Architect can visualize existing Terraform configurations:
- Open a project containing
.tffiles - The designer automatically parses and visualizes the infrastructure
- Resources appear on the canvas with their connections
- View properties and dependencies visually
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)