Getting Started

What is Saba-chan?

Saba-chan (サバちゃん / 사바쨩) is a modular game server management platform that lets you manage multiple servers from a single interface.

The name is a Japanese wordplay — "server" (サーバー) sounds like "mackerel" (鯖, さば).

Note: This project has no affiliation with any VTuber who may share the same nickname. We're just a fish.

Key Features

  • Multi-game support — Palworld, Minecraft, Project Zomboid, and infinitely extensible via modules
  • Dual interface — Electron GUI desktop app + Rust TUI CLI
  • Discord bot — Control servers from Discord chat
  • Module system — Python-based lifecycle modules; no core recompilation needed
  • Extension system — Docker isolation, SteamCMD automation, and more
  • Cloud relay — Remote access via secure relay server (no port forwarding needed)
  • Auto-detection — Automatically detects running game servers
  • Auto-update — GitHub Releases–based update system
  • 10 languages — Full localization across all components
  • Crash-safe — Daemon crash doesn't affect running game servers

System Requirements

ItemRequirement
OSWindows 10 / 11
RustLatest stable (source build only)
Node.js18.0+ (GUI & Discord bot)
Python3.x (module lifecycle execution)
Disk500MB minimum (excluding game servers)
NetworkGame server ports must be open

Note: When using the installer, Rust is not required. Python and Node.js are automatically bootstrapped as portable environments.


Installation

  1. Download the latest installer from GitHub Releases or the home page.
  2. Run saba-installer.exe and choose your installation directory.
  3. The installer bundles everything — no external dependencies required. Portable runtimes are used that don't touch your system PATH or registry.

Building from Source

git clone https://github.com/WareAoba/saba-chan.git
cd saba-chan

Full Build (Windows PowerShell)

.\scripts\build-windows.ps1

This runs 3 build tasks in parallel:

  1. Rust workspacecargo build --release --workspacesaba-core.exe, saba-chan-cli.exe, saba-chan-updater.exe
  2. Electron GUInpm run buildnpm run package
  3. Discord Botnpm install --omit=dev → directory copy

Individual Builds

# Core Daemon only
cargo build --release

# GUI development mode
cd saba-chan-gui && npm install && npm start

# CLI only
cargo build --release -p saba-chan-cli

Quick Start

Step 1: Launch Saba-chan

Run the GUI (Saba-chan.exe) or CLI (saba-chan-cli.exe). The Core Daemon starts automatically.

Step 2: Create an Instance

  • GUI: Click "+ Add Server"
  • CLI: Enter :instance create

Choose your game and provide a name, executable path, and working directory.

Step 3: Configure

Set ports, RCON/REST passwords (auto-generated if enabled), and game-specific settings.

Step 4: Start the Server

  • GUI: Click the ▶ button on the server card
  • CLI: Select the server and start it

Step 5: Monitor

  • Real-time server status and console output
  • Optional remote control via Discord bot

Architecture Overview

┌─────────────────┐     HTTP API      ┌──────────────────┐
│  Electron GUI   │ ◄───────────────► │   Core Daemon    │
│  (React 18)     │   127.0.0.1:57474 │   (Rust/Axum)    │
└─────────────────┘                   └────────┬─────────┘
                                               │
┌─────────────────┐     HTTP API               │
│   CLI (TUI)     │ ◄─────────────────────────►│
│  (Ratatui)      │                            │
└─────────────────┘                  ┌─────────┴──────────┐
                                     │                    │
┌─────────────────┐           ┌──────▼──────┐     ┌──────▼──────┐
│  Discord Bot    │           │   Modules   │     │  Extensions │
│  (discord.js)   │           │  (per game) │     │ (Docker etc)│
└─────────────────┘           └─────────────┘     └─────────────┘

All logic flows through the Core Daemon. Interfaces communicate only via HTTP REST API — never touching files or processes directly.

Communication

  • Daemon ↔ GUI/CLI: HTTP REST on 127.0.0.1:57474, authenticated via .ipc_token
  • Daemon ↔ Modules: stdin JSON → stdout JSON
  • Client Watchdog: Heartbeat every 30s; daemon shuts down 60s after all clients disconnect

Next Steps