Skip to content

Phira-mp+ CLI Command Reference ​

Startup Arguments ​

phira-mp-plus-server [OPTIONS]

  -p, --port <PORT>          Server listen port [default: 12346]
  -d, --plugins-dir <DIR>    WASM plugin directory path [default: "plugins"]
  -e, --ext-file <FILE>      Extension data persistence JSON file path [default: "data/extensions.json"]
      --no-cli               Disable interactive CLI management console
  -l, --log-file <NAME>      Log file base name [default: "phira-mp-plus"]
  -m, --monitor <IDS>...     Phira user IDs allowed to spectate (can be specified multiple times, e.g. `-m 1 -m 2`)
      --http-port <PORT>     HTTP/SSE service port [default: 12347]
  -c, --config <FILE>        YAML config file path [default: "server_config.yml"]
  -h, --help                 Show help information
  -V, --version              Show version number

Configuration loading order (later overrides earlier): YAML config file < Environment variables < CLI arguments.

Interactive Management Console ​

The server starts a ratatui management console in regular interactive terminals and tmux. GNU Screen environment automatically switches to line-by-line compatible console, without color, alternate screen, mouse, or Bracketed Paste control sequences; redirect, systemd, and other non-TTY environments also use the line-by-line console. Set NO_COLOR to disable colors in other terminals.

Command List ​

General Commands ​

CommandAliasDescription
helph, ?Show help information
exitquit, qShut down the server
statusstShow server status

Plugin Management (WASM) ​

CommandDescription
plugin listList all loaded WASM plugins
plugin enable <name>Enable the specified plugin
plugin disable <name>Disable the specified plugin
plugin info <name>Show plugin details
plugin reloadReload all WASM plugins

User Management ​

CommandDescription
usersList online users
kick <user ID>Kick user from the server
kick <room ID> <user ID>Kick user from a room
broadcast [scope] <message>Broadcast a message
broadcast Scopes ​
broadcast all <message>            Broadcast to all users
broadcast room <room ID> <message>  Broadcast to the specified room
broadcast user <user ID> <message>  Send to the specified user

Room Management (room subcommand) ​

CommandDescription
rooms / room listList active rooms
room info <room ID>Room details (status, host, chart, history)
room start <room ID>Force start the game
room cancel <room ID>Cancel ready state
room kick <room ID> <user ID>Kick user from room
room transfer <room ID> <user ID>Transfer room host
room set <room ID> <field> <value>Modify room settings (lock/cycle/chart-id)
room close <room ID>Disband room
room history <room ID>View play history
room ban <room ID> <user ID>Add user to room blacklist
room unban <room ID> <user ID>Remove user from room blacklist
room banlist <room ID>Room blacklist

Compatible old aliases: rooms, room-info / ri, room-start / rs, room-cancel / rc, room-transfer / rt, room-history / rh, close-room / cr, room-ban / rb, room-unban / ru, room-banlist / rbl

Ban Management ​

CommandDescription
ban <user ID> [reason]Ban user
unban <user ID>Unban user
banlistList banned users

Extension Data ​

CommandDescription
ext-listList all registered extension data fields
ext-get <ID> <key>Get extension data for a specified user/room

Web API ​

The central HTTP/SSE server listens on the configured --http-port (default 12347).

EndpointDescription
GET /api/roomsRoom list (with details)
GET /api/rooms/{name}Specified room info
GET /api/user_name/{id}User name lookup
GET /api/players/countOnline player count
GET /api/eventsUnified SSE endpoint
GET /rooms/listenSSE room event stream (web-monitor compatible)
GET /ws/liveWebSocket real-time monitoring (web-monitor compatible)

Detailed API documentation can be found at api.md.

WASM Plugin System ​

The server supports loading .wasm plugins via wasmtime. Plugins should be placed in the plugins/ directory (can be customized with -d). Plugins access all server capabilities through phira:host/api imported functions:

  • Status queries: rooms.list, player.touches, round.data, etc.
  • Message sending: send.to_user, send.to_room, send.to_all
  • Room management: room.kick, room.transfer_host, room.set_lock, room.close
  • User management: admin.kick_user, admin.ban_user, admin.unban_user, admin.is_banned
  • Plugin interop: plugin.api_call, plugin.api_register
  • Data read/write: ext.get/set, config.get/set, file.read/write
  • HTTP requests: http.get/post

See wit/phira/mpplus.wit for the full interface definition.

Log Files ​

Log files are stored in the log/ directory, rotated hourly.

Log level is controlled via the RUST_LOG environment variable:

bash
RUST_LOG=info phira-mp-plus-server
RUST_LOG=debug phira-mp-plus-server

Last modified byFireflyF09on2026-06-26 15:41

Built with VitePress