This page replaces the Wave 1 placeholder with the current repo-truth Windows walkthrough for v0.2.0-beta.
Important
Repo truth for this release:
orchestratordis not a natively supported Windows daemon path.- The recommended Windows topology is:
- WSL/Linux: repo checkout, daemon, worktrees, artifacts, connector
- Windows: IDE, Antigravity, optional
agent-broker
- If you want a pure Windows-only runtime, use WSL2 for the daemon side instead of trying to run the daemon natively on Windows.
agent-brokerremains a secondary / experimental bridge in the repo support matrix, not part of the primary beta promise.
Use SETUP.md for the common build and platform hub, BETA_TESTING.md for the frozen beta tracks, and mcp/integrations.md for the exact relay/cloud planner-client contract.
This is the practical mixed Windows layout described elsewhere in the repo:
Windows IDE / planner client
-> Windows localhost relay URL (native or forwarded)
-> Codencer relay
-> Codencer connector (WSL)
-> Codencer daemon (WSL)
-> local adapters / worktrees / artifacts (WSL)
Windows Antigravity
-> agent-broker (Windows localhost)
-> daemon Antigravity binding APIs (WSL)
Keep these boundaries clear:
- the daemon is the local system of record
- the connector is the outbound bridge from daemon to relay
- the relay is the remote planner surface
- the agent-broker is a local IDE bridge, not the relay
Do not expose the daemon directly to ChatGPT, Claude Desktop, or any other remote planner client. The daemon-local /mcp/call path is compatibility-only and not the public planner contract.
- repo checkout
orchestratordcodencer-connectord- worktrees
- artifacts
- optional relay if you keep the relay next to the daemon
- IDE with Antigravity active
agent-broker- optional relay if you intentionally want the relay to terminate on Windows localhost
- ChatGPT / Claude Desktop style clients pointed at the relay, not the daemon
From the repo root in WSL:
make buildExpected build lines include:
==> Building orchestratord...
==> Building orchestratorctl...
==> Building codencer-connectord...
==> Building codencer-relayd...
The broker is built separately because cmd/broker is a nested module.
From the repo root in a Windows shell:
make build-brokerExpected build line:
==> Building agent-broker (nested module)...
The resulting Windows binary is:
.\bin\agent-broker.exe
If you intentionally want the relay on Windows too, build the normal relay binary with the standard make build flow from SETUP.md. The mixed-layout recommendation in this page still keeps the daemon and connector in WSL.
This is the recommended side for repo state, worktrees, artifacts, and execution.
./bin/orchestratord --repo-root /home/<user>/Projects/codencerIn a second WSL shell, verify runtime truth:
curl -fsS http://127.0.0.1:8085/api/v1/compatibility
./bin/orchestratorctl instance --jsonExpected output snippets:
{"tier":...}{
"id": "<instance-id>",
"repo_root": "/home/<user>/Projects/codencer",
"base_url": "http://127.0.0.1:8085"
}mkdir -p .codencer/relay
./bin/codencer-relayd planner-token create \
--config .codencer/relay/config.json \
--write-config \
--name operator \
--scope '*'
./bin/codencer-relayd --config .codencer/relay/config.jsonFrom another WSL shell:
./bin/codencer-relayd status --config .codencer/relay/config.jsonExpected output snippet:
{
"planner_auth_mode": "static_bearer_tokens",
"connector_count": 0,
"instance_count": 0
}Create a one-time enrollment token:
./bin/codencer-relayd enrollment-token create \
--config .codencer/relay/config.json \
--label wsl-dev \
--expires-in-seconds 600 \
--jsonEnroll the connector against the WSL daemon:
./bin/codencer-connectord enroll \
--relay-url http://127.0.0.1:8090 \
--daemon-url http://127.0.0.1:8085 \
--enrollment-token <token>
./bin/codencer-connectord share --daemon-url http://127.0.0.1:8085
./bin/codencer-connectord runVerify connector state:
./bin/codencer-connectord status
./bin/codencer-connectord listExpected output snippets:
connector=<connector-id> machine=<machine-id> relay=http://127.0.0.1:8090 state=connected
configured_instances=1 shared_config=1 unshared_config=0
state=shared instance_id=<instance-id> daemon_url=http://127.0.0.1:8085 manifest_path=<...>
This page assumes Antigravity is the Windows IDE path.
The broker discovers Antigravity instances from:
%USERPROFILE%\.gemini\antigravity\daemon\ls_*.json
The broker persists repo bindings at:
%USERPROFILE%\.gemini\antigravity\broker_binding.json
If orchestratorctl antigravity list shows no instances, first confirm that Antigravity is active in the Windows IDE and that the ls_*.json files exist under the directory above.
In a Windows shell:
.\bin\agent-broker.exeExpected startup line:
Antigravity Broker v0.1.0-alpha starting on 127.0.0.1:8088
Verify the local broker endpoints:
curl.exe -fsS http://127.0.0.1:8088/health
curl.exe -fsS http://127.0.0.1:8088/versionExpected output:
{"status":"ok"}{"version":"0.1.0-alpha"}Back in WSL:
export CODENCER_ANTIGRAVITY_BROKER_URL=http://127.0.0.1:8088
./bin/orchestratorctl antigravity list
./bin/orchestratorctl antigravity bind <pid>
./bin/orchestratorctl antigravity statusExpected output snippets:
PID PORT REACHABLE WORKSPACE
------------------------------------------------------------
Successfully bound repo to Antigravity PID <pid>
Status: BOUND (Active)
PID: <pid>
Port: <https-port>
Workspace: <workspace-uri>
When you want the cross-side adapter path explicitly, use the antigravity-broker adapter:
./bin/orchestratorctl submit windows-broker-smoke \
--goal "Verify Windows Antigravity broker path" \
--adapter antigravity-broker \
--wait --jsonThat adapter choice is required for the broker-backed execution path. A repo-scoped Antigravity bind alone does not switch adapters automatically.
These product-specific paths remain compatibility-only in the current beta contract. Keep the claim narrow:
- Codencer proves the relay/cloud MCP surfaces
- Codencer does not claim direct repo-executed ChatGPT or Claude Desktop product setup
- remote clients should target the relay
/mcpendpoint, never the local daemon
For a relay-backed MCP client on Windows, the Codencer-side values are:
- URL:
http://127.0.0.1:8090/mcp - auth header:
Authorization: Bearer <planner-token> - canonical MCP path:
/mcp - compatibility alias for simple POST callers:
/mcp/call
If the client asks for a protocol version, use the current repo examples from mcp/integrations.md, which show MCP-Protocol-Version: 2025-11-25.
Point the Windows client directly at:
http://127.0.0.1:8090/mcp
This is the simplest Windows client wiring because the client and relay are on the same loopback interface.
Preferred outcome: the Windows client still reaches the relay as:
http://127.0.0.1:8090/mcp
If Windows localhost already reaches the WSL listener, no extra step is needed.
If it does not, add an OS-level localhost port forward from Windows to the WSL relay port and keep the client URL unchanged. Example:
wsl hostname -I
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8090 connectaddress=<wsl-ip> connectport=8090After that, a Windows-local client can still use:
http://127.0.0.1:8090/mcp
This keeps ChatGPT / Claude Desktop style Windows configuration stable even when the actual relay process lives in WSL.
Before you configure a Windows MCP client, verify the relay from Windows:
curl.exe -fsS ^
-H "Authorization: Bearer <planner-token>" ^
http://127.0.0.1:8090/api/v2/statusExpected output snippet:
{
"planner_auth_mode": "static_bearer_tokens",
"connector_count": 1,
"instance_count": 1
}Then verify MCP initialize on the same Windows URL:
curl.exe -fsS -D mcp-headers.txt ^
-H "Authorization: Bearer <planner-token>" ^
-H "Content-Type: application/json" ^
-H "MCP-Protocol-Version: 2025-11-25" ^
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\"}}" ^
http://127.0.0.1:8090/mcpExpected verification points:
- HTTP
200 - response body contains
"jsonrpc":"2.0" - response headers include
MCP-Session-Id
If this Windows curl.exe check fails, the product client will fail too. Fix the relay URL, token, or localhost forwarding first.
Keep these limits explicit:
- the Windows daemon path is unsupported; use WSL for daemon-side runtime
- the mixed WSL/Windows layout is operator guidance, not an automated smoke-proof matrix
agent-brokeris a secondary / experimental bridge in the repo support classificationagent-brokertask sessions are in-memory only; restarting the broker can orphan active tasks- product-specific ChatGPT-style and Claude-style MCP wiring is compatibility-only
- Windows Firewall / Defender may prompt the first time
agent-broker.exe,codencer-relayd.exe, or localhost port forwarding is used; approve only the local/private binding you intend to use
Also remember:
- keep the relay separate from the broker
- keep the connector on the same side as the daemon
- keep artifacts and worktrees on the WSL side
- inspect results via Codencer APIs and CLI rather than raw cross-side paths
Use this as the repeatable mixed-layout smoke for this page.
curl -fsS http://127.0.0.1:8085/api/v1/compatibility
./bin/orchestratorctl instance --jsonPass condition:
/api/v1/compatibilityincludes"tier"instance --jsonshows the expected WSLrepo_root
curl.exe -fsS http://127.0.0.1:8088/health
curl.exe -fsS http://127.0.0.1:8088/versionPass condition:
{"status":"ok"}{"version":"0.1.0-alpha"}
export CODENCER_ANTIGRAVITY_BROKER_URL=http://127.0.0.1:8088
./bin/orchestratorctl antigravity list
./bin/orchestratorctl antigravity bind <pid>
./bin/orchestratorctl antigravity statusPass condition:
- at least one reachable Antigravity instance is listed
- bind succeeds
- status is
BOUND (Active)
curl.exe -fsS ^
-H "Authorization: Bearer <planner-token>" ^
http://127.0.0.1:8090/api/v2/statusPass condition:
- JSON contains
"planner_auth_mode":"static_bearer_tokens" - JSON shows at least one connected connector / instance after the WSL connector is running
curl.exe -fsS -D mcp-headers.txt ^
-H "Authorization: Bearer <planner-token>" ^
-H "Content-Type: application/json" ^
-H "MCP-Protocol-Version: 2025-11-25" ^
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\"}}" ^
http://127.0.0.1:8090/mcpPass condition:
- HTTP
200 - body contains
"jsonrpc":"2.0" mcp-headers.txtcontainsMCP-Session-Id
./bin/orchestratorctl submit windows-broker-smoke \
--goal "Verify Windows Antigravity broker path" \
--adapter antigravity-broker \
--wait --jsonPass condition:
- the run completes without broker connection failure
- follow-up result inspection shows the broker execution context rather than a local non-broker adapter path
For the frozen repo-level beta proof boundaries, return to BETA_TESTING.md. For the canonical planner/client surfaces and MCP examples, return to mcp/integrations.md.