CHIM Remote Hosting Guide

This page covers the local network setup where Skyrim runs on one PC and the heavier CHIM services run on a second machine. The main thing this guide solves is getting the second machine's WSL-hosted CHIM services reachable from your gaming PC.

Remote Hosting Guide

Basic Setup Idea

The old CHIM wiki guide was built around a two-PC LAN setup. PC A is the machine you actually play Skyrim on. PC B is the machine that runs the bigger AI stack.

Two-PC CHIM setup diagram
PC A runs Skyrim. PC B runs the heavy remote CHIM services on the same local network.

What Each PC Should Run

  • PC A: Skyrim and the lighter local CHIM side. The old guide used DwemerDistro here as only the web server side.
  • PC B: your remote model and voice stack. The old guide specifically showed KoboldCPP, DwemerDistro, and XTTS on this machine; OmniVoice can be hosted there the same way.

If you are setting up KoboldCPP or LM Studio for CHIM, configure the model first with the Local LLM Guide, then return here for the second-PC network steps.

PC A component installation notes
PC A should stay simple: Skyrim plus the local side needed to talk to the remote services.
PC B component installation notes
PC B handles the heavier remote services like the language model and XTTS.

Get The Two Addresses You Need

You need two different addresses from the remote machine:

  • The Windows LAN IP: this is the address the game PC will connect to.
  • The WSL IP: this is the internal target that Windows will forward traffic into.
Getting the LAN IP with ipconfig
Use ipconfig on PC B and note its IPv4 LAN address.
Getting the WSL IP from DwemerDistro
Start DwemerDistro on PC B and note the internal WSL address it reports for the web and XTTS services.

You can also fetch the current WSL address directly with:

wsl hostname -I

If your second-PC setup suddenly stops working later, check this first. WSL IPs can change after restarts.

Forward The WSL Services Through Windows

This is the key fix from the old wiki. If trying to reach WSL_IP:8020 directly from the gaming PC keeps failing, do not keep aiming the game PC at the raw WSL address. Forward those ports through the Windows host machine instead.

Forward the ports for the services you use:

  • 8081: the CHIM web side
  • 8020: XTTS, Chatterbox, PocketTTS, or another service using the shared TTS port
  • 8021: OmniVoice

You can create the rules in an elevated Command Prompt:

netsh interface portproxy add v4tov4 listenport=8081 listenaddress=0.0.0.0 connectport=8081 connectaddress=<WSL_IP>
netsh interface portproxy add v4tov4 listenport=8020 listenaddress=0.0.0.0 connectport=8020 connectaddress=<WSL_IP>
netsh interface portproxy add v4tov4 listenport=8021 listenaddress=0.0.0.0 connectport=8021 connectaddress=<WSL_IP>

If you prefer a GUI, the old guide also used PortProxyGUI:

PortProxyGUI Download

PortProxyGUI setup for CHIM remote hosting
Create rules that listen on the Windows host and forward 8081 and 8020 into the WSL address on PC B.

The screenshot predates OmniVoice. Add the same kind of rule for port 8021 when OmniVoice is installed on PC B.

Open The Windows Firewall Ports

The old guide also opened inbound TCP rules for the forwarded ports. If Windows Firewall blocks them, the LAN setup still will not work even if the proxy is correct.

  • Create an inbound rule for TCP.
  • Allow the connection.
  • Add local ports 8081,8020,8021, omitting any services you do not expose.
  • Apply it to Domain, Private, and Public if needed for your machine.

OmniVoice does not authenticate API requests. Use it only on a trusted network and restrict the port 8021 firewall rule to PC A's LAN address where practical.

Creating a Windows Firewall inbound rule
Create a new inbound rule in Windows Defender Firewall on PC B.
Adding TCP ports 8081 and 8020 to the firewall rule
Make the rule TCP and explicitly allow ports 8081 and 8020.

Point CHIM On PC A At The Remote Machine

Once PC B is forwarding and accepting traffic, the gaming PC should use the Windows LAN IP of PC B, not the raw WSL address.

  • For the web side: open the remote CHIM pages with the PC B LAN IP on port 8081.
  • For XTTS: use the PC B LAN IP on port 8020 inside the CHIM text-to-speech settings.
  • For OmniVoice: use the PC B LAN IP on port 8021 inside the CHIM text-to-speech settings.
Starting DwemerDistro on the Skyrim PC
Run the local CHIM side on the Skyrim machine, but leave the heavier remote services on PC B.
Configuring XTTS to use the remote machine LAN IP
Set the XTTS endpoint on PC A to the LAN IP of PC B, for example http://192.168.1.3:8020.

In short, use REMOTE_MACHINE_IP:8081 for the web side, REMOTE_MACHINE_IP:8020 for shared-port TTS engines, and REMOTE_MACHINE_IP:8021 for OmniVoice.

Quick Troubleshooting Notes

If it still does not work, go through these in order:

  • Make sure the service actually works locally on PC B first.
  • Confirm the PC B LAN IP with ipconfig.
  • Confirm the current WSL IP again with wsl hostname -I.
  • Make sure your port-proxy rules still point at the current WSL IP.
  • Make sure Windows Firewall allows each required inbound TCP port, including 8021 for OmniVoice.
  • From PC A, test OmniVoice with curl http://REMOTE_MACHINE_IP:8021/health before configuring the connector.
  • On PC A, use the remote machine IP, not the WSL IP, in the endpoint fields.

Original screenshot walkthrough on the old wiki was credited there to hey_daniel.