Introducing Atmos LSP: IDE-Native Infrastructure Configuration
We're excited to introduce Atmos LSP, bringing IDE-quality features directly to your infrastructure configuration workflow—no context switching, no manual validation, no documentation hunting.
Atmos LSP provides comprehensive Language Server Protocol integration that transforms how you write and validate Atmos configurations. Get instant feedback on errors, autocomplete for Atmos keywords, hover documentation without leaving your editor, and seamless integration with external language servers for YAML and Terraform validation.
With support for 13+ editors (VS Code, Neovim, Zed, Cursor, Emacs, and more), multiple transport protocols, and deep AI integration—writing infrastructure configuration now feels like writing code in a modern IDE.
The Problem
Infrastructure configuration is error-prone and time-consuming. Engineers constantly:
- Context switch between editor and terminal to validate configurations
- Run commands manually to check syntax errors (
atmos validate stacks) - Search documentation for correct YAML structure and Atmos keywords
- Discover errors late during terraform plan or apply
- Fix typos manually without autocomplete assistance
- Navigate large configs without structural overview
Even simple typos in YAML can cause deployment failures that take hours to debug. The feedback loop is too long, and the cost of mistakes is too high.
The Solution: Atmos LSP
Atmos LSP brings IDE-native infrastructure configuration through the Language Server Protocol (LSP)—the same standard that powers modern code editors.
What You Get:
- Real-time validation as you type—catch errors before committing
- Autocomplete for Atmos keywords, components, and variables
- Hover documentation explains Atmos concepts without leaving your editor
- Multi-editor support—works in VS Code, Neovim, Zed, Cursor, Emacs, and 8+ others
- External LSP integration—unified YAML and Terraform validation
- AI integration—enables AI assistants to validate configurations accurately
Dual-Component Design
Atmos LSP consists of two complementary components:
1. Atmos LSP Server - Native Atmos-specific features
- Autocomplete for Atmos keywords (
import,components,vars, etc.) - Hover documentation for all Atmos concepts
- Real-time Atmos-specific validation
- Multi-transport support (stdio, TCP, WebSocket)
2. Atmos LSP Client - External language server integration
- Manages multiple LSP servers (yaml-language-server, terraform-ls)
- Routes files to appropriate server by type
- Aggregates diagnostics from all servers
- Provides unified interface for AI tools
Key Features
1. Real-Time Validation
Get instant feedback as you type—no more waiting for atmos validate stacks:
# stacks/prod/vpc.yaml
import:
- stacks/base # ❌ Error: imports must be arrays
components:
terraform:
vpc:
vars:
cidr_block: 10.0.0.0/16 # ✅ Valid
vpc_ciddr: 10.1.0.0/16 # ⚠️ Warning: Unknown property
# (did you mean 'cidr_block'?)
availability_zones: # ⚠️ Warning: Property deprecated
- us-east-1a # Use 'azs' instead
Validation Triggers:
- Real-time as you type
- On document save
- On document open
- Manual validation request
Validation Types:
- YAML Syntax - Malformed YAML detection
- Atmos Structure - Stack schema validation
- Import Arrays - Ensures imports are valid lists
- Component Sections - Validates terraform/helmfile structure
- Type Safety - Checks value types match expectations
2. Intelligent Autocomplete
Stop memorizing Atmos keywords—let autocomplete guide you:
# Type 'com' and press Ctrl+Space
com|
↓
# Autocomplete suggests:
components:
terraform:
helmfile:
Autocomplete Categories:
Top-Level Keywords:
import- Import other stack filescomponents- Define infrastructure componentsvars- Stack variablessettings- Stack settingsmetadata- Stack metadata
Component Types:
terraform- Terraform componentshelmfile- Helmfile components
Common Variables:
namespace,tenant,environment,stage,regionenabled- Enable/disable patterntags- Resource tags
Settings:
spacelift- Spacelift integrationatlantis- Atlantis integrationvalidation- Validation rules
3. Hover Documentation
Get context-aware documentation without leaving your editor:
Hover over import:
**import**
Import other Atmos stack configuration files.
Import paths are relative to the stacks directory.
**Example:**
```yaml
import:
- catalog/vpc
- mixins/kubernetes
Note: Imports are processed sequentially, and later imports can override values from earlier imports.
**Documented Keywords:**
- Stack structure: `import`, `components`, `vars`, `settings`, `metadata`
- Component types: `terraform`, `helmfile`
- Stack variables: `namespace`, `tenant`, `environment`, `stage`, `region`
- Common patterns: `enabled` flag, resource `tags`
### 4. Multi-Editor Support (13+ IDEs)
Works with your favorite editor—same experience everywhere:
| Editor | Status | Setup |
|--------|--------|-------|
| **VS Code** | Yes | LSP client extension |
| **Neovim** | Yes | nvim-lspconfig |
| **Cursor** | Yes | LSP client (VS Code fork) |
| **Zed** | Yes | Built-in LSP config |
| **Emacs** | Yes | lsp-mode |
| **Vim** | Yes | vim-lsp plugin |
| **Sublime Text** | Yes | LSP package |
| **Helix** | Yes | languages.toml |
| **IntelliJ IDEA** | Yes | LSP4IJ plugin |
| **Kate** | Yes | LSP client plugin |
| **Lapce** | Yes | Built-in LSP |
| **Atom** | Yes | atom-languageclient |
| **Eclipse** | Yes | LSP4E |
**Universal Setup Pattern:**
```json
{
"atmos-lsp": {
"command": "atmos",
"args": ["lsp", "start"],
"filetypes": ["yaml"]
}
}
5. Multi-Transport Support
Choose the right transport for your environment:
stdio (Default) - Desktop IDE integration
atmos lsp start
TCP - Remote development and testing
atmos lsp start --transport tcp --address localhost:7777
WebSocket - Web-based editors
atmos lsp start --transport websocket --address localhost:7777
6. External LSP Server Integration
Atmos LSP Client manages external language servers for unified validation:
Supported Servers:
| Server | Purpose | File Types |
|---|---|---|
| yaml-language-server | YAML validation with JSON Schema | .yaml, .yml |
| terraform-ls | Terraform HCL validation | .tf, .tfvars, .hcl |
| json-languageserver | JSON validation | .json |
| Any LSP Server | Extensible via config | Custom |
Configuration:
# atmos.yaml
lsp:
enabled: true
servers:
yaml-ls:
command: "yaml-language-server"
args: ["--stdio"]
filetypes: ["yaml", "yml"]
initialization_options:
yaml:
validation: true
hover: true
completion: true
terraform-ls:
command: "terraform-ls"
args: ["serve"]
filetypes: ["tf", "tfvars", "hcl"]
initialization_options:
experimentalFeatures:
validateOnSave: true
Benefits:
- Single unified validation experience
- Automatic file routing by extension
- Diagnostic aggregation from multiple servers
- Consistent error reporting