Language Shape
ArchAI source should be readable by architects and reliable for LLM agents to emit.
The syntax is intentionally grouped: constraints live under the thing they constrain, generated outputs live under predictable groups, and every block maps to a canonical path.
Grouped Source
Section titled “Grouped Source”project housing_study:
site main: parcels: parcel pcl_001: coordinate_system project_mm
boundary: edge front: (0, 0) -> (42000, 0) tags [frontage] edge east: (42000, 0) -> (39000, 28000) edge rear: (39000, 28000) -> (4000, 31000) edge west: (4000, 31000) -> (0, 0)
constraints: zoning r3
setbacks: front: from boundary.edges.front distance 5000mm
lot_coverage: max 0.4
far: max 1.2Ergonomic Rules
Section titled “Ergonomic Rules”- Prefer grouped blocks over distant cross-references.
- Keep one concept per block.
- Use named properties for architectural meaning.
- Use relative paths inside a semantic parent.
- Use explicit full paths when crossing to another group.
- Make all compiler and eval diagnostics cite paths.
SDK Equivalent
Section titled “SDK Equivalent”project("housing_study", ({ site }) => { site("main", ({ parcel }) => { parcel("pcl_001", ({ boundary, constraints }) => { boundary(({ edge }) => { edge("front", { from: [0, 0], to: [42000, 0], tags: ["frontage"] }); });
constraints(({ setback, lotCoverage, far }) => { setback("front", { from: "boundary.edges.front", distance: mm(5000) }); lotCoverage("max", { value: 0.4 }); far("max", { value: 1.2 }); }); }); });});