# Compatibility
This matrix distinguishes what CI exercises from what release automation merely builds. It avoids implying support that the project does not currently test.
## oy release targets
| Linux x86_64, glibc | CI-tested and release-built | Full Rust checks run on `ubuntu-latest`; release archive is built. |
| Linux aarch64, glibc | Release-built | Release archive is built on Ubuntu ARM; full test suite is not run there. |
| macOS Apple Silicon | Release-built | Release archive is built on macOS 14; full test suite is not run there. |
| Other Linux/macOS targets | Source-build only | The target OS is accepted, but no CI or release archive is provided. |
| Windows | Unsupported | Use oy inside WSL2; native Windows builds are rejected. |
| Other operating systems | Unsupported | Builds are rejected; oy intentionally relies on Linux/macOS process and filesystem semantics. |
The curl installer requires a POSIX shell. Rust 1.96 is the minimum source-build toolchain.
## OpenCode host compatibility
oy 0.13.3 integrates with OpenCode 2 through its noninteractive runner, managed API, version-matched npm plugin, and temporary local stdio MCP adapter. It defaults to the `opencode2` executable; `OY_OPENCODE` can override the executable but not the required contract.
| OpenCode beta `0.0.0-next-15353` | Supported pinned beta; installed as `@opencode-ai/cli@0.0.0-next-15353` and exposed as `opencode2`. |
| Other OpenCode beta builds | Unsupported until pinned and exercised by the compatibility smoke. |
| Tagged OpenCode 2.x | Accepted by the tagged-major contract; test coverage will be added when a tagged release exists. |
| OpenCode major >2 | Unsupported until its contract is reviewed. |
| OpenCode 1 | Unsupported; removed in oy 0.12.0-beta.1. |
| Unknown contract | Unsupported. |
The installer uses mise's npm backend for the exact pinned beta package. There is not yet an automated pinned cross-version API smoke matrix or provider-backed integration suite; the [roadmap](https://github.com/adonm/oy-cli/blob/main/ROADMAP.md) keeps those limits explicit.
Setup pins the version-matched `@oy-cli/opencode` package, which supplies the permission-neutral agent, commands, and three canonical skills. Old direct entries in oy's file namespace are moved to a reported backup regardless of local modifications; oy-namespaced package, command, and MCP config entries are replaced without matching historical contents. Unrelated config is retained. Global setup honors `OPENCODE_CONFIG_DIR` and selects an existing `opencode.jsonc` before `opencode.json`.
`oy doctor --check` validates the effective selected service version, location, OpenAPI surface, `oy` agent, commands, skills, and model/provider/plugin availability. It deliberately does not require the optional MCP adapter or validate/prescribe the user's permission policy.
## Optional evidence helpers
| `tokei` | Successful capability probe at a canonical absolute path | `sloc` is omitted from MCP tools. |
| Universal Ctags | Successful JSON-capability probe at a canonical absolute path | `outline` is omitted from MCP tools. |
| Sighthound at commit `c4608eb2b6ca256daf4dbd1e74aadc3570343685` | Successful capability probe at a canonical absolute path; source-built with Rust 1.96, `--locked`, and only `bin=sighthound` | `sighthound` is omitted; complete chunk audit still runs. |
Relative `PATH` entries are ignored. Use `OY_TOKEI`, `OY_CTAGS`, or `OY_SIGHTHOUND` with an absolute path to override discovery.
## Reporting compatibility problems
Include:
- `oy --version`;
- the selected OpenCode executable and `--version` output;
- operating system and architecture;
- install method;
- `oy doctor --json` output with sensitive paths reviewed;
- whether setup is global or workspace-local.