# madushan996/ceylondemon architecture

> Architecture diagram of the GitHub repository madushan996/ceylondemon, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/madushan996/ceylondemon
- Repository: https://github.com/madushan996/ceylondemon
- Video tour (about a minute): https://gitdiagram.com/madushan996/ceylondemon/video

## Overview

CeylonDemon is a UCI chess engine used through a chess GUI. The main workflow is for a GUI to send position and search commands; the engine maintains the board, searches candidate moves, evaluates positions with the dual-frame Resonance network, and reports a move. The graph also shows the network’s accumulator and feature-processing layer. Source excerpts are partial, so uncertain protocol-output and internal search links are omitted.

Main entry points: [`src/main.cpp`](https://github.com/madushan996/ceylondemon/blob/main/src/main.cpp) (UCI Engine), [`src/search.h`](https://github.com/madushan996/ceylondemon/blob/main/src/search.h) (Search and Time), [`src/position.h`](https://github.com/madushan996/ceylondemon/blob/main/src/position.h) (Position and Moves), [`src/resonance_acc.h`](https://github.com/madushan996/ceylondemon/blob/main/src/resonance_acc.h) (Feature Accumulators)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_protocol["UCI and Position"]
  node_engine["UCI Engine<br/>[main.cpp]"]
  node_position["Position and Moves<br/>[position.h]"]
end

subgraph group_search["Move Search"]
  node_search["Search and Time<br/>[search.h]"]
  node_tuning["Search Tuning<br/>[tune.h]"]
end

subgraph group_evaluation["Resonance Evaluation"]
  node_evaluation["Evaluation Entry<br/>[eval.h]"]
  node_network["Resonance Network<br/>[resonance_net.h]"]
  node_loader["Network Loading<br/>[resonance_net.h]"]
  node_embedded["Embedded Weights"]
  node_asset["Resonance v12 Weights"]
  node_accumulator["Feature Accumulators<br/>[resonance_acc.h]"]
  node_features["Feature Encoding"]
end

subgraph group_foundation["Chess and Compute"]
  node_simd["SIMD Kernels<br/>[resonance_simd.h]"]
  node_chesscore["Chess Primitives<br/>[types.h]"]
end

node_gui(("Chess GUI"))

node_gui -->|"sends UCI commands"| node_engine
node_engine -->|"sets position"| node_position
node_engine -->|"starts search"| node_search
node_engine -->|"loads weights"| node_loader
node_search -->|"generates and applies moves"| node_position
node_search -->|"scores positions"| node_evaluation
node_search -->|"uses parameters"| node_tuning
node_position -->|"updates features"| node_accumulator
node_position -->|"uses chess primitives"| node_chesscore
node_evaluation -->|"evaluates position"| node_network
node_network -->|"reads accumulators"| node_accumulator
node_network -->|"runs kernels"| node_simd
node_accumulator -->|"indexes pieces"| node_features
node_accumulator -->|"updates vectors"| node_simd
node_loader -->|"reads embedded data"| node_embedded
node_embedded -->|"embeds weights"| node_asset

click node_engine "https://github.com/madushan996/ceylondemon/blob/main/src/main.cpp"
click node_position "https://github.com/madushan996/ceylondemon/blob/main/src/position.h"
click node_search "https://github.com/madushan996/ceylondemon/blob/main/src/search.h"
click node_evaluation "https://github.com/madushan996/ceylondemon/blob/main/src/eval.h"
click node_network "https://github.com/madushan996/ceylondemon/blob/main/src/resonance_net.h"
click node_loader "https://github.com/madushan996/ceylondemon/blob/main/src/resonance_net.h"
click node_embedded "https://github.com/madushan996/ceylondemon/blob/main/src/resonance_embedded.h"
click node_asset "https://github.com/madushan996/ceylondemon/blob/main/networks/ceylondemon-3.1-resonance-v12-400m-full-scratch-e8.aa"
click node_accumulator "https://github.com/madushan996/ceylondemon/blob/main/src/resonance_acc.h"
click node_features "https://github.com/madushan996/ceylondemon/blob/main/src/resonance_features.h"
click node_simd "https://github.com/madushan996/ceylondemon/blob/main/src/resonance_simd.h"
click node_chesscore "https://github.com/madushan996/ceylondemon/blob/main/src/types.h"
click node_tuning "https://github.com/madushan996/ceylondemon/blob/main/src/tune.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_engine,node_position,node_gui toneBlue
class node_search,node_tuning toneAmber
class node_evaluation,node_network,node_loader,node_embedded,node_asset,node_accumulator,node_features toneMint
class node_simd,node_chesscore toneRose
```

## Components

### UCI and Position

- [UCI Engine](https://github.com/madushan996/ceylondemon/blob/main/src/main.cpp): `src/main.cpp`
- [Position and Moves](https://github.com/madushan996/ceylondemon/blob/main/src/position.h): `src/position.h`

### Move Search

- [Search and Time](https://github.com/madushan996/ceylondemon/blob/main/src/search.h): `src/search.h`
- [Search Tuning](https://github.com/madushan996/ceylondemon/blob/main/src/tune.h): `src/tune.h`

### Resonance Evaluation

- [Evaluation Entry](https://github.com/madushan996/ceylondemon/blob/main/src/eval.h): `src/eval.h`
- [Resonance Network](https://github.com/madushan996/ceylondemon/blob/main/src/resonance_net.h): `src/resonance_net.h`
- [Network Loading](https://github.com/madushan996/ceylondemon/blob/main/src/resonance_net.h): `src/resonance_net.h`
- [Embedded Weights](https://github.com/madushan996/ceylondemon/blob/main/src/resonance_embedded.h): `src/resonance_embedded.h`
- [Resonance v12 Weights](https://github.com/madushan996/ceylondemon/blob/main/networks/ceylondemon-3.1-resonance-v12-400m-full-scratch-e8.aa): `networks/ceylondemon-3.1-resonance-v12-400m-full-scratch-e8.aa`
- [Feature Accumulators](https://github.com/madushan996/ceylondemon/blob/main/src/resonance_acc.h): `src/resonance_acc.h`
- [Feature Encoding](https://github.com/madushan996/ceylondemon/blob/main/src/resonance_features.h): `src/resonance_features.h`

### Chess and Compute

- [SIMD Kernels](https://github.com/madushan996/ceylondemon/blob/main/src/resonance_simd.h): `src/resonance_simd.h`
- [Chess Primitives](https://github.com/madushan996/ceylondemon/blob/main/src/types.h): `src/types.h`

### Other components

- **Chess GUI**

## Connections

- Chess GUI → UCI Engine: sends UCI commands
- UCI Engine → Position and Moves: sets position
- UCI Engine → Search and Time: starts search
- UCI Engine → Network Loading: loads weights
- Search and Time → Position and Moves: generates and applies moves
- Search and Time → Evaluation Entry: scores positions
- Search and Time → Search Tuning: uses parameters
- Position and Moves → Feature Accumulators: updates features
- Position and Moves → Chess Primitives: uses chess primitives
- Evaluation Entry → Resonance Network: evaluates position
- Resonance Network → Feature Accumulators: reads accumulators
- Resonance Network → SIMD Kernels: runs kernels
- Feature Accumulators → Feature Encoding: indexes pieces
- Feature Accumulators → SIMD Kernels: updates vectors
- Network Loading → Embedded Weights: reads embedded data
- Embedded Weights → Resonance v12 Weights: embeds weights
