# Components `docforge` is split into four horizontal layers. Everything flows top to bottom through the CLI. --- ## 1. Loaders & Models The `docforge/loaders` package wraps `griffe` to extract modules, functions, classes, and Google-style docstring sections. Loaded data is normalized into the object model under `docforge/models` (`Project`, `Module`, `DocObject`). --- ## 2. Navigation `docforge/nav` parses `docforge.nav.yml` specs (`NavSpec`, `Resolver`, and the MkDocs nav emitter) and, since the wiki kind, derives wiki navigation from the file structure via `build_wiki_nav`. --- ## 3. Renderers `docforge/renderers` turn model data into artifacts: - `MkDocsRenderer` → `docs/lib/**` reference markdown - `MCPRenderer` → `docs/mcp/**` structured documentation --- ## 4. Servers `docforge/servers` serves generated artifacts over live protocols: - `MCPServer` → serves a pre-generated `docs/mcp/**` bundle through MCP resources (`docs://index`, `docs://nav`, `docs://modules/{module}`) --- ## 5. CLI `docforge/cli` wires it all together: - `commands.py` — the `build` command and its `--mkdocs` / `--api` / `--wiki` / `--mcp` modes - `mkdocs_utils.py` — per-kind config generation (`docs/mkdocs.{lib,api,wiki}.yml`) with navigation re-rooted to each kind's `docs_dir` - `api_utils.py` — OpenAPI loading and API docs generation --- ## Related - [01 – Overview](01_overview.md) · [03 – Conventions](03_conventions.md)