# AirCoding Cross-Platform Matrix V1 Date: 2026-05-27 Status: Canonical platform support matrix for V1.0.0 Alpha skeleton This document defines MVP platform targets, feature support levels, toolchain assumptions, and release validation requirements. ## 1. Support Levels ```ts type PlatformSupportLevel = | "tier_1" | "tier_2" | "experimental" | "unsupported" ``` | Level | Meaning | |---|---| | `tier_1` | release-blocking support; tested before release | | `tier_2` | intended support; best-effort validation; not always release-blocking | | `experimental` | may work; no compatibility promise | | `unsupported` | explicit non-target | ## 2. MVP Platform Targets | Platform | Support level | Notes | |---|---|---| | Linux x86_64 | tier_1 | primary development and CI target | | Linux arm64 | tier_2 | important for appliance/VibeBox lineage and embedded-style testing | | macOS arm64 | experimental | CLI/runtime likely portable; C++/debug tooling varies | | macOS x86_64 | experimental | lower priority | | Windows native | experimental/post-MVP | path/shell/process/debug semantics need dedicated work | | WSL2 Linux | tier_2 | treated as Linux with Windows filesystem caveats | MVP implementation should be Linux-first and avoid hardcoding Linux-only assumptions where simple abstractions are cheap. ## 3. Runtime Feature Matrix | Feature | Linux x86_64 | Linux arm64 | macOS | Windows native | WSL2 | |---|---|---|---|---|---| | Bun runtime | tier_1 | tier_2 | experimental | experimental | tier_2 | | CLI | tier_1 | tier_2 | experimental | experimental | tier_2 | | OpenTUI/Solid TUI | tier_1 | tier_2 | experimental | experimental | tier_2 | | SQLite session DB | tier_1 | tier_2 | experimental | experimental | tier_2 | | NDJSON child processes | tier_1 | tier_2 | experimental | experimental | tier_2 | | ToolRegistry | tier_1 | tier_2 | experimental | experimental | tier_2 | | PermissionEngine path policy | tier_1 | tier_2 | partial | partial | tier_2 | | Doctor read-only | tier_1 | tier_2 | partial | partial | tier_2 | | Doctor fix | tier_1 | tier_2 | limited | limited | tier_2 | ## 4. Filesystem and Path Matrix | Capability | Linux | macOS | Windows native | WSL2 | |---|---|---|---|---| | POSIX paths | yes | yes | no | yes | | symlink realpath | yes | yes | different semantics | yes | | chmod/exec bits | yes | yes | partial | yes | | case sensitivity | usually yes | often no | usually no | depends mount | | project-local `.air` | yes | yes | yes | yes | | git worktree | yes | yes | yes with caveats | yes | | project-outside backup repo | yes | yes | yes with path handling | yes | V1 path classifier must be platform-aware and must not rely on string prefix checks before realpath normalization. ## 5. Shell and Command Matrix | Shell behavior | Linux | macOS | Windows native | WSL2 | |---|---|---|---|---| | bash/sh commands | tier_1 | partial | unsupported by default | tier_2 | | process signals | POSIX | POSIX-ish | different | POSIX | | sudo | yes | yes | no | yes | | package manager commands | apt/dnf/pacman/etc | brew optional | winget/choco optional | Linux package mgr | | timeout/kill | tier_1 | partial | different | tier_2 | MVP shell tools target non-interactive POSIX shell. Windows native command support is post-MVP. ## 6. C++ Toolchain Matrix | Tool | Linux x86_64 | Linux arm64 | macOS | Windows native | WSL2 | |---|---|---|---|---|---| | CMake | tier_1 | tier_2 | experimental | experimental | tier_2 | | Ninja | tier_1 | tier_2 | experimental | experimental | tier_2 | | Make fallback | tier_1 | tier_2 | experimental | partial | tier_2 | | gcc/clang | tier_1 | tier_2 | clang-focused | MSVC not MVP | tier_2 | | clangd CLI | tier_1 | tier_2 | experimental | experimental | tier_2 | | cppcheck | tier_1 | tier_2 | experimental | experimental | tier_2 | | CTest/GoogleTest | tier_1 | tier_2 | experimental | experimental | tier_2 | | core dumps/backtrace | tier_1 | partial | different | unsupported MVP | tier_2 | Windows MSVC-specific workflows are not MVP. ## 7. GUI, Debug, and Network Evidence Matrix | Evidence type | Linux | macOS | Windows native | WSL2 | |---|---|---|---|---| | screenshots | tier_1 with display backend | experimental | experimental | depends WSLg/X | | GUI automation | post-MVP/basic only | post-MVP | post-MVP | depends WSLg/X | | pcaps | requires permissions | requires permissions | different tooling | requires permissions | | core dumps | Linux-first | different | different | Linux-first | | debugger integration | Linux-first | experimental | post-MVP | Linux-first | MVP only requires basic GUI screenshot evidence where display backend is available. ## 8. Provider/Network Matrix Provider APIs are platform-independent except for: ```text TLS/certificate store differences proxy environment variables local model runtimes network firewall/proxy policy ``` Doctor should validate provider reachability without exposing secrets. ## 9. Distribution Matrix MVP distribution: | Platform | Distribution | |---|---| | Linux x86_64 | binary tarball | | Linux arm64 | binary tarball, best-effort | | macOS | experimental tarball or manual run | | Windows native | no stable MVP distribution | | WSL2 | use Linux tarball inside WSL | Binary tarball contains: ```text bin/air resources/ LICENSE ``` Resources include templates, prompts, themes, HUD presets, Python scripts, and toolchain resources. ## 10. Platform Detection Contract ```ts interface PlatformInfo { os: "linux" | "darwin" | "windows" | "unknown" arch: "x64" | "arm64" | "arm" | "unknown" libc?: "glibc" | "musl" | "unknown" shell?: string is_wsl?: boolean display?: { wayland?: boolean x11?: boolean xvfb?: boolean wslg?: boolean } package_managers?: string[] path_case_sensitive?: boolean } ``` Doctor records platform info in doctor report artifacts and session metadata. ## 11. Release Gate Before an AirCoding MVP release: Tier 1 Linux x86_64 must pass: ```text unit tests integration fixture tests real LLM E2E release test project init smoke C++ configure/build/test flow SQLite recovery smoke child agent IPC smoke TUI startup smoke artifact/event persistence smoke ``` Linux arm64 best-effort gate: ```text runtime startup doctor read-only SQLite/session creation basic shell/tool execution C++ toolchain detection if available ``` Experimental platforms may have smoke checks but do not block MVP release unless declared for a specific release. ## 12. VibeBox Relationship VibeBox targets ARM Linux appliance behavior and has its own downstream baseline. AirCoding mainline should keep Linux arm64 viable, but VibeBox-specific Electron packaging/test requirements do not become AirCoding mainline MVP release blockers. ## 13. V1.0.0 Alpha Cut Line V1.0.0 Alpha skeleton must implement: 1. Platform detection. 2. Linux x86_64 tier-1 path/shell/process behavior. 3. Linux arm64 best-effort packaging/runtime checks. 4. WSL detection and warnings. 5. Platform-aware path classifier. 6. Doctor platform report. 7. Release gate script definitions for tier 1. Post-MVP: ```text Windows native shell/process support macOS notarized distribution containerized test matrix MSVC toolchain profile Wayland/X11/Windows/macOS GUI automation adapters platform-specific sandboxing ```