# codedog-ai/codedog architecture

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

- Interactive diagram: https://gitdiagram.com/codedog-ai/codedog
- Repository: https://github.com/codedog-ai/codedog

## Overview

Codedog retrieves GitHub/GitLab pull-request data, prepares changed-file inputs, generates per-file summaries and review feedback with LLM chains, then formats a Markdown report. The README also documents commit-triggered reviews, developer evaluation, scoring, multilingual output, and email notifications. Those secondary capabilities are represented at subsystem level; their wiring is not fully established by the sampled source.

Main entry points: [`run_codedog.py`](https://github.com/codedog-ai/codedog/blob/master/run_codedog.py) (CLI workflow), [`codedog/actors/reporters/pull_request.py`](https://github.com/codedog-ai/codedog/blob/master/codedog/actors/reporters/pull_request.py) (Markdown reporting), [`codedog/retrievers/github_retriever.py`](https://github.com/codedog-ai/codedog/blob/master/codedog/retrievers/github_retriever.py) (GitHub retriever), [`codedog/retrievers/gitlab_retriever.py`](https://github.com/codedog-ai/codedog/blob/master/codedog/retrievers/gitlab_retriever.py) (GitLab retriever)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and orchestration"]
  node_cli["CLI workflow<br/>[run_codedog.py]"]
  node_processor["PR processor"]
end

subgraph group_retrieval["Change retrieval"]
  node_gh["GitHub retriever"]
  node_gl["GitLab retriever"]
  node_prmodel["PR data models<br/>[pull_request.py]"]
end

subgraph group_analysis["LLM analysis"]
  node_summary["PR summary chain<br/>[base.py]"]
  node_codechain["Code review chain<br/>[base.py]"]
  node_translate["Review translation"]
  node_prompts["Review prompts<br/>[prompts.py]"]
  node_templates["Language templates<br/>[template_en.py]"]
end

subgraph group_output["Reports and extensions"]
  node_reporter["Markdown reporting<br/>[pull_request.py]"]
  node_reviewreport["Review scoring<br/>[code_review.py]"]
  node_email["Email notifications<br/>[email_utils.py]"]
  node_commit["Commit review trigger<br/>[git_hooks.py]"]
  node_evaluation["Developer evaluation<br/>[code_evaluator.py]"]
  node_remoteanalysis["Repository analyzer"]
end

node_developer(("Developer"))
node_github(("GitHub"))
node_gitlab(("GitLab"))
node_llm(("LLM provider"))

node_developer -->|"starts review"| node_cli
node_cli -->|"selects platform"| node_gh
node_cli -->|"selects platform"| node_gl
node_gh -->|"fetches changes"| node_github
node_gl -->|"fetches changes"| node_gitlab
node_gh -->|"builds PR data"| node_prmodel
node_gl -->|"builds PR data"| node_prmodel
node_cli -->|"prepares changes"| node_processor
node_cli -->|"requests summary"| node_summary
node_cli -->|"requests review"| node_codechain
node_summary -->|"generates summaries"| node_llm
node_codechain -->|"reviews changes"| node_llm
node_codechain -->|"uses prompts"| node_prompts
node_translate -->|"translates feedback"| node_llm
node_translate -->|"processes PR"| node_processor
node_cli -->|"formats report"| node_reporter
node_reporter -->|"renders language"| node_templates
node_reporter -->|"includes review"| node_reviewreport
node_reviewreport -.->|"extracts scores"| node_prompts
node_reporter -.->|"may notify"| node_email
node_developer -.->|"triggers review"| node_commit
node_developer -.->|"requests evaluation"| node_evaluation
node_evaluation -.->|"analyzes commits"| node_remoteanalysis
node_remoteanalysis -.->|"reads repository"| node_github
node_remoteanalysis -.->|"reads repository"| node_gitlab

click node_cli "https://github.com/codedog-ai/codedog/blob/master/run_codedog.py"
click node_processor "https://github.com/codedog-ai/codedog/blob/master/codedog/processors/pull_request_processor.py"
click node_gh "https://github.com/codedog-ai/codedog/blob/master/codedog/retrievers/github_retriever.py"
click node_gl "https://github.com/codedog-ai/codedog/blob/master/codedog/retrievers/gitlab_retriever.py"
click node_prmodel "https://github.com/codedog-ai/codedog/blob/master/codedog/models/pull_request.py"
click node_summary "https://github.com/codedog-ai/codedog/blob/master/codedog/chains/pr_summary/base.py"
click node_codechain "https://github.com/codedog-ai/codedog/blob/master/codedog/chains/code_review/base.py"
click node_translate "https://github.com/codedog-ai/codedog/blob/master/codedog/chains/code_review/translate_code_review_chain.py"
click node_prompts "https://github.com/codedog-ai/codedog/blob/master/codedog/chains/code_review/prompts.py"
click node_templates "https://github.com/codedog-ai/codedog/blob/master/codedog/templates/template_en.py"
click node_reporter "https://github.com/codedog-ai/codedog/blob/master/codedog/actors/reporters/pull_request.py"
click node_reviewreport "https://github.com/codedog-ai/codedog/blob/master/codedog/actors/reporters/code_review.py"
click node_email "https://github.com/codedog-ai/codedog/blob/master/codedog/utils/email_utils.py"
click node_commit "https://github.com/codedog-ai/codedog/blob/master/codedog/utils/git_hooks.py"
click node_evaluation "https://github.com/codedog-ai/codedog/blob/master/codedog/utils/code_evaluator.py"
click node_remoteanalysis "https://github.com/codedog-ai/codedog/blob/master/codedog/utils/remote_repository_analyzer.py"

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_cli,node_processor toneBlue
class node_gh,node_gl,node_prmodel toneAmber
class node_summary,node_codechain,node_translate,node_prompts,node_templates toneMint
class node_reporter,node_reviewreport,node_email,node_commit,node_evaluation,node_remoteanalysis toneRose
class node_developer,node_github,node_gitlab,node_llm toneIndigo
```

## Components

### Entry and orchestration

- [CLI workflow](https://github.com/codedog-ai/codedog/blob/master/run_codedog.py): `run_codedog.py`
- [PR processor](https://github.com/codedog-ai/codedog/blob/master/codedog/processors/pull_request_processor.py): `codedog/processors/pull_request_processor.py`

### Change retrieval

- [GitHub retriever](https://github.com/codedog-ai/codedog/blob/master/codedog/retrievers/github_retriever.py): `codedog/retrievers/github_retriever.py`
- [GitLab retriever](https://github.com/codedog-ai/codedog/blob/master/codedog/retrievers/gitlab_retriever.py): `codedog/retrievers/gitlab_retriever.py`
- [PR data models](https://github.com/codedog-ai/codedog/blob/master/codedog/models/pull_request.py): `codedog/models/pull_request.py`

### LLM analysis

- [PR summary chain](https://github.com/codedog-ai/codedog/blob/master/codedog/chains/pr_summary/base.py): `codedog/chains/pr_summary/base.py`
- [Code review chain](https://github.com/codedog-ai/codedog/blob/master/codedog/chains/code_review/base.py): `codedog/chains/code_review/base.py`
- [Review translation](https://github.com/codedog-ai/codedog/blob/master/codedog/chains/code_review/translate_code_review_chain.py): `codedog/chains/code_review/translate_code_review_chain.py`
- [Review prompts](https://github.com/codedog-ai/codedog/blob/master/codedog/chains/code_review/prompts.py): `codedog/chains/code_review/prompts.py`
- [Language templates](https://github.com/codedog-ai/codedog/blob/master/codedog/templates/template_en.py): `codedog/templates/template_en.py`

### Reports and extensions

- [Markdown reporting](https://github.com/codedog-ai/codedog/blob/master/codedog/actors/reporters/pull_request.py): `codedog/actors/reporters/pull_request.py`
- [Review scoring](https://github.com/codedog-ai/codedog/blob/master/codedog/actors/reporters/code_review.py): `codedog/actors/reporters/code_review.py`
- [Email notifications](https://github.com/codedog-ai/codedog/blob/master/codedog/utils/email_utils.py): `codedog/utils/email_utils.py`
- [Commit review trigger](https://github.com/codedog-ai/codedog/blob/master/codedog/utils/git_hooks.py): `codedog/utils/git_hooks.py`
- [Developer evaluation](https://github.com/codedog-ai/codedog/blob/master/codedog/utils/code_evaluator.py): `codedog/utils/code_evaluator.py`
- [Repository analyzer](https://github.com/codedog-ai/codedog/blob/master/codedog/utils/remote_repository_analyzer.py): `codedog/utils/remote_repository_analyzer.py`

### Other components

- **Developer**
- **GitHub**
- **GitLab**
- **LLM provider**

## Connections

- Developer → CLI workflow: starts review
- CLI workflow → GitHub retriever: selects platform
- CLI workflow → GitLab retriever: selects platform
- GitHub retriever → GitHub: fetches changes
- GitLab retriever → GitLab: fetches changes
- GitHub retriever → PR data models: builds PR data
- GitLab retriever → PR data models: builds PR data
- CLI workflow → PR processor: prepares changes
- CLI workflow → PR summary chain: requests summary
- CLI workflow → Code review chain: requests review
- PR summary chain → LLM provider: generates summaries
- Code review chain → LLM provider: reviews changes
- Code review chain → Review prompts: uses prompts
- Review translation → LLM provider: translates feedback
- Review translation → PR processor: processes PR
- CLI workflow → Markdown reporting: formats report
- Markdown reporting → Language templates: renders language
- Markdown reporting → Review scoring: includes review
- Review scoring → Review prompts: extracts scores
- Markdown reporting → Email notifications: may notify
- Developer → Commit review trigger: triggers review
- Developer → Developer evaluation: requests evaluation
- Developer evaluation → Repository analyzer: analyzes commits
- Repository analyzer → GitHub: reads repository
- Repository analyzer → GitLab: reads repository
