# CST-Agent on Windows ## Release layout ``` cst-agent.exe busybox.exe # built from busybox-w32 libwinpthread-1.dll # MinGW runtime (required) LICENSE.busybox README-windows.md ``` Prebuilt tree from Linux cross-compile: `agent/dist/windows-x86_64/`. ## Build (MinGW-w64 cross from Linux) ```bash cd agent # 1) third-party: curl (Schannel) + PDCurses + busybox-w32 ./scripts/build_third_party_mingw.sh all # sources: # https://github.com/rmyorston/busybox-w32.git # https://github.com/curl/curl.git # https://github.com/wmcbrine/PDCurses.git # Unix busybox (optional, Linux/Termux bundle): # ./scripts/build_third_party_mingw.sh busybox-unix # https://github.com/mirror/busybox.git # 2) headless cmake -B build-win -DCMAKE_TOOLCHAIN_FILE=cmake/mingw-w64-x86_64.cmake \ -DCST_BUILD_TUI=OFF -DCMAKE_PREFIX_PATH=$PWD/third_party/prefix-mingw cmake --build build-win # 3) TUI (PDCurses) cmake -B build-win-tui -DCMAKE_TOOLCHAIN_FILE=cmake/mingw-w64-x86_64.cmake \ -DCST_BUILD_TUI=ON -DCMAKE_PREFIX_PATH=$PWD/third_party/prefix-mingw \ -DPDCurses_ROOT=$PWD/third_party/prefix-mingw cmake --build build-win-tui ``` Copy `build-win-tui/cst-agent.exe`, `third_party/busybox/busybox.exe`, and `libwinpthread-1.dll` into one folder. ## Build natively on Windows (MSYS2) The CMake build also works directly on Windows with MSYS2's mingw-w64 toolchain -- no separate Linux host needed: ```bash # in an MSYS2 MINGW64 shell pacman -S --needed --noconfirm \ mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-make \ mingw-w64-x86_64-curl mingw-w64-x86_64-pdcurses cd agent cmake -B build-win -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release cmake --build build-win --target cst-agent -j"$(nproc)" ``` `CST_BUILD_TUI=ON` (the default) picks up MSYS2's PDCurses automatically, including its `include/pdcurses/` layout; set `-DPDCurses_ROOT=...` only for a custom PDCurses. Two differences from the cross-build release layout above: - **Extra DLLs.** MSYS2's curl package is the shared OpenSSL build, so the executable needs its whole dependency chain beside it. Collect it with `ldd build-win/cst-agent.exe | grep mingw64`. - **Only build the `cst-agent` target.** Some sources under `tests/` are POSIX-only (two-argument `mkdir`, `setenv`, `arpa/inet.h`, `symlink`) and do not compile with MinGW. The main program is unaffected. ## Run ```bat set CST_API_KEY=... cst-agent.exe --headless --workspace . --prompt "echo hi" cst-agent.exe --workspace . ``` Shell: bundled `busybox.exe sh -c ...` unless `CST_SHELL` is set. Credentials: `%APPDATA%\cst-agent\credentials` (or console prompt).