# zaneris/passenger architecture

> Architecture diagram of the GitHub repository zaneris/passenger, 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/zaneris/passenger
- Repository: https://github.com/zaneris/passenger

## Overview

Passenger is a cross-platform .NET IDE, especially focused on Godot, with integrated debugging, profiling, live editing, project tools, and coding-agent control. Users work in the IDE; its feature areas run or inspect projects and present results alongside code. The graph preserves the README’s major product branches. Several implementation paths are supported by the tree but were not sampled, so those nodes are directory-level and relationships rely on documented capabilities rather than inspected call sites.

Main entry points: [`src/Passenger.App/MainWindow.axaml.cs`](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/MainWindow.axaml.cs) (Passenger IDE), [`src/Passenger.Languages/Language.cs`](https://github.com/zaneris/passenger/blob/main/src/Passenger.Languages/Language.cs) (Language services), [`src/Passenger.Roslyn.Extension/Godot.cs`](https://github.com/zaneris/passenger/blob/main/src/Passenger.Roslyn.Extension/Godot.cs) (Godot code analysis), [`src/Passenger.App/Debugging/DebugController.cs`](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Debugging/DebugController.cs) (Debugger)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ide["IDE and code"]
  node_ide["Passenger IDE"]
  node_language["Language services<br/>[Language.cs]"]
  node_text["Text documents<br/>[TextSnapshot.cs]"]
end

subgraph group_godot["Godot development"]
  node_godot_support["Godot code analysis<br/>[Godot.cs]"]
  node_godot_api["Godot API reader<br/>[GodotEngineApis.cs]"]
  node_gdscript["GDScript tooling<br/>[GodotEngineApi.cs]"]
  node_game_run["Game run and reload<br/>[GodotGame.cs]"]
  node_live_tree["Live visual tree"]
end

subgraph group_runtime["Run and inspect"]
  node_debug["Debugger<br/>[DebugController.cs]"]
  node_debug_engine["Managed debug engine<br/>[ManagedDebugger.cs]"]
  node_debug_adapter["Debug adapter<br/>[Program.cs]"]
  node_profiler["CPU and memory profiler"]
  node_hot_reload["Hot Reload<br/>[HotReload.cs]"]
  node_tests["Unit test runner<br/>[TestController.cs]"]
end

subgraph group_integrations["Project integrations"]
  node_containers["Container tools<br/>[ContainerEngine.cs]"]
  node_aspire["Aspire orchestration<br/>[AppHostPipeline.cs]"]
  node_requests["HTTP requests and SQL<br/>[RequestsView.cs]"]
  node_migrations["EF migrations"]
  node_history["Local history and merge<br/>[LocalHistory.cs]"]
  node_xaml["XAML preview and live edit<br/>[XamlHotReload.cs]"]
  node_browser["Browser debugging"]
end

subgraph group_agent["Agent and testing"]
  node_agent["MCP agent tools<br/>[McpTools.cs]"]
end

node_user(("Developer"))

node_user -->|"uses"| node_ide
node_ide -->|"provides editing"| node_language
node_language -.->|"edits"| node_text
node_ide -->|"checks game code"| node_godot_support
node_godot_support -.->|"uses engine data"| node_godot_api
node_ide -->|"provides analysis"| node_gdscript
node_ide -->|"runs games"| node_game_run
node_ide -->|"shows runtime tree"| node_live_tree
node_ide -->|"starts debugging"| node_debug
node_debug -.->|"uses engine"| node_debug_engine
node_ide -->|"debugs browser apps"| node_debug_adapter
node_ide -->|"profiles programs"| node_profiler
node_ide -->|"applies edits"| node_hot_reload
node_ide -->|"runs tests"| node_tests
node_ide -->|"manages containers"| node_containers
node_ide -->|"orchestrates services"| node_aspire
node_ide -->|"inspects requests"| node_requests
node_ide -->|"fixes migrations"| node_migrations
node_ide -->|"tracks versions"| node_history
node_ide -->|"previews and reloads"| node_xaml
node_ide -->|"debugs in browser"| node_browser
node_user -->|"connects agent"| node_agent
node_agent -->|"drives IDE"| node_ide

click node_ide "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/MainWindow.axaml.cs"
click node_language "https://github.com/zaneris/passenger/blob/main/src/Passenger.Languages/Language.cs"
click node_text "https://github.com/zaneris/passenger/blob/main/src/Passenger.Text/TextSnapshot.cs"
click node_godot_support "https://github.com/zaneris/passenger/blob/main/src/Passenger.Roslyn.Extension/Godot.cs"
click node_godot_api "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Godot/GodotEngineApis.cs"
click node_gdscript "https://github.com/zaneris/passenger/blob/main/src/Passenger.Workspace/GDScript/GodotEngineApi.cs"
click node_game_run "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Godot/GodotGame.cs"
click node_live_tree "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/LiveTree/LiveTreeController.cs"
click node_debug "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Debugging/DebugController.cs"
click node_debug_engine "https://github.com/zaneris/passenger/blob/main/src/Passenger.Debugger/ManagedDebugger.cs"
click node_debug_adapter "https://github.com/zaneris/passenger/blob/main/src/Passenger.DebugAdapter/Program.cs"
click node_profiler "https://github.com/zaneris/passenger/blob/main/src/Passenger.Profiler/ProfilingSession.cs"
click node_hot_reload "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Debugging/HotReload.cs"
click node_tests "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Testing/TestController.cs"
click node_containers "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Containers/ContainerEngine.cs"
click node_aspire "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Aspire/AppHostPipeline.cs"
click node_requests "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Endpoints/RequestsView.cs"
click node_migrations "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/MainWindow.Migrations.cs"
click node_history "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/History/LocalHistory.cs"
click node_xaml "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/LiveTree/XamlHotReload.cs"
click node_browser "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Debugging/BrowserDebugging.cs"
click node_agent "https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Mcp/McpTools.cs"

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_ide,node_language,node_text toneBlue
class node_godot_support,node_godot_api,node_gdscript,node_game_run,node_live_tree toneAmber
class node_debug,node_debug_engine,node_debug_adapter,node_profiler,node_hot_reload,node_tests toneMint
class node_containers,node_aspire,node_requests,node_migrations,node_history,node_xaml,node_browser toneRose
class node_agent,node_user toneIndigo
```

## Components

### IDE and code

- [Passenger IDE](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/MainWindow.axaml.cs): `src/Passenger.App/MainWindow.axaml.cs`
- [Language services](https://github.com/zaneris/passenger/blob/main/src/Passenger.Languages/Language.cs): `src/Passenger.Languages/Language.cs`
- [Text documents](https://github.com/zaneris/passenger/blob/main/src/Passenger.Text/TextSnapshot.cs): `src/Passenger.Text/TextSnapshot.cs`

### Godot development

- [Godot code analysis](https://github.com/zaneris/passenger/blob/main/src/Passenger.Roslyn.Extension/Godot.cs): `src/Passenger.Roslyn.Extension/Godot.cs`
- [Godot API reader](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Godot/GodotEngineApis.cs): `src/Passenger.App/Godot/GodotEngineApis.cs`
- [GDScript tooling](https://github.com/zaneris/passenger/blob/main/src/Passenger.Workspace/GDScript/GodotEngineApi.cs): `src/Passenger.Workspace/GDScript/GodotEngineApi.cs`
- [Game run and reload](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Godot/GodotGame.cs): `src/Passenger.App/Godot/GodotGame.cs`
- [Live visual tree](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/LiveTree/LiveTreeController.cs): `src/Passenger.App/LiveTree/LiveTreeController.cs`

### Run and inspect

- [Debugger](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Debugging/DebugController.cs): `src/Passenger.App/Debugging/DebugController.cs`
- [Managed debug engine](https://github.com/zaneris/passenger/blob/main/src/Passenger.Debugger/ManagedDebugger.cs): `src/Passenger.Debugger/ManagedDebugger.cs`
- [Debug adapter](https://github.com/zaneris/passenger/blob/main/src/Passenger.DebugAdapter/Program.cs): `src/Passenger.DebugAdapter/Program.cs`
- [CPU and memory profiler](https://github.com/zaneris/passenger/blob/main/src/Passenger.Profiler/ProfilingSession.cs): `src/Passenger.Profiler/ProfilingSession.cs`
- [Hot Reload](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Debugging/HotReload.cs): `src/Passenger.App/Debugging/HotReload.cs`
- [Unit test runner](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Testing/TestController.cs): `src/Passenger.App/Testing/TestController.cs`

### Project integrations

- [Container tools](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Containers/ContainerEngine.cs): `src/Passenger.App/Containers/ContainerEngine.cs`
- [Aspire orchestration](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Aspire/AppHostPipeline.cs): `src/Passenger.App/Aspire/AppHostPipeline.cs`
- [HTTP requests and SQL](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Endpoints/RequestsView.cs): `src/Passenger.App/Endpoints/RequestsView.cs`
- [EF migrations](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/MainWindow.Migrations.cs): `src/Passenger.App/MainWindow.Migrations.cs`
- [Local history and merge](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/History/LocalHistory.cs): `src/Passenger.App/History/LocalHistory.cs`
- [XAML preview and live edit](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/LiveTree/XamlHotReload.cs): `src/Passenger.App/LiveTree/XamlHotReload.cs`
- [Browser debugging](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Debugging/BrowserDebugging.cs): `src/Passenger.App/Debugging/BrowserDebugging.cs`

### Agent and testing

- [MCP agent tools](https://github.com/zaneris/passenger/blob/main/src/Passenger.App/Mcp/McpTools.cs): `src/Passenger.App/Mcp/McpTools.cs`

### Other components

- **Developer**

## Connections

- Developer → Passenger IDE: uses (evidence: `README.md`)
- Passenger IDE → Language services: provides editing (evidence: `README.md`)
- Language services → Text documents: edits (evidence: `src/Passenger.Languages/Language.cs`)
- Passenger IDE → Godot code analysis: checks game code (evidence: `README.md`)
- Godot code analysis → Godot API reader: uses engine data (evidence: `src/Passenger.App/Godot/GodotEngineApis.cs`)
- Passenger IDE → GDScript tooling: provides analysis (evidence: `README.md`)
- Passenger IDE → Game run and reload: runs games (evidence: `README.md`)
- Passenger IDE → Live visual tree: shows runtime tree (evidence: `README.md`)
- Passenger IDE → Debugger: starts debugging (evidence: `README.md`)
- Debugger → Managed debug engine: uses engine
- Passenger IDE → Debug adapter: debugs browser apps (evidence: `README.md`)
- Passenger IDE → CPU and memory profiler: profiles programs (evidence: `README.md`)
- Passenger IDE → Hot Reload: applies edits (evidence: `README.md`)
- Passenger IDE → Unit test runner: runs tests (evidence: `README.md`)
- Passenger IDE → Container tools: manages containers (evidence: `README.md`)
- Passenger IDE → Aspire orchestration: orchestrates services (evidence: `README.md`)
- Passenger IDE → HTTP requests and SQL: inspects requests (evidence: `README.md`)
- Passenger IDE → EF migrations: fixes migrations (evidence: `README.md`)
- Passenger IDE → Local history and merge: tracks versions (evidence: `README.md`)
- Passenger IDE → XAML preview and live edit: previews and reloads (evidence: `README.md`)
- Passenger IDE → Browser debugging: debugs in browser (evidence: `README.md`)
- Developer → MCP agent tools: connects agent (evidence: `README.md`)
- MCP agent tools → Passenger IDE: drives IDE (evidence: `README.md`)
