# jofpin/turbit architecture

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

- Interactive diagram: https://gitdiagram.com/jofpin/turbit
- Repository: https://github.com/jofpin/turbit

## Overview

Turbit is a small Node.js multicore task-execution library. A caller supplies a function and selects simple execution (replicate the task) or extended execution (process data in chunks); Turbit dispatches work to child processes and returns results with execution statistics. The source excerpt is partial, so the graph omits uncertain internal wiring beyond the documented strategies and visible worker messaging.

Main entry points: [`turbit.js`](https://github.com/jofpin/turbit/blob/main/turbit.js) (Turbit API)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_caller(("Library caller"))
node_task["User task"]
node_data["Input data"]
node_api["Turbit API<br/>[turbit.js]"]
node_core["Process core<br/>[turbit.js]"]
node_strategies["Run strategies<br/>[turbit.js]"]
node_simple["Simple execution<br/>[turbit.js]"]
node_extended["Extended execution<br/>[turbit.js]"]
node_workers["Child processes"]
node_metrics["Execution metrics<br/>[turbit.js]"]
node_result["Results and stats"]

node_caller -->|"calls run"| node_api
node_task -->|"provides function"| node_api
node_data -->|"provides items"| node_api
node_api -->|"selects process count"| node_core
node_api -->|"dispatches type"| node_strategies
node_strategies -->|"selects simple"| node_simple
node_strategies -->|"selects extended"| node_extended
node_core -->|"starts and manages"| node_workers
node_simple -->|"creates tasks"| node_core
node_extended -->|"creates chunk tasks"| node_core
node_core -->|"sends tasks"| node_workers
node_workers -->|"returns results"| node_core
node_simple -->|"requests stats"| node_metrics
node_extended -->|"requests stats"| node_metrics
node_metrics -->|"provides statistics"| node_result
node_strategies -->|"returns output"| node_result
node_caller -->|"calls kill"| node_api

click node_api "https://github.com/jofpin/turbit/blob/main/turbit.js"
click node_core "https://github.com/jofpin/turbit/blob/main/turbit.js"
click node_strategies "https://github.com/jofpin/turbit/blob/main/turbit.js"
click node_simple "https://github.com/jofpin/turbit/blob/main/turbit.js"
click node_extended "https://github.com/jofpin/turbit/blob/main/turbit.js"
click node_metrics "https://github.com/jofpin/turbit/blob/main/turbit.js"

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_caller,node_data,node_workers,node_result toneIndigo
class node_task toneRose
class node_api toneMint
class node_core,node_strategies,node_simple,node_extended,node_metrics toneTeal
```

## Components

### Other components

- **Library caller**
- **User task**
- **Input data**
- [Turbit API](https://github.com/jofpin/turbit/blob/main/turbit.js): `turbit.js`
- [Process core](https://github.com/jofpin/turbit/blob/main/turbit.js): `turbit.js`
- [Run strategies](https://github.com/jofpin/turbit/blob/main/turbit.js): `turbit.js`
- [Simple execution](https://github.com/jofpin/turbit/blob/main/turbit.js): `turbit.js`
- [Extended execution](https://github.com/jofpin/turbit/blob/main/turbit.js): `turbit.js`
- **Child processes**
- [Execution metrics](https://github.com/jofpin/turbit/blob/main/turbit.js): `turbit.js`
- **Results and stats**

## Connections

- Library caller → Turbit API: calls run
- User task → Turbit API: provides function
- Input data → Turbit API: provides items
- Turbit API → Process core: selects process count
- Turbit API → Run strategies: dispatches type
- Run strategies → Simple execution: selects simple
- Run strategies → Extended execution: selects extended
- Process core → Child processes: starts and manages
- Simple execution → Process core: creates tasks
- Extended execution → Process core: creates chunk tasks
- Process core → Child processes: sends tasks
- Child processes → Process core: returns results
- Simple execution → Execution metrics: requests stats
- Extended execution → Execution metrics: requests stats
- Execution metrics → Results and stats: provides statistics
- Run strategies → Results and stats: returns output
- Library caller → Turbit API: calls kill
