Declarative layouts
Describe a project's tabs, split layout, and the process each pane runs in a YAML file, and Macterm builds the workspace from it. Project files live in ~/.config/macterm/projects/, one per project — they're matched to a project by their path, not their filename, so the filename is just cosmetic.
name: "MyApp"
path: "~/dev/myapp"
tabs:
- run: "npm run dev"
- name: "Dev"
split:
direction: horizontal
ratio: 0.6
first: { cwd: "./api", run: "npm run dev" }
second: {} # plain shell paneEach tab is a layout node: a leaf pane (cwd / run / shell) or a split with a direction, a ratio, and first / second children. A bare {} is a plain shell.
Run Save layout from the palette to write your current workspace out, or Apply layout to reconcile the live workspace toward the file — matching panes are kept, only ones that drifted are restarted.
A path can also be a remote spec (devbox:~/dev/api), declaring a remote project whose tabs spawn on that host — with an optional top-level zmxPath when zmx needs an explicit location there.
The older in-project
.macterm/layout.yamlstill seeds a project on first open, but it's deprecated in favor of the central files above.