Remote Solver Setup

IkaSolver's remote solving feature lets you offload the heavy computation of running a poker solver to a separate machine - typically a high-RAM server or cloud instance - while you browse results and interact with the GUI on your local computer. This is especially useful for large trees that require more RAM than your laptop has available.

How it Works

The remote solver runs as a WebSocket server on the server machine. Your local IkaSolver GUI connects to it over the network, sends the tree and solver configuration, and receives live stats and results back. The solving happens entirely on the server; your local machine only needs enough resources to display the GUI.

Starting the Server

On the server machine, run:

ikasolver --serve

This starts the WebSocket server on the default port 9876. You can specify a different port:

ikasolver --serve 8080

Authentication Token

By default, the server generates a random 32-character authentication token and prints it to the console:

IkaSolver v1.0.0
Auth token: aB3xK9mP2qR7sT4uV6wY8zA1bC5dE0f
Listening on 0.0.0.0:9876

You'll need this token to connect from the GUI. Copy it and enter it in the connection settings.

To use a specific token instead of a random one, pass it with --token:

ikasolver --serve --token my-secret-token

This is useful for scripted deployments or when you want a memorable token.

Security Note

Warning: The token travels in plaintext over the WebSocket connection (ws://). If you're connecting over an untrusted network (e.g., the internet rather than a local network), use an SSH tunnel or VPN to encrypt the traffic.

Stopping the Server

Press Ctrl+C to shut down the server. Any active solve will be terminated.

Console Output

While running, the server prints status information to the console:

  • Client connections - Client connected from 192.168.1.50:54321
  • Live solver stats - Iterations, speed, elapsed time, volatility, memory usage, and player EVs - updated in real time on a single overwriting line
  • Client disconnections - Client disconnected, ready for new connection
  • Errors - Authentication failures, WebSocket errors, solver errors

The server accepts one client at a time. If a client disconnects and reconnects, the solver state is preserved - the reconnecting client picks up where it left off. A new client can connect after the previous one disconnects.

System Requirements for the Server

RAM

RAM is the most important resource for the solver. Requirements depend on the tree size, abstraction settings, and number of streets:

  • Small trees (heads-up preflop, few bet sizes): 2-8 GB
  • Medium trees (6-max preflop, moderate bet sizes): 8-32 GB
  • Large trees (full postflop, many bet sizes): 32-128 GB+

Use the Estimate RAM button in the GUI's Settings panel to get an accurate prediction before starting a solve. The server will abort on Linux if /proc/meminfo reports insufficient available RAM.

CPU

More threads means faster solving. The solver scales well across cores:

  • Minimum - 2-4 cores
  • Recommended - 8-16 cores for comfortable solving speed
  • Ideal - 32+ cores for large trees (dedicated cloud instances)

The number of threads is configured in the solver settings before starting the solve - you don't set threads on the server command line. However, the server machine must have enough physical cores to benefit from the thread count.

Network

The initial tree transfer can be several hundred megabytes for large trees. After that, only solver stats and query results travel over the connection, which is lightweight. A stable connection is more important than bandwidth - if the connection drops, you'll need to reconnect (though solver state is preserved on the server).

Bounty Configuration

To run a bounty solve remotely, pass the --squid-config flag with a path to your bounty configuration JSON file:

ikasolver --serve --squid-config /path/to/bounty-config.json

See bounty mode for details on bounty configuration.

Next Steps

  • Connecting - Connect to the remote server from the GUI