How dhg14n9/mythos works
Mythos is a Rust chess engine exposed through UCI, with a search-and-evaluation runtime and a separate PGN-to-training-position data generator. The main binary dispatches ordinary use to the UCI runner; sampled search code uses board state, move selection, NNUE evaluation, and search tables. The README documents GUI compatibility, but the UCI implementation and several subsystems were not sampled, so internal links from that runner are omitted. The training tool’s parsing and conversion dispatch are visible in its entry point; deeper module wiring is not assumed.
Main entry points: search.rs Search · mod.rs NNUE evaluation · accumulator.rs Feature accumulator · main.rs Data generator
Components 19
Engine interface
- Engine binary
src/main.rs - UCI runner
src/uci.rs
Chess runtime
- Board state
src/board/board.rs - Move generation
src/board/movegen.rs - Attack lookup
src/board/lookup.rs - Chess types
src/types/mod.rs
Search and evaluation
- Search
src/search.rs - Move picker
src/movepicker.rs - NNUE evaluation
src/nnue/mod.rs - Network inference
src/nnue/network.rs - Feature accumulator
src/nnue/accumulator.rs - Search tables
src/tables.rs - Search parameters
src/tunables.rs
Training data
- Data generator
datagen/src/main.rs - PGN reader
datagen/src/pgn.rs - Game conversion
datagen/src/convert.rs - SAN parsing
datagen/src/san.rs
Other components
- Chess GUI
- PGN input
Connections 16
- Chess GUI → Engine binary: starts engine
- Engine binary → UCI runner: runs UCI
- UCI runner → Chess GUI: UCI output
- Board state → Attack lookup: queries attacks
- Search → Board state: updates positions
- Search → Move picker: selects moves
- Search → NNUE evaluation: evaluates positions
- Search → Search tables: uses search state
- Search → Search parameters: reads parameters
- NNUE evaluation → Network inference: evaluates with
- NNUE evaluation → Feature accumulator: materializes features
- Feature accumulator → Network inference: reads weights
- Feature accumulator → Board state: reads position
- PGN input → Data generator: provides games
- Data generator → PGN reader: reads games
- Data generator → Game conversion: converts games