Skip to content

Instantly share code, notes, and snippets.

@antaz
Created February 18, 2023 21:52
Show Gist options
  • Select an option

  • Save antaz/9c6be3b4d8cea8f79050ced48154531e to your computer and use it in GitHub Desktop.

Select an option

Save antaz/9c6be3b4d8cea8f79050ced48154531e to your computer and use it in GitHub Desktop.
Universal Chess Interface (UCI) Specification
Title Author Date
Universal Chess Interface Specification
blocr
Feb 18, 2023

Universal Chess Interface Specification

Introduction

The Universal Chess Interface (UCI) is a communication protocol used between chess engines and chess user interfaces (GUI). UCI was created and first release in November 2000 by Rudolf Huber and Stefan Meyer-Kahlen

Move format

Moves are written in long algebraic notation

Long Algebraic Notation (LAN)

Long Algebraic Notation specify both the starting and ending square

e2e4

move the piece from the square e2 to the square e4

f3g5

move the piece from the square f3 to the square g5

Engine

  • uci
  • debug [on|off]
  • isready
  • setoption name [value]
  • register
  • ucinewgame
  • position [fen|startpos] moves ...
  • go
    • ponder
    • wtime
    • btime
    • winc
    • binc
    • movestogo
    • depth
    • nodes
    • mate
    • infinite
  • stop
  • ponderhit
  • quit

User Interface

  • id
    • name
    • author
  • uciok
  • readyok
  • bestmove [ponder]
  • copyprotection
  • registration
  • info
    • depth
    • seldepth
    • time
    • nodes
    • pv
    • multipv
    • score
      • cp
      • mate
      • lowerbound
      • upperbound
    • currmove
    • currmovenumber
    • hashfull
    • nps
    • tbhits
    • cpuload
    • string
    • refutation
    • currline
  • option
    • name
    • type
    • default
    • min
    • max
    • var

Examples

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment