# dowerarts/codebuddy-login-github architecture

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

- Interactive diagram: https://gitdiagram.com/dowerarts/codebuddy-login-github
- Repository: https://github.com/dowerarts/codebuddy-login-github

## Overview

This Node.js automation reads account records, logs into GitHub (including optional 2FA), completes CodeBuddy’s GitHub-broker OAuth flow, and saves resulting cookies. Its internal layers cover account orchestration, request configuration, and result handling. The README documents proxy rotation, randomized identity headers, concurrency and delay controls, and failed-account tracking. Excerpts are partial; the diagram omits undocumented internal call wiring and treats the Router9 endpoints in the sampled source as a separate optional integration.

Main entry points: [`github-login.js`](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js) (Main runner), [`codebuddy.txt`](https://github.com/dowerarts/codebuddy-login-github/blob/main/codebuddy.txt) (Account records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Account workflow"]
  node_runner["Main runner<br/>[github-login.js]"]
  node_account_policy["Account handling<br/>[github-login.js]"]
  node_session_output["Cookie sessions<br/>[github-login.js]"]
  node_bad_accounts["Problem account log<br/>[github-login.js]"]
  node_summary["Run summary<br/>[github-login.js]"]
end

subgraph group_github["GitHub login"]
  node_github_login["GitHub authentication<br/>[github-login.js]"]
  node_two_factor["2FA verification<br/>[github-login.js]"]
end

subgraph group_codebuddy["CodeBuddy OAuth"]
  node_cb_setup["CodeBuddy session setup<br/>[github-login.js]"]
  node_risk_context["Risk context<br/>[github-login.js]"]
  node_cb_oauth["OAuth completion<br/>[github-login.js]"]
end

subgraph group_runtime["Runtime support"]
  node_settings["Runtime settings<br/>[github-login.js]"]
  node_proxy["Proxy selection<br/>[github-login.js]"]
end

node_operator(("Operator"))
node_account_input["Account records<br/>[codebuddy.txt]"]
node_github_service{{"GitHub"}}
node_keycloak{{"Keycloak broker"}}
node_codebuddy_service{{"CodeBuddy"}}
node_router9{{"Router9 OAuth API"}}

node_operator -->|"starts"| node_runner
node_account_input -->|"provides accounts"| node_runner
node_runner -->|"loads settings"| node_settings
node_runner -->|"selects proxy"| node_proxy
node_runner -->|"processes accounts"| node_account_policy
node_account_policy -->|"starts login"| node_github_login
node_github_login -->|"requests login"| node_github_service
node_github_login -->|"handles 2FA"| node_two_factor
node_two_factor -->|"submits code"| node_github_service
node_account_policy -->|"starts OAuth"| node_cb_setup
node_cb_setup -->|"initializes session"| node_codebuddy_service
node_cb_setup -->|"posts context"| node_risk_context
node_risk_context -->|"requests risk context"| node_codebuddy_service
node_cb_setup -->|"opens broker flow"| node_keycloak
node_keycloak -->|"redirects for login"| node_github_service
node_cb_oauth -->|"completes OAuth"| node_codebuddy_service
node_account_policy -->|"saves cookies"| node_session_output
node_account_policy -->|"records failures"| node_bad_accounts
node_runner -->|"reports results"| node_summary
node_runner -.->|"calls optional API"| node_router9

click node_account_input "https://github.com/dowerarts/codebuddy-login-github/blob/main/codebuddy.txt"
click node_runner "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_settings "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_proxy "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_account_policy "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_github_login "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_two_factor "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_cb_setup "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_risk_context "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_cb_oauth "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_session_output "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_bad_accounts "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"
click node_summary "https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js"

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_runner,node_account_policy,node_session_output,node_bad_accounts,node_summary toneBlue
class node_github_login,node_two_factor toneAmber
class node_cb_setup,node_risk_context,node_cb_oauth,node_router9 toneMint
class node_settings,node_proxy toneRose
class node_operator,node_github_service,node_keycloak,node_codebuddy_service toneIndigo
class node_account_input toneTeal
```

## Components

### Account workflow

- [Main runner](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [Account handling](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [Cookie sessions](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [Problem account log](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [Run summary](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`

### GitHub login

- [GitHub authentication](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [2FA verification](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`

### CodeBuddy OAuth

- [CodeBuddy session setup](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [Risk context](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [OAuth completion](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`

### Runtime support

- [Runtime settings](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`
- [Proxy selection](https://github.com/dowerarts/codebuddy-login-github/blob/main/github-login.js): `github-login.js`

### Other components

- **Operator**
- [Account records](https://github.com/dowerarts/codebuddy-login-github/blob/main/codebuddy.txt): `codebuddy.txt`
- **GitHub**
- **Keycloak broker**
- **CodeBuddy**
- **Router9 OAuth API**

## Connections

- Operator → Main runner: starts
- Account records → Main runner: provides accounts
- Main runner → Runtime settings: loads settings
- Main runner → Proxy selection: selects proxy
- Main runner → Account handling: processes accounts
- Account handling → GitHub authentication: starts login
- GitHub authentication → GitHub: requests login
- GitHub authentication → 2FA verification: handles 2FA
- 2FA verification → GitHub: submits code
- Account handling → CodeBuddy session setup: starts OAuth
- CodeBuddy session setup → CodeBuddy: initializes session
- CodeBuddy session setup → Risk context: posts context
- Risk context → CodeBuddy: requests risk context
- CodeBuddy session setup → Keycloak broker: opens broker flow
- Keycloak broker → GitHub: redirects for login
- OAuth completion → CodeBuddy: completes OAuth
- Account handling → Cookie sessions: saves cookies
- Account handling → Problem account log: records failures
- Main runner → Run summary: reports results
- Main runner → Router9 OAuth API: calls optional API
