# ramkumareinstein/aurora_browser architecture

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

- Interactive diagram: https://gitdiagram.com/ramkumareinstein/aurora_browser
- Repository: https://github.com/ramkumareinstein/aurora_browser

## Overview

Aurora is an experimental Rust browser engine: users load HTML from a string, URL, or fixture, run a partial V8-backed DOM bridge, and produce pixels in a native window or image. The main runtime path loads and parses content, runs page scripts, builds a render document, then lays out and paints. Separate branches cover capability-gated fetching, legacy style/layout compatibility, browser chrome and input, screenshots, fonts, and optional media. The graph uses README statements and shown source references; unsampled implementation details and their internal call edges are not inferred.

Main entry points: [`src/runner/pipeline.rs`](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/runner/pipeline.rs) (Runner pipeline), [`src/fetch/api.rs`](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/fetch/api.rs) (Resource fetch), [`src/blitz_document.rs`](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/blitz_document.rs) (Blitz render document), [`src/js_v8/runtime.rs`](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/js_v8/runtime.rs) (V8 runtime and DOM bridge)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and access"]
  node_api["Embedding API<br/>[api.rs]"]
  node_runner["Runner pipeline<br/>[pipeline.rs]"]
  node_identity["Identity capabilities<br/>[identity.rs]"]
end

subgraph group_document["Document and scripting"]
  node_parser["HTML parser<br/>[parser.rs]"]
  node_dom["Legacy DOM<br/>[node.rs]"]
  node_scripts["Script loading<br/>[scripts.rs]"]
  node_engine["JS runtime seam<br/>[js_engine.rs]"]
  node_v8["V8 runtime and DOM bridge<br/>[runtime.rs]"]
end

subgraph group_presentation["Style and rendering"]
  node_blitz["Blitz render document<br/>[blitz_document.rs]"]
  node_css["CSS parsing and styles<br/>[stylesheet.rs]"]
  node_stylo["Stylo bridge<br/>[impls.rs]"]
  node_legacy_style["Legacy style tree<br/>[node.rs]"]
  node_layout["Legacy layout<br/>[taffy_layout.rs]"]
  node_paint["GPU and headless paint<br/>[headless.rs]"]
end

subgraph group_interaction["Window and capture"]
  node_window["Window and input<br/>[app.rs]"]
  node_chrome["Browser chrome<br/>[dioxus_chrome.rs]"]
  node_screenshots["Screenshot capture<br/>[mod.rs]"]
end

subgraph group_resources["Resource support"]
  node_fetch["Resource fetch<br/>[api.rs]"]
  node_fonts["Font shaping and atlas<br/>[shape.rs]"]
  node_media["Optional media<br/>[media.rs]"]
end

node_user(("User"))
node_network(("HTTP resources"))

node_user -->|"loads page"| node_api
node_user -->|"runs browser"| node_runner
node_api -->|"loads URL"| node_fetch
node_runner -->|"fetches HTML"| node_fetch
node_runner -->|"uses identity"| node_identity
node_fetch -->|"checks access"| node_identity
node_fetch -->|"requests resources"| node_network
node_runner -->|"parses HTML"| node_parser
node_parser -->|"builds tree"| node_dom
node_runner -->|"builds document"| node_blitz
node_runner -->|"runs scripts"| node_scripts
node_scripts -->|"creates runtime"| node_engine
node_engine -->|"constructs backend"| node_v8
node_v8 -->|"bridges DOM"| node_dom
node_v8 -->|"applies mutations"| node_blitz
node_runner -->|"builds stylesheet"| node_css
node_css -.->|"integrates styles"| node_stylo
node_runner -->|"builds compatibility tree"| node_legacy_style
node_legacy_style -.->|"styles layout tree"| node_layout
node_blitz -->|"paints document"| node_paint
node_runner -->|"opens window"| node_window
node_window -->|"shows chrome"| node_chrome
node_window -->|"captures output"| node_screenshots
node_paint -.->|"uses shaping"| node_fonts
node_runner -.->|"provides media support"| node_media
node_blitz -->|"loads subresources"| node_fetch

click node_api "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/api.rs"
click node_runner "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/runner/pipeline.rs"
click node_identity "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/identity.rs"
click node_fetch "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/fetch/api.rs"
click node_parser "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/html/parser.rs"
click node_dom "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/dom/node.rs"
click node_scripts "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/runner/scripts.rs"
click node_engine "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/js_engine.rs"
click node_v8 "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/js_v8/runtime.rs"
click node_blitz "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/blitz_document.rs"
click node_css "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/css/stylesheet.rs"
click node_stylo "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/stylo_bridge/impls.rs"
click node_legacy_style "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/style/node.rs"
click node_layout "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/layout/taffy_layout.rs"
click node_paint "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/render/headless.rs"
click node_window "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/window/app.rs"
click node_chrome "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/window/chrome/dioxus_chrome.rs"
click node_screenshots "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/window/screenshot/mod.rs"
click node_fonts "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/font/shape.rs"
click node_media "https://github.com/ramkumareinstein/aurora_browser/blob/main/src/media.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_api,node_runner,node_identity,node_user toneBlue
class node_parser,node_dom,node_scripts,node_engine,node_v8 toneAmber
class node_blitz,node_css,node_stylo,node_legacy_style,node_layout,node_paint toneMint
class node_window,node_chrome,node_screenshots toneRose
class node_fetch,node_fonts,node_media,node_network toneIndigo
```

## Components

### Entry and access

- [Embedding API](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/api.rs): `src/api.rs`
- [Runner pipeline](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/runner/pipeline.rs): `src/runner/pipeline.rs`
- [Identity capabilities](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/identity.rs): `src/identity.rs`

### Document and scripting

- [HTML parser](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/html/parser.rs): `src/html/parser.rs`
- [Legacy DOM](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/dom/node.rs): `src/dom/node.rs`
- [Script loading](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/runner/scripts.rs): `src/runner/scripts.rs`
- [JS runtime seam](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/js_engine.rs): `src/js_engine.rs`
- [V8 runtime and DOM bridge](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/js_v8/runtime.rs): `src/js_v8/runtime.rs`

### Style and rendering

- [Blitz render document](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/blitz_document.rs): `src/blitz_document.rs`
- [CSS parsing and styles](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/css/stylesheet.rs): `src/css/stylesheet.rs`
- [Stylo bridge](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/stylo_bridge/impls.rs): `src/stylo_bridge/impls.rs`
- [Legacy style tree](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/style/node.rs): `src/style/node.rs`
- [Legacy layout](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/layout/taffy_layout.rs): `src/layout/taffy_layout.rs`
- [GPU and headless paint](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/render/headless.rs): `src/render/headless.rs`

### Window and capture

- [Window and input](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/window/app.rs): `src/window/app.rs`
- [Browser chrome](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/window/chrome/dioxus_chrome.rs): `src/window/chrome/dioxus_chrome.rs`
- [Screenshot capture](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/window/screenshot/mod.rs): `src/window/screenshot/mod.rs`

### Resource support

- [Resource fetch](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/fetch/api.rs): `src/fetch/api.rs`
- [Font shaping and atlas](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/font/shape.rs): `src/font/shape.rs`
- [Optional media](https://github.com/ramkumareinstein/aurora_browser/blob/main/src/media.rs): `src/media.rs`

### Other components

- **User**
- **HTTP resources**

## Connections

- User → Embedding API: loads page (evidence: `README.md`)
- User → Runner pipeline: runs browser (evidence: `README.md`)
- Embedding API → Resource fetch: loads URL (evidence: `README.md`)
- Runner pipeline → Resource fetch: fetches HTML (evidence: `src/runner/pipeline.rs`)
- Runner pipeline → Identity capabilities: uses identity (evidence: `src/runner/pipeline.rs`)
- Resource fetch → Identity capabilities: checks access (evidence: `README.md`)
- Resource fetch → HTTP resources: requests resources (evidence: `README.md`)
- Runner pipeline → HTML parser: parses HTML (evidence: `src/runner/pipeline.rs`)
- HTML parser → Legacy DOM: builds tree (evidence: `src/html/parser.rs`)
- Runner pipeline → Blitz render document: builds document (evidence: `src/runner/pipeline.rs`)
- Runner pipeline → Script loading: runs scripts (evidence: `src/runner/pipeline.rs`)
- Script loading → JS runtime seam: creates runtime (evidence: `src/runner/pipeline.rs`)
- JS runtime seam → V8 runtime and DOM bridge: constructs backend (evidence: `src/js_engine.rs`)
- V8 runtime and DOM bridge → Legacy DOM: bridges DOM (evidence: `README.md`)
- V8 runtime and DOM bridge → Blitz render document: applies mutations (evidence: `README.md`)
- Runner pipeline → CSS parsing and styles: builds stylesheet (evidence: `src/runner/pipeline.rs`)
- CSS parsing and styles → Stylo bridge: integrates styles (evidence: `README.md`)
- Runner pipeline → Legacy style tree: builds compatibility tree (evidence: `src/runner/pipeline.rs`)
- Legacy style tree → Legacy layout: styles layout tree (evidence: `README.md`)
- Blitz render document → GPU and headless paint: paints document (evidence: `README.md`)
- Runner pipeline → Window and input: opens window (evidence: `README.md`)
- Window and input → Browser chrome: shows chrome (evidence: `src/window/app.rs`)
- Window and input → Screenshot capture: captures output (evidence: `README.md`)
- GPU and headless paint → Font shaping and atlas: uses shaping (evidence: `README.md`)
- Runner pipeline → Optional media: provides media support (evidence: `README.md`)
- Blitz render document → Resource fetch: loads subresources (evidence: `src/blitz_document.rs`)
