# lune-org/lune architecture

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

- Interactive diagram: https://gitdiagram.com/lune-org/lune
- Repository: https://github.com/lune-org/lune

## Overview

Lune is a standalone Luau runtime with a command-line runner and asynchronous standard libraries. The main workflow is a user launching a Luau program through the CLI, which runs it in the runtime and exposes standard APIs. Separate capabilities include filesystem, networking, process, terminal I/O, scheduling, and optional Roblox document and instance support. The graph uses the README for documented capabilities and sampled files for concrete wiring; unsampled subsystems are represented only at supported directory paths.

Main entry points: [`crates/lune-std/src/library.rs`](https://github.com/lune-org/lune/blob/main/crates/lune-std/src/library.rs) (Standard library setup), [`crates/lune-std-roblox/src/lib.rs`](https://github.com/lune-org/lune/blob/main/crates/lune-std-roblox/src/lib.rs) (Roblox API), [`crates/lune-roblox/src/instance/mod.rs`](https://github.com/lune-org/lune/blob/main/crates/lune-roblox/src/instance/mod.rs) (Roblox instances), [`crates/lune/src/cli/run.rs`](https://github.com/lune-org/lune/blob/main/crates/lune/src/cli/run.rs) (CLI commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Program execution"]
  node_cli["CLI commands<br/>[run.rs]"]
  node_entry["Executable entry<br/>[main.rs]"]
  node_runtime["Luau runtime<br/>[runtime.rs]"]
  node_std_registry["Standard library setup<br/>[library.rs]"]
end

subgraph group_stdlib["Standard libraries"]
  node_fs["Filesystem API<br/>[lib.rs]"]
  node_net["Network API<br/>[lib.rs]"]
  node_net_server["HTTP server<br/>[service.rs]"]
  node_process["Process API<br/>[lib.rs]"]
  node_stdio["Terminal I/O<br/>[lib.rs]"]
  node_datetime["Date and time<br/>[lib.rs]"]
  node_regex["Regex API<br/>[lib.rs]"]
  node_serde["Encoding and hashing<br/>[lib.rs]"]
  node_luau["Luau helpers<br/>[lib.rs]"]
end

subgraph group_async["Async scheduling"]
  node_task["Task API<br/>[lib.rs]"]
  node_scheduler["Coroutine scheduler<br/>[scheduler.rs]"]
end

subgraph group_roblox["Roblox support"]
  node_roblox_api["Roblox API<br/>[lib.rs]"]
  node_document["Place and model documents<br/>[mod.rs]"]
  node_instances["Roblox instances<br/>[mod.rs]"]
  node_query["Instance queries<br/>[mod.rs]"]
end

node_user(("Script user"))

node_user -->|"launches"| node_entry
node_entry -->|"dispatches"| node_cli
node_cli -->|"runs program"| node_runtime
node_runtime -->|"sets up"| node_std_registry
node_std_registry -->|"registers"| node_fs
node_std_registry -->|"registers"| node_net
node_std_registry -->|"registers"| node_process
node_std_registry -->|"registers"| node_stdio
node_std_registry -->|"registers"| node_datetime
node_std_registry -->|"registers"| node_regex
node_std_registry -->|"registers"| node_serde
node_std_registry -->|"registers"| node_luau
node_std_registry -->|"registers"| node_task
node_task -->|"uses"| node_scheduler
node_net_server -->|"dispatches handlers"| node_scheduler
node_net -->|"serves requests"| node_net_server
node_std_registry -.->|"registers"| node_roblox_api
node_roblox_api -->|"decodes and encodes"| node_document
node_roblox_api -->|"converts to Lua"| node_instances
node_document -->|"creates instances"| node_instances
node_instances -->|"supports queries"| node_query

click node_cli "https://github.com/lune-org/lune/blob/main/crates/lune/src/cli/run.rs"
click node_entry "https://github.com/lune-org/lune/blob/main/crates/lune/src/main.rs"
click node_runtime "https://github.com/lune-org/lune/blob/main/crates/lune/src/rt/runtime.rs"
click node_std_registry "https://github.com/lune-org/lune/blob/main/crates/lune-std/src/library.rs"
click node_fs "https://github.com/lune-org/lune/blob/main/crates/lune-std-fs/src/lib.rs"
click node_net "https://github.com/lune-org/lune/blob/main/crates/lune-std-net/src/lib.rs"
click node_net_server "https://github.com/lune-org/lune/blob/main/crates/lune-std-net/src/server/service.rs"
click node_process "https://github.com/lune-org/lune/blob/main/crates/lune-std-process/src/lib.rs"
click node_stdio "https://github.com/lune-org/lune/blob/main/crates/lune-std-stdio/src/lib.rs"
click node_datetime "https://github.com/lune-org/lune/blob/main/crates/lune-std-datetime/src/lib.rs"
click node_regex "https://github.com/lune-org/lune/blob/main/crates/lune-std-regex/src/lib.rs"
click node_serde "https://github.com/lune-org/lune/blob/main/crates/lune-std-serde/src/lib.rs"
click node_luau "https://github.com/lune-org/lune/blob/main/crates/lune-std-luau/src/lib.rs"
click node_task "https://github.com/lune-org/lune/blob/main/crates/lune-std-task/src/lib.rs"
click node_scheduler "https://github.com/lune-org/lune/blob/main/crates/mlua-luau-scheduler/src/scheduler.rs"
click node_roblox_api "https://github.com/lune-org/lune/blob/main/crates/lune-std-roblox/src/lib.rs"
click node_document "https://github.com/lune-org/lune/blob/main/crates/lune-roblox/src/document/mod.rs"
click node_instances "https://github.com/lune-org/lune/blob/main/crates/lune-roblox/src/instance/mod.rs"
click node_query "https://github.com/lune-org/lune/blob/main/crates/lune-roblox/src/instance/query/mod.rs"

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_cli,node_entry,node_runtime,node_std_registry,node_user toneBlue
class node_fs,node_net,node_net_server,node_process,node_stdio,node_datetime,node_regex,node_serde,node_luau toneAmber
class node_task,node_scheduler toneMint
class node_roblox_api,node_document,node_instances,node_query toneRose
```

## Components

### Program execution

- [CLI commands](https://github.com/lune-org/lune/blob/main/crates/lune/src/cli/run.rs): `crates/lune/src/cli/run.rs`
- [Executable entry](https://github.com/lune-org/lune/blob/main/crates/lune/src/main.rs): `crates/lune/src/main.rs`
- [Luau runtime](https://github.com/lune-org/lune/blob/main/crates/lune/src/rt/runtime.rs): `crates/lune/src/rt/runtime.rs`
- [Standard library setup](https://github.com/lune-org/lune/blob/main/crates/lune-std/src/library.rs): `crates/lune-std/src/library.rs`

### Standard libraries

- [Filesystem API](https://github.com/lune-org/lune/blob/main/crates/lune-std-fs/src/lib.rs): `crates/lune-std-fs/src/lib.rs`
- [Network API](https://github.com/lune-org/lune/blob/main/crates/lune-std-net/src/lib.rs): `crates/lune-std-net/src/lib.rs`
- [HTTP server](https://github.com/lune-org/lune/blob/main/crates/lune-std-net/src/server/service.rs): `crates/lune-std-net/src/server/service.rs`
- [Process API](https://github.com/lune-org/lune/blob/main/crates/lune-std-process/src/lib.rs): `crates/lune-std-process/src/lib.rs`
- [Terminal I/O](https://github.com/lune-org/lune/blob/main/crates/lune-std-stdio/src/lib.rs): `crates/lune-std-stdio/src/lib.rs`
- [Date and time](https://github.com/lune-org/lune/blob/main/crates/lune-std-datetime/src/lib.rs): `crates/lune-std-datetime/src/lib.rs`
- [Regex API](https://github.com/lune-org/lune/blob/main/crates/lune-std-regex/src/lib.rs): `crates/lune-std-regex/src/lib.rs`
- [Encoding and hashing](https://github.com/lune-org/lune/blob/main/crates/lune-std-serde/src/lib.rs): `crates/lune-std-serde/src/lib.rs`
- [Luau helpers](https://github.com/lune-org/lune/blob/main/crates/lune-std-luau/src/lib.rs): `crates/lune-std-luau/src/lib.rs`

### Async scheduling

- [Task API](https://github.com/lune-org/lune/blob/main/crates/lune-std-task/src/lib.rs): `crates/lune-std-task/src/lib.rs`
- [Coroutine scheduler](https://github.com/lune-org/lune/blob/main/crates/mlua-luau-scheduler/src/scheduler.rs): `crates/mlua-luau-scheduler/src/scheduler.rs`

### Roblox support

- [Roblox API](https://github.com/lune-org/lune/blob/main/crates/lune-std-roblox/src/lib.rs): `crates/lune-std-roblox/src/lib.rs`
- [Place and model documents](https://github.com/lune-org/lune/blob/main/crates/lune-roblox/src/document/mod.rs): `crates/lune-roblox/src/document/mod.rs`
- [Roblox instances](https://github.com/lune-org/lune/blob/main/crates/lune-roblox/src/instance/mod.rs): `crates/lune-roblox/src/instance/mod.rs`
- [Instance queries](https://github.com/lune-org/lune/blob/main/crates/lune-roblox/src/instance/query/mod.rs): `crates/lune-roblox/src/instance/query/mod.rs`

### Other components

- **Script user**

## Connections

- Script user → Executable entry: launches
- Executable entry → CLI commands: dispatches
- CLI commands → Luau runtime: runs program
- Luau runtime → Standard library setup: sets up
- Standard library setup → Filesystem API: registers
- Standard library setup → Network API: registers
- Standard library setup → Process API: registers
- Standard library setup → Terminal I/O: registers
- Standard library setup → Date and time: registers
- Standard library setup → Regex API: registers
- Standard library setup → Encoding and hashing: registers
- Standard library setup → Luau helpers: registers
- Standard library setup → Task API: registers
- Task API → Coroutine scheduler: uses
- HTTP server → Coroutine scheduler: dispatches handlers
- Network API → HTTP server: serves requests
- Standard library setup → Roblox API: registers
- Roblox API → Place and model documents: decodes and encodes
- Roblox API → Roblox instances: converts to Lua
- Place and model documents → Roblox instances: creates instances
- Roblox instances → Instance queries: supports queries
