# mslolita/grass architecture

> Architecture diagram of the GitHub repository mslolita/grass, 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/mslolita/grass
- Repository: https://github.com/mslolita/grass

## Overview

Grass Auto Reger&Farm automates account registration, verification and wallet setup, or runs accounts to farm and claim points. Users configure accounts, proxies, wallets and mode flags, then start the console or UI; `main.py` loads inputs and dispatches account workers through `AutoReger`. Each worker delegates Grass operations to the client, which handles REST actions and the extension-style WebSocket farming session. The README also documents email approval, wallet linking, points checks and reward claiming. Edges follow the sampled calls and documented modes; some internal wiring is unsampled, so uncertain links are omitted.

Main entry points: [`main.py`](https://github.com/mslolita/grass/blob/master/main.py) (Runner and worker), [`core/grass.py`](https://github.com/mslolita/grass/blob/master/core/grass.py) (Grass client), [`core/autoreger.py`](https://github.com/mslolita/grass/blob/master/core/autoreger.py) (Account scheduler), [`core/grass_sdk/extension.py`](https://github.com/mslolita/grass/blob/master/core/grass_sdk/extension.py) (Extension session)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Run orchestration"]
  node_runner["Runner and worker<br/>[main.py]"]
  node_scheduler["Account scheduler<br/>[autoreger.py]"]
  node_ui["Desktop UI<br/>[interface.py]"]
end

subgraph group_account_ops["Account operations"]
  node_grass_client["Grass client<br/>[grass.py]"]
  node_rest_api["Grass REST API<br/>[website.py]"]
  node_captcha["Captcha solver<br/>[captcha_service.py]"]
  node_email_approval["Email approval<br/>[mail.py]"]
  node_person["Profile generation<br/>[person.py]"]
end

subgraph group_farm_runtime["Farming runtime"]
  node_farm_session["Extension session<br/>[extension.py]"]
end

subgraph group_inputs_state["Inputs and state"]
  node_account_files["Account inputs<br/>[accounts.txt]"]
  node_proxy_files["Proxy inputs<br/>[proxies.txt]"]
  node_wallet_files["Wallet inputs<br/>[wallets.txt]"]
  node_config["Mode configuration<br/>[config.py]"]
  node_proxy_db[("Proxy database<br/>[accounts_db.py]")]
  node_run_logs["Run results<br/>[autoreger.py]"]
end

node_operator(("Operator"))
node_grass_service["Grass service"]
node_director["Grass director"]
node_imap["Email provider"]
node_captcha_provider["Captcha provider"]

node_operator -->|"starts run"| node_runner
node_operator -->|"starts UI"| node_ui
node_ui -.->|"starts UI mode"| node_runner
node_runner -->|"reads accounts"| node_account_files
node_runner -->|"reads proxies"| node_proxy_files
node_runner -->|"reads wallets"| node_wallet_files
node_runner -->|"reads modes"| node_config
node_runner -->|"loads proxies"| node_proxy_db
node_runner -->|"builds and starts"| node_scheduler
node_scheduler -->|"dispatches worker"| node_runner
node_scheduler -->|"writes results"| node_run_logs
node_runner -->|"runs account actions"| node_grass_client
node_runner -->|"generates credentials"| node_person
node_grass_client -->|"calls REST handlers"| node_rest_api
node_rest_api -->|"sends API requests"| node_grass_service
node_grass_client -->|"starts farming session"| node_farm_session
node_farm_session -->|"requests connection"| node_director
node_farm_session -->|"exchanges WebSocket traffic"| node_grass_service
node_grass_client -->|"gets replacement proxies"| node_proxy_db
node_runner -.->|"email approval mode"| node_email_approval
node_email_approval -->|"searches approval mail"| node_imap
node_runner -.->|"registration mode"| node_captcha
node_captcha -->|"requests solve token"| node_captcha_provider

click node_runner "https://github.com/mslolita/grass/blob/master/main.py"
click node_scheduler "https://github.com/mslolita/grass/blob/master/core/autoreger.py"
click node_ui "https://github.com/mslolita/grass/blob/master/interface.py"
click node_grass_client "https://github.com/mslolita/grass/blob/master/core/grass.py"
click node_rest_api "https://github.com/mslolita/grass/blob/master/core/grass_sdk/website.py"
click node_captcha "https://github.com/mslolita/grass/blob/master/core/utils/captcha_service.py"
click node_email_approval "https://github.com/mslolita/grass/blob/master/core/utils/mail/mail.py"
click node_person "https://github.com/mslolita/grass/blob/master/core/utils/generate/person.py"
click node_farm_session "https://github.com/mslolita/grass/blob/master/core/grass_sdk/extension.py"
click node_account_files "https://github.com/mslolita/grass/blob/master/data/accounts.txt"
click node_proxy_files "https://github.com/mslolita/grass/blob/master/data/proxies.txt"
click node_wallet_files "https://github.com/mslolita/grass/blob/master/data/wallets.txt"
click node_config "https://github.com/mslolita/grass/blob/master/data/config.py"
click node_proxy_db "https://github.com/mslolita/grass/blob/master/core/utils/accounts_db.py"
click node_run_logs "https://github.com/mslolita/grass/blob/master/core/autoreger.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_runner,node_scheduler,node_ui toneBlue
class node_grass_client,node_rest_api,node_captcha,node_email_approval,node_person toneAmber
class node_farm_session toneMint
class node_account_files,node_proxy_files,node_wallet_files,node_config,node_proxy_db,node_run_logs toneRose
class node_operator,node_grass_service,node_director,node_imap,node_captcha_provider toneIndigo
```

## Components

### Run orchestration

- [Runner and worker](https://github.com/mslolita/grass/blob/master/main.py): `main.py`
- [Account scheduler](https://github.com/mslolita/grass/blob/master/core/autoreger.py): `core/autoreger.py`
- [Desktop UI](https://github.com/mslolita/grass/blob/master/interface.py): `interface.py`

### Account operations

- [Grass client](https://github.com/mslolita/grass/blob/master/core/grass.py): `core/grass.py`
- [Grass REST API](https://github.com/mslolita/grass/blob/master/core/grass_sdk/website.py): `core/grass_sdk/website.py`
- [Captcha solver](https://github.com/mslolita/grass/blob/master/core/utils/captcha_service.py): `core/utils/captcha_service.py`
- [Email approval](https://github.com/mslolita/grass/blob/master/core/utils/mail/mail.py): `core/utils/mail/mail.py`
- [Profile generation](https://github.com/mslolita/grass/blob/master/core/utils/generate/person.py): `core/utils/generate/person.py`

### Farming runtime

- [Extension session](https://github.com/mslolita/grass/blob/master/core/grass_sdk/extension.py): `core/grass_sdk/extension.py`

### Inputs and state

- [Account inputs](https://github.com/mslolita/grass/blob/master/data/accounts.txt): `data/accounts.txt`
- [Proxy inputs](https://github.com/mslolita/grass/blob/master/data/proxies.txt): `data/proxies.txt`
- [Wallet inputs](https://github.com/mslolita/grass/blob/master/data/wallets.txt): `data/wallets.txt`
- [Mode configuration](https://github.com/mslolita/grass/blob/master/data/config.py): `data/config.py`
- [Proxy database](https://github.com/mslolita/grass/blob/master/core/utils/accounts_db.py): `core/utils/accounts_db.py`
- [Run results](https://github.com/mslolita/grass/blob/master/core/autoreger.py): `core/autoreger.py`

### Other components

- **Operator**
- **Grass service**
- **Grass director**
- **Email provider**
- **Captcha provider**

## Connections

- Operator → Runner and worker: starts run
- Operator → Desktop UI: starts UI
- Desktop UI → Runner and worker: starts UI mode
- Runner and worker → Account inputs: reads accounts
- Runner and worker → Proxy inputs: reads proxies
- Runner and worker → Wallet inputs: reads wallets
- Runner and worker → Mode configuration: reads modes
- Runner and worker → Proxy database: loads proxies
- Runner and worker → Account scheduler: builds and starts
- Account scheduler → Runner and worker: dispatches worker
- Account scheduler → Run results: writes results
- Runner and worker → Grass client: runs account actions
- Runner and worker → Profile generation: generates credentials
- Grass client → Grass REST API: calls REST handlers
- Grass REST API → Grass service: sends API requests
- Grass client → Extension session: starts farming session
- Extension session → Grass director: requests connection
- Extension session → Grass service: exchanges WebSocket traffic
- Grass client → Proxy database: gets replacement proxies
- Runner and worker → Email approval: email approval mode
- Email approval → Email provider: searches approval mail
- Runner and worker → Captcha solver: registration mode
- Captcha solver → Captcha provider: requests solve token
