> ## Documentation Index
> Fetch the complete documentation index at: https://www.onyxresearch.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Windows via WSL2

> Run the Onyx 0.1.20 Windows via WSL2 preview with Linux-local repositories and tools.

<Warning>
  Windows via WSL2 is available as a preview in Onyx 0.1.20. The tested environment
  is Windows 11 x64, WSL2 and Ubuntu 24.04 LTS, with Linux-local repositories and tools.
  Real research, all three worker providers, installation, upgrade/rollback and
  interruption recovery have passed on that environment. Fresh Windows/WSL login,
  the browser callback, and the complete Windows Terminal `/onyx` journey remain
  scheduled for follow-up testing. These checks are deferred, not certified.
</Warning>

## Install inside Ubuntu

Install WSL2 and Ubuntu 24.04 using Microsoft's
[WSL installation guide](https://learn.microsoft.com/en-us/windows/wsl/install).
In PowerShell, use `wsl --list --verbose` to confirm Ubuntu runs as version 2.
Open Ubuntu in Windows Terminal and use a normal Linux user.

Clone your repository into the distribution's Linux home, such as `~/projects`.
Keep the repository, common Git directory, Onyx config, provider installations and
evaluator working directories on Linux-local storage. `/mnt/c`, other Windows
mounts, network shares, and aliases or symlinks into them cannot be used for
protected Onyx operations. An externally located common Git directory is checked
separately. Linux-local temporary storage is permitted.

Run the existing installer **from the Ubuntu shell**:

```bash theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
curl -fsSL https://onyxresearch.ai/install.sh | bash
onyx --version
onyx-worker diagnostics handshake --json
```

It installs the Linux binaries, checks their checksums, offers PATH setup and
installs the packaged skill. Open a fresh Ubuntu terminal to verify PATH. The
compiled binaries do not require Bun; a provider or your evaluator may have its
own runtime dependencies. Reinstalling uses the same installer and preserves
profiles and pending research evidence.

## Authenticate and install providers

Automatic login in WSL uses device authorization. Open the displayed verification
URL in your Windows browser and enter the code. Multi-team accounts choose a team
in the terminal. Explicit `onyx login --device` and `onyx login --browser` override
the default; browser mode requires a working loopback callback.

Credentials use Linux Secret Service when available and a private Linux file
fallback otherwise. Keep `ONYX_HOME` and `XDG_CONFIG_HOME`, if configured, inside
Linux. Unsafe storage blocks login before authorization and blocks token refresh
before rotating a token. Remote reads can continue with a usable unexpired
credential; they do not make unsafe storage acceptable for refresh.

Install Codex, Claude Code, or OpenCode using that provider's **Linux** instructions,
and authenticate the provider separately from Onyx. Resolve `git`, your provider,
and `onyx-worker` inside Ubuntu. Onyx preflight rejects Windows executable files
and recognizable Windows installation shims, and verifies the pinned worker CLI.
Upgrade `onyx` and `onyx-worker` together. Keep the intended installation first on
the Linux shell's PATH; a protocol mismatch blocks research before a session is
created. Preflight pins the resolved worker for the session.
Do not disable a provider's sandbox to bypass a missing Linux prerequisite.
For OpenCode, choose an exact provider/model ID from `opencode models` with
`onyx research run --model`; confirm it uses the provider account you authenticated.

The main agent running `/onyx` must execute its commands in this **same Linux
distribution**, as must spawned workers. A Windows editor may view the Linux
checkout, but a Windows-hosted shell is not the research execution environment.
Windows-native executables and Windows-only evaluators are outside this target.
GPU, USB, physical hardware and proprietary evaluator compatibility depend on the
workload and require separate testing.

## Stop and recover

Stop research before intentionally shutting down Ubuntu or Windows:

```bash theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
onyx research stop --session <id>
onyx research status --summary --json
```

WSL termination and Windows restart interrupt Linux processes. Detached supervisors
are not a Windows service, and research sessions are never resumed. Keep the
launching Windows Terminal open while research runs. Survival after closing all
terminal windows or sleeping the host is not certified in this preview. After an
unexpected interruption, reconnect and use the recovery commands below.
Terminating a distribution can leave the Linux boot ID unchanged; restart alone
does not prove ownership or safe cleanup of recorded processes.

After an interruption:

```bash theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
onyx research recover --runtime --session <id> --dry-run --json
onyx research recover --runtime --session <id> --json
```

Runtime recovery skips verified live supervisors, preserves terminal attempts and
immutable refs, and removes worktrees and credential runtime directories only when
process ownership permits cleanup. Uncertain process identity, unaccounted runtime
artifacts and unsupported evidence block cleanup. Inspect the returned reasons;
never delete the pending-report directory to clear an error. Repeat recovery after
resolving a blocker. `--dry-run` makes no local or remote changes.

Remote cleanup acknowledgement requires available credentials for the original
team and API origin. If delivery is blocked after safe local cleanup, retain the
receipts and retry recovery when authentication and connectivity are restored.

Runtime recovery leaves remote session cutoffs unchanged. If the session remains
open, use its explicit `research stop --session <id>` command. Starting research
again creates a new session. Plain `research recover` only retries bounded report
and cleanup-receipt delivery. A pending report may already be acknowledged but
still require an immutable-ref push.

Occupied resource slots never reset automatically. After verifying every launcher
and resource user is idle, inspect and use the existing reset procedure:

```bash theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
onyx research locks reset --resource <name> --confirm-idle --dry-run
onyx research locks reset --resource <name> --confirm-idle
```

A crash while launch/recovery holds `onyx-runtime-reconciliation` can leave that
resource occupied too. Do not reset it while another launch or recovery is running.
Use `research clean --dry-run` before deleting idle runtime and logs; unresolved
execution and pending reports prevent cleaning.

Onyx 0.1.20 requires matching protocol-6 `onyx` and `onyx-worker`
binaries. Linux evaluators launched through Onyx have separate process-group
ownership records. If recovery reports uncertain evaluator ownership or an
interrupted launch, retain its runtime evidence and resolve the listed process
before retrying. Do not delete the runtime directory to bypass the blocker.

## Networking

Verify API HTTPS access, Git authentication and provider access from Ubuntu.
Corporate proxies, VPNs and certificate stores can differ between Windows and
Linux. Configure the Linux tools' supported proxy/CA settings. Device authorization
avoids relying on browser opening and loopback forwarding across environments.
Forced browser login additionally needs Windows-to-WSL localhost connectivity;
see Microsoft's [WSL networking guide](https://learn.microsoft.com/en-us/windows/wsl/networking).
Onyx does not change WSL mounts, interoperability, global PATH, firewall settings,
or memory limits automatically.

## Preview qualification

The initial candidate passed the required source/compiled research matrix, including
Codex 0.145.0, Claude Code 2.1.263 and OpenCode 1.17.11 with
`opencode/claude-sonnet-4-6`. Each provider canary produced four successful measured
edits and verified immutable refs. The host used Windows 11 Home 23H2 build
22631.4460, WSL 2.7.13.0, Ubuntu 24.04.4 and Git 2.43.0. This is a narrow tested
configuration, not a claim about every Windows/WSL/provider version.

Fresh authentication and refresh/revocation on this Windows environment, authenticated
profile preservation across upgrades, explicit browser callbacks, Terminal UI and
lifetime, and the full main-thread `/onyx` journey remain follow-up work. Longer
sleep/network failures and wider compatibility matrices are also deferred.
