# anyel1to/atsmatrix-tape architecture

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

- Interactive diagram: https://gitdiagram.com/anyel1to/atsmatrix-tape
- Repository: https://github.com/anyel1to/atsmatrix-tape

## Overview

ATSMATRIX TAPE is a paper-trading desk for an invented market, with a browser experience and an offline simulation-to-visualization workflow. The browser app simulates prices, computes a signal, and manages a local paper account; the offline C++ engine writes tape data and raster frames, Rust derives signal rows, and Python composites visual outputs. README-documented agent radar capabilities are included. Some browser and radar implementation details are unsampled, so their connections rely on README evidence.

Main entry points: [`viz/desk.py`](https://github.com/anyel1to/atsmatrix-tape/blob/main/viz/desk.py) (Frame compositor), [`engine/tape.cpp`](https://github.com/anyel1to/atsmatrix-tape/blob/main/engine/tape.cpp) (Tape simulator), [`signal/src/main.rs`](https://github.com/anyel1to/atsmatrix-tape/blob/main/signal/src/main.rs) (Signal desk), [`desk.js`](https://github.com/anyel1to/atsmatrix-tape/blob/main/desk.js) (Paper desk app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browser["Browser Desk"]
  node_desk["Paper desk app<br/>[desk.js]"]
end

subgraph group_simulation["Tape Simulation"]
  node_cpp["Tape simulator<br/>[tape.cpp]"]
  node_tape["Tape CSV"]
  node_raster["Frame rasterizer<br/>[tape.cpp]"]
  node_frames["PPM frames"]
end

subgraph group_signal["Signal Analysis"]
  node_rust["Signal desk<br/>[main.rs]"]
  node_signals["Signal CSV"]
end

subgraph group_visualization["Offline Visualization"]
  node_compositor["Frame compositor<br/>[desk.py]"]
  node_radar["Agent radar<br/>[desk.py]"]
  node_artifacts["Desk imagery"]
end

node_visitor(("Desk visitor"))
node_atsmatrix(("atsmatrix.com"))

node_visitor -->|"uses"| node_desk
node_cpp -->|"writes"| node_tape
node_cpp -->|"writes"| node_frames
node_cpp -->|"renders"| node_raster
node_rust -->|"reads"| node_tape
node_rust -->|"writes"| node_signals
node_compositor -->|"reads"| node_signals
node_compositor -->|"reads"| node_tape
node_compositor -->|"loads"| node_frames
node_compositor -->|"composes"| node_artifacts
node_compositor -->|"draws"| node_radar
node_visitor -->|"views"| node_radar
node_atsmatrix -.->|"hosts custom bots"| node_radar

click node_desk "https://github.com/anyel1to/atsmatrix-tape/blob/main/desk.js"
click node_cpp "https://github.com/anyel1to/atsmatrix-tape/blob/main/engine/tape.cpp"
click node_raster "https://github.com/anyel1to/atsmatrix-tape/blob/main/engine/tape.cpp"
click node_rust "https://github.com/anyel1to/atsmatrix-tape/blob/main/signal/src/main.rs"
click node_compositor "https://github.com/anyel1to/atsmatrix-tape/blob/main/viz/desk.py"
click node_radar "https://github.com/anyel1to/atsmatrix-tape/blob/main/viz/desk.py"

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_desk toneBlue
class node_cpp,node_tape,node_raster,node_frames toneAmber
class node_rust,node_signals toneMint
class node_compositor,node_radar,node_artifacts toneRose
class node_visitor,node_atsmatrix toneIndigo
```

## Components

### Browser Desk

- [Paper desk app](https://github.com/anyel1to/atsmatrix-tape/blob/main/desk.js): `desk.js`

### Tape Simulation

- [Tape simulator](https://github.com/anyel1to/atsmatrix-tape/blob/main/engine/tape.cpp): `engine/tape.cpp`
- **Tape CSV**
- [Frame rasterizer](https://github.com/anyel1to/atsmatrix-tape/blob/main/engine/tape.cpp): `engine/tape.cpp`
- **PPM frames**

### Signal Analysis

- [Signal desk](https://github.com/anyel1to/atsmatrix-tape/blob/main/signal/src/main.rs): `signal/src/main.rs`
- **Signal CSV**

### Offline Visualization

- [Frame compositor](https://github.com/anyel1to/atsmatrix-tape/blob/main/viz/desk.py): `viz/desk.py`
- [Agent radar](https://github.com/anyel1to/atsmatrix-tape/blob/main/viz/desk.py): `viz/desk.py`
- **Desk imagery**

### Other components

- **Desk visitor**
- **atsmatrix.com**

## Connections

- Desk visitor → Paper desk app: uses (evidence: `README.md`)
- Tape simulator → Tape CSV: writes (evidence: `engine/tape.cpp`)
- Tape simulator → PPM frames: writes (evidence: `engine/tape.cpp`)
- Tape simulator → Frame rasterizer: renders (evidence: `engine/tape.cpp`)
- Signal desk → Tape CSV: reads (evidence: `signal/src/main.rs`)
- Signal desk → Signal CSV: writes (evidence: `signal/src/main.rs`)
- Frame compositor → Signal CSV: reads (evidence: `viz/desk.py`)
- Frame compositor → Tape CSV: reads (evidence: `viz/desk.py`)
- Frame compositor → PPM frames: loads (evidence: `viz/desk.py`)
- Frame compositor → Desk imagery: composes (evidence: `viz/desk.py`)
- Frame compositor → Agent radar: draws (evidence: `viz/desk.py`)
- Desk visitor → Agent radar: views (evidence: `README.md`)
- atsmatrix.com → Agent radar: hosts custom bots (evidence: `README.md`)
