# odoo/odoo-pycharm architecture

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

- Interactive diagram: https://gitdiagram.com/odoo/odoo-pycharm
- Repository: https://github.com/odoo/odoo-pycharm

## Overview

OdooLS for PyCharm integrates a bundled Odoo language-server executable with PyCharm: opening a project file starts the server, whose Language Server Protocol features provide editor assistance. Users configure installation and project profiles, monitor server status, and can inspect configuration previews or submit crash reports. The README identifies hover, definition, completion, and diagnostics as capabilities; source excerpts show server startup, notifications, settings, installation, and crash reporting. Some registrations and settings behavior are represented at their supported source paths because their implementation was not sampled.

Main entry points: [`src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt`](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt) (LSP provider), [`src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt`](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt) (LSP client), [`src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt`](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt) (Status widget), [`src/main/resources/odools-binaries`](https://github.com/odoo/odoo-pycharm/tree/release/src/main/resources/odools-binaries) (OdooLS executable)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["IDE language support"]
  node_plugin["OdooLS plugin<br/>[plugin.xml]"]
  node_language_features["Language features<br/>[plugin.xml]"]
end

subgraph group_server["Server lifecycle"]
  node_lsp_provider["LSP provider"]
  node_server_binary["OdooLS executable"]
  node_lsp_client["LSP client"]
  node_lsp_listener["Server listener"]
end

subgraph group_configuration["Setup and configuration"]
  node_app_settings["Installation settings"]
  node_path_settings["Path settings UI"]
  node_project_settings["Project profile"]
  node_install_activity["Install resources"]
  node_typeshed["Typeshed resources"]
end

subgraph group_support["Monitoring and support"]
  node_status_widget["Status widget"]
  node_html_preview["HTML preview"]
  node_crash_form["Crash report form"]
  node_crash_params["Crash notification data"]
end

node_developer(("Odoo developer"))
node_projectfile["Project file"]
node_report_service["Crash report service"]

node_developer -->|"opens or edits"| node_projectfile
node_projectfile -->|"triggers startup"| node_lsp_provider
node_lsp_provider -->|"launches"| node_server_binary
node_server_binary -->|"sends notifications"| node_lsp_client
node_lsp_client -->|"provides LSP"| node_language_features
node_language_features -->|"assists editing"| node_projectfile
node_lsp_provider -->|"registers"| node_lsp_listener
node_lsp_provider -->|"reads profile"| node_project_settings
node_lsp_provider -->|"reads install path"| node_app_settings
node_developer -->|"configures path"| node_path_settings
node_path_settings -->|"updates"| node_app_settings
node_install_activity -->|"installs executable"| node_server_binary
node_install_activity -->|"copies resources"| node_typeshed
node_lsp_client -->|"updates status and profiles"| node_status_widget
node_status_widget -->|"selects profile"| node_project_settings
node_status_widget -->|"opens configuration preview"| node_html_preview
node_lsp_client -->|"receives crash data"| node_crash_params
node_lsp_client -->|"opens report form"| node_crash_form
node_crash_form -->|"submits report"| node_report_service

click node_plugin "https://github.com/odoo/odoo-pycharm/blob/release/src/main/resources/META-INF/plugin.xml"
click node_lsp_provider "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt"
click node_server_binary "https://github.com/odoo/odoo-pycharm/tree/release/src/main/resources/odools-binaries"
click node_lsp_client "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt"
click node_lsp_listener "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLspServerListener.kt"
click node_language_features "https://github.com/odoo/odoo-pycharm/blob/release/src/main/resources/META-INF/plugin.xml"
click node_app_settings "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSApplicationSettings.kt"
click node_path_settings "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSPathConfigurable.kt"
click node_project_settings "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSProjectSettings.kt"
click node_install_activity "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt"
click node_typeshed "https://github.com/odoo/odoo-pycharm/tree/release/typeshed"
click node_status_widget "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt"
click node_html_preview "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/HtmlPreviewEditor.kt"
click node_crash_form "https://github.com/odoo/odoo-pycharm/blob/release/src/main/java/com/odoo/odools/forms/CrashReportForm.java"
click node_crash_params "https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/params/DisplayCrashNotificationParams.kt"

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_plugin,node_language_features toneBlue
class node_lsp_provider,node_server_binary,node_lsp_client,node_lsp_listener toneAmber
class node_app_settings,node_path_settings,node_project_settings,node_install_activity,node_typeshed toneMint
class node_status_widget,node_html_preview,node_crash_form,node_crash_params toneRose
class node_developer,node_projectfile,node_report_service toneIndigo
```

## Components

### IDE language support

- [OdooLS plugin](https://github.com/odoo/odoo-pycharm/blob/release/src/main/resources/META-INF/plugin.xml): `src/main/resources/META-INF/plugin.xml`
- [Language features](https://github.com/odoo/odoo-pycharm/blob/release/src/main/resources/META-INF/plugin.xml): `src/main/resources/META-INF/plugin.xml`

### Server lifecycle

- [LSP provider](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt): `src/main/kotlin/com/odoo/odools/OdooLSLspServerSupportProvider.kt`
- [OdooLS executable](https://github.com/odoo/odoo-pycharm/tree/release/src/main/resources/odools-binaries): `src/main/resources/odools-binaries`
- [LSP client](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt): `src/main/kotlin/com/odoo/odools/OdooCustomLsp4jClient.kt`
- [Server listener](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLspServerListener.kt): `src/main/kotlin/com/odoo/odools/OdooLspServerListener.kt`

### Setup and configuration

- [Installation settings](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSApplicationSettings.kt): `src/main/kotlin/com/odoo/odools/OdooLSApplicationSettings.kt`
- [Path settings UI](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSPathConfigurable.kt): `src/main/kotlin/com/odoo/odools/OdooLSPathConfigurable.kt`
- [Project profile](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSProjectSettings.kt): `src/main/kotlin/com/odoo/odools/OdooLSProjectSettings.kt`
- [Install resources](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt): `src/main/kotlin/com/odoo/odools/OdooLSInstallationProjectActivity.kt`
- [Typeshed resources](https://github.com/odoo/odoo-pycharm/tree/release/typeshed): `typeshed`

### Monitoring and support

- [Status widget](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt): `src/main/kotlin/com/odoo/odools/OdooStatusBarWidget.kt`
- [HTML preview](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/HtmlPreviewEditor.kt): `src/main/kotlin/com/odoo/odools/HtmlPreviewEditor.kt`
- [Crash report form](https://github.com/odoo/odoo-pycharm/blob/release/src/main/java/com/odoo/odools/forms/CrashReportForm.java): `src/main/java/com/odoo/odools/forms/CrashReportForm.java`
- [Crash notification data](https://github.com/odoo/odoo-pycharm/blob/release/src/main/kotlin/com/odoo/odools/params/DisplayCrashNotificationParams.kt): `src/main/kotlin/com/odoo/odools/params/DisplayCrashNotificationParams.kt`

### Other components

- **Odoo developer**
- **Project file**
- **Crash report service**

## Connections

- Odoo developer → Project file: opens or edits
- Project file → LSP provider: triggers startup
- LSP provider → OdooLS executable: launches
- OdooLS executable → LSP client: sends notifications
- LSP client → Language features: provides LSP
- Language features → Project file: assists editing
- LSP provider → Server listener: registers
- LSP provider → Project profile: reads profile
- LSP provider → Installation settings: reads install path
- Odoo developer → Path settings UI: configures path
- Path settings UI → Installation settings: updates
- Install resources → OdooLS executable: installs executable
- Install resources → Typeshed resources: copies resources
- LSP client → Status widget: updates status and profiles
- Status widget → Project profile: selects profile
- Status widget → HTML preview: opens configuration preview
- LSP client → Crash notification data: receives crash data
- LSP client → Crash report form: opens report form
- Crash report form → Crash report service: submits report
