AEA runs on macOS, Linux, and Windows. Capability differs by platform; this page is the source of truth.
For the complete clone, environment, skill installation, and first-analysis sequence,
start with Getting started. Launch the agent from the AEA
repository root with the aeais environment active. Client installation and model
access are separate from the Python environment.
Everything in the pipeline works natively:
What works:
What does NOT work natively:
check_env.ps1) detects WSL automatically and reports its FreeSurfer status.
.set / .fif / .bdf).tools/env/check_env.sh (mac/linux) and check_env.ps1 (Windows) write ENVIRONMENT.json. Every skill reads this file before invoking a backend. Missing backends produce an explicit, logged degradation — never a silent fallback.
Schema fields:
python / python_packages.{mne, mne_bids, mne_icalabel, autoreject, pycrostates, mne_connectivity, numpy, scipy, matplotlib}freesurfer (requires FREESURFER_HOME; on Windows, probed inside WSL)gpu (NVIDIA via nvidia-smi or Apple-MPS)capabilities.* — derived map of which skill paths are reachableThe current probe also records optional_packages, matlab_engine, eeglab, and
fieldtrip. Entries in capabilities describe dependency requirements; they are
not successful execution or numerical-certification results. Use
tools/env/resolve_backend.py with the registry to
resolve a supported capability and record its required numerical conventions.
See certification coverage for the measured evidence.
# 1. Python env
conda env create -f environment.yml
conda activate aeais
# 2. FreeSurfer (optional, only for individual-MRI source localization)
# Install FreeSurfer for your OS and CPU, then:
export FREESURFER_HOME=/path/to/freesurfer
source "$FREESURFER_HOME/SetUpFreeSurfer.sh"
# 3. Probe from the AEA repository root
bash tools/env/check_env.sh
# 1. Python env (Miniconda/Anaconda)
conda env create -f environment.yml
conda activate aeais
# 2. Probe (Windows PowerShell 5.1)
powershell -ExecutionPolicy Bypass -File tools/env/check_env.ps1
PowerShell 7 users can use pwsh -File tools/env/check_env.ps1. The local skill
installer creates directory links, so Windows must permit symlink creation, for
example through Developer Mode or an appropriately privileged terminal. Otherwise,
use the full setup inside WSL. See skill installation.
# Inside Windows PowerShell:
wsl --install -d Ubuntu-22.04
Inside WSL, install the Linux environment and FreeSurfer:
sudo apt install -y tcsh libgomp1 # FreeSurfer deps
# Download FreeSurfer for Ubuntu, install to /usr/local/freesurfer
echo 'export FREESURFER_HOME=/usr/local/freesurfer' >> ~/.bashrc
echo 'source $FREESURFER_HOME/SetUpFreeSurfer.sh' >> ~/.bashrc
source ~/.bashrc
Back in Windows, the probe checks the WSL FREESURFER_HOME value:
powershell -ExecutionPolicy Bypass -File tools/env/check_env.ps1
That availability check does not execute FreeSurfer or route analysis jobs into WSL. Run individual-MRI processing in the Linux environment where FreeSurfer is installed and keep its inputs and outputs accessible to the analysis.
mne-icalabel: environment.yml includes ONNX Runtime for the ICLabel inference path. PyTorch and MPS are not required by this setup.pyprep for RANSAC bad-channel detection: already included in the pip section of environment.yml. If the probe reports it missing, confirm the active environment and complete its installation.specparam, antropy, statsmodels, and tensorpac are probed but are not installed by the core environment file. Install the packages needed by the selected analysis and rerun the probe.Activate aeais or use conda run; do not invoke a conda environment’s
python.exe directly. Without activation, SciPy can fail at LAPACK/SVD with
Windows fatal exception: 0xc06d007f even when NumPy and MNE import successfully.
The deployment report probes an actual SVD operation before selecting Python.
conda run -n aeais python -m pytest tools/tests/
The PowerShell 7 branch has been inspected but not executed. Probe JSON is read with
utf-8-sig to support both PowerShell 5.1 and 7 encodings. A Windows test count may
be lower because a POSIX-shell test is skipped when only the WSL launcher is
available; compare collected tests and skip reasons.
The historical portability record retains the crash investigation, unsuccessful OpenMP/BLAS workarounds, PowerShell compatibility inspection and original cross-platform test counts.