# Architecture

This package provides the Odoo core runtime and the `base` addon. It sits at the center of every other addon.

```mermaid
flowchart LR
    subgraph CLI
      OBIN[`odoo-bin`]
      CLIEP[CLI Entrypoints]
    end
    subgraph Core
      CONF[Config Loader]
      SRV[Server Service]
      REG[Registry]
      ORM[Models and ORM]
      MOD[Modules Loader]
      HTTP[HTTP Layer]
      QWEB[QWeb Templates]
      TOOLS[Tools misc ustr date]
    end
    subgraph Services
      PG[(PostgreSQL)]
      CRON[Cron]
      BUS[Bus]
      I18N[I18n]
      REPORT[Reports]
      FS[(Filestore)]
    end
    subgraph Base Addon
      IRM[ir.model and ir.model.fields]
      IRUI[ir.ui.menu and ir.actions]
      IRSEC[ir.model.access ir.rule res.groups]
      RES[res.users res.partner res.company res.currency]
      IRATT[ir.attachment]
      IRCONF[ir.config_parameter]
    end

    OBIN --> CLIEP --> CONF --> SRV --> REG
    SRV --> HTTP -->|routes| BaseControllers
    SRV --> CRON
    REG --> ORM --> PG
    MOD --> REG
    QWEB --> HTTP
    ORM --> FS
    ORM --> REPORT
    ORM --> TOOLS

    BaseControllers -.import.-> HTTP
    IRM --> ORM
    IRUI --> HTTP
    IRSEC -. enforces .-> ORM
    RES --> ORM
    IRATT --> ORM
    IRCONF --> ORM

    BUS <--> HTTP
```

Key Points
- Registry: process-wide metadata for all models, caches, and methods.
- ORM: `models.Model`, fields, environment, and caching. All addons extend here.
- HTTP: WSGI app; controllers decorated with `@http.route` handle requests.
- Modules Loader: resolves addons path, reads manifests, installs/updates.
- Base Addon: provides the essential models that enable everything else.
- Services: PostgreSQL connections, cron workers, bus long-polling, i18n.
