Skip to main content
This guide will help you set up a basic Sakuya AC proxy server and connect your first client.

Prerequisites

  • Python 3.9 or higher
  • A running YSFlight server
  • YSFlight client for testing
1

Clone the repository

Download Sakuya AC from GitHub:
git clone https://github.com/the-indian-dev/sakuya-ac.git
cd sakuya-ac
2

Configure the proxy

Edit config.py to point to your YSFlight server:
config.py
# Server Configuration
SERVER_HOST = "127.0.0.1"  # Your YSFlight server IP
SERVER_PORT = 7915          # Your YSFlight server port
PROXY_PORT = 9000           # Port where proxy listens

# YSFlight Server Version
YSF_VERSION = 20150425      # IMPORTANT: Match your server version

# Enable ViaVersion for newer clients
VIA_VERSION = True

# G-Limiter (abs(g) >= limit kills player)
G_LIM = 4
The YSF_VERSION must match your YSFlight server version. Incorrect version configuration will cause connection issues.
Set VIA_VERSION = True to allow clients from different YSFlight versions (post-20150425) to connect.
3

Start the proxy server

Run the proxy:
python proxy.py
You should see:
INFO: Welcome to Sakuya AC
INFO: Perfect and Elegant Proxy for your YSFlight Server
INFO: Proxy server listening on port 9000
On Linux systems, Sakuya AC will automatically use uvloop if available for better I/O performance. Install it with pip install uvloop.
4

Connect with YSFlight client

Point your YSFlight client to the proxy instead of the server:
  • Proxy address: 127.0.0.1:9000 (or your proxy host and PROXY_PORT)
  • NOT: Your original server address
The proxy will forward all traffic to your configured YSFlight server.
5

Verify it's working

When a player connects, you’ll see logs like:
INFO [proxy.py:169]: Player Sakuya connected from 192.168.1.100
INFO [proxy.py:254]: Sakuya has spawned an aircraft
Players will receive a welcome message in-game:
Welcome Sakuya to the server!

What’s happening?

Sakuya AC acts as a transparent proxy:
┌─────────────┐         ┌──────────────┐         ┌────────────┐
│   YSFlight  │ ──────> │   Sakuya AC  │ ──────> │  YSFlight  │
│   Client    │ <────── │    Proxy     │ <────── │   Server   │
└─────────────┘         └──────────────┘         └────────────┘
   Port 9000              Intercepts &             Port 7915
                         modifies packets
The proxy:
  1. Accepts client connections on PROXY_PORT
  2. Connects to your YSFlight server at SERVER_HOST:SERVER_PORT
  3. Intercepts and parses all packets
  4. Enforces G-limits, detects cheats, and applies features
  5. Forwards modified packets to client and server

Next steps

Customize configuration

Configure G-limits, welcome messages, smoke effects, and more

Enable Discord sync

Sync in-game chat with Discord channels

Install plugins

Extend Sakuya AC with community plugins

Build a plugin

Create custom server-side features

Common issues

Clients can’t connect to proxy

  • Check that PROXY_PORT is not blocked by firewall
  • Verify proxy is listening on 0.0.0.0 (all interfaces) in proxy.py:370
  • Ensure no other service is using the proxy port

Proxy can’t connect to YSFlight server

  • Verify SERVER_HOST and SERVER_PORT in config.py
  • Check that YSFlight server is running
  • Test direct connection to server first

Version mismatch errors

  • Set YSF_VERSION in config.py to match your server version exactly
  • Enable VIA_VERSION = True to support multiple client versions
  • Check logs for version information: proxy.py:172
For debugging, set LOGGING_LEVEL = DEBUG in config.py and check the console output.

Build docs developers (and LLMs) love