# glaudsonvilela/mimo-agente architecture

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

- Interactive diagram: https://gitdiagram.com/glaudsonvilela/mimo-agente
- Repository: https://github.com/glaudsonvilela/mimo-agente

## Overview

Mimo is a local Android website-exploration and QA agent. The operator submits a prompt and authorized site; the local agent maps pages, performs bounded security checks, and publishes activity and evidence for the mobile interface, which presents documentation and exports. The graph preserves the documented crawler, security, live-activity, reporting, and per-site memory capabilities. Some subsystem links are documented in the README rather than shown in sampled implementation; those edges cite the README.

Main entry points: [`backend/core.py`](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/core.py) (Agent orchestration), [`backend/qa_crawler.py`](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_crawler.py) (Bounded crawler), [`frontend/src/live-session.js`](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/live-session.js) (Live session), [`frontend/src/main.js`](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/main.js) (App interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Android app"]
  node_main_activity["WebView host<br/>[MainActivity.java]"]
  node_webcore["Local service<br/>[WebCore.java]"]
  node_native_browser["Native browser<br/>[QaBrowser.java]"]
end

subgraph group_agent["Local agent"]
  node_agent_core["Agent orchestration<br/>[core.py]"]
  node_tools["Tool adapters<br/>[tools.py]"]
  node_skills["Methodology skills<br/>[skills.py]"]
  node_learning[("Site memory<br/>[qa_learning.py]")]
end

subgraph group_analysis["Site analysis"]
  node_crawler["Bounded crawler<br/>[qa_crawler.py]"]
  node_session["Origin-bound session<br/>[qa_session.py]"]
  node_browser["JavaScript browser<br/>[qa_browser.py]"]
  node_webview_broker["WebView broker<br/>[qa_webview.py]"]
  node_security["Security checks<br/>[qa_security.py]"]
  node_forensic["Forensic analysis<br/>[qa_forensic.py]"]
  node_verification["Finding verification<br/>[qa_verify.py]"]
  node_evidence["Evidence handling<br/>[qa_evidence.py]"]
end

subgraph group_presentation["Interface and reporting"]
  node_frontend["App interface<br/>[main.js]"]
  node_live_session["Live session<br/>[live-session.js]"]
  node_phone_adapter["Public event adapter<br/>[phone-adapter.js]"]
  node_mascot["Learning mascot<br/>[mascot.js]"]
  node_documentation["Report builder<br/>[documentation.js]"]
  node_download["Report export<br/>[download.js]"]
end

node_operator(("Operator"))
node_site(("Authorized website"))
node_termux["Termux runtime"]

node_operator -->|"submits request"| node_frontend
node_frontend -->|"starts session"| node_live_session
node_live_session -->|"sends request"| node_agent_core
node_agent_core -->|"dispatches tools"| node_tools
node_agent_core -->|"uses skills"| node_skills
node_agent_core -->|"invokes mapping"| node_crawler
node_agent_core -->|"requests rendering"| node_webview_broker
node_agent_core -->|"uses memory"| node_learning
node_tools -->|"uses crawler"| node_crawler
node_crawler -->|"uses credentials"| node_session
node_crawler -->|"uses browser"| node_browser
node_crawler -->|"requests rendering"| node_webview_broker
node_crawler -->|"records observations"| node_evidence
node_crawler -->|"uses analysis"| node_forensic
node_site -->|"serves pages"| node_crawler
node_agent_core -->|"performs checks"| node_security
node_agent_core -->|"analyzes findings"| node_forensic
node_forensic -->|"verifies findings"| node_verification
node_evidence -->|"uses classifications"| node_security
node_learning -->|"compares observations"| node_security
node_agent_core -->|"publishes state"| node_live_session
node_live_session -->|"maps state"| node_phone_adapter
node_live_session -->|"updates report"| node_documentation
node_live_session -->|"shares learning"| node_mascot
node_frontend -->|"creates report"| node_documentation
node_documentation -->|"exports report"| node_download
node_main_activity -->|"starts service"| node_webcore
node_main_activity -->|"hosts browser"| node_native_browser
node_main_activity -->|"loads interface"| node_frontend
node_termux -->|"runs agent"| node_agent_core

click node_main_activity "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/android/src/local/poco/ai/MainActivity.java"
click node_webcore "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/android/src/local/poco/ai/WebCore.java"
click node_native_browser "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/android/src/local/poco/ai/QaBrowser.java"
click node_frontend "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/main.js"
click node_live_session "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/live-session.js"
click node_phone_adapter "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/phone-adapter.js"
click node_mascot "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/mascot.js"
click node_documentation "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/documentation.js"
click node_download "https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/download.js"
click node_agent_core "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/core.py"
click node_tools "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/tools.py"
click node_skills "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/skills.py"
click node_crawler "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_crawler.py"
click node_session "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_session.py"
click node_browser "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_browser.py"
click node_webview_broker "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_webview.py"
click node_security "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_security.py"
click node_forensic "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_forensic.py"
click node_verification "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_verify.py"
click node_evidence "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_evidence.py"
click node_learning "https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_learning.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_main_activity,node_webcore,node_native_browser toneBlue
class node_agent_core,node_tools,node_skills,node_learning toneAmber
class node_crawler,node_session,node_browser,node_webview_broker,node_security,node_forensic,node_verification,node_evidence toneMint
class node_frontend,node_live_session,node_phone_adapter,node_mascot,node_documentation,node_download toneRose
class node_operator,node_site,node_termux toneIndigo
```

## Components

### Android app

- [WebView host](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/android/src/local/poco/ai/MainActivity.java): `frontend/android/src/local/poco/ai/MainActivity.java`
- [Local service](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/android/src/local/poco/ai/WebCore.java): `frontend/android/src/local/poco/ai/WebCore.java`
- [Native browser](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/android/src/local/poco/ai/QaBrowser.java): `frontend/android/src/local/poco/ai/QaBrowser.java`

### Local agent

- [Agent orchestration](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/core.py): `backend/core.py`
- [Tool adapters](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/tools.py): `backend/tools.py`
- [Methodology skills](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/skills.py): `backend/skills.py`
- [Site memory](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_learning.py): `backend/qa_learning.py`

### Site analysis

- [Bounded crawler](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_crawler.py): `backend/qa_crawler.py`
- [Origin-bound session](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_session.py): `backend/qa_session.py`
- [JavaScript browser](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_browser.py): `backend/qa_browser.py`
- [WebView broker](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_webview.py): `backend/qa_webview.py`
- [Security checks](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_security.py): `backend/qa_security.py`
- [Forensic analysis](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_forensic.py): `backend/qa_forensic.py`
- [Finding verification](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_verify.py): `backend/qa_verify.py`
- [Evidence handling](https://github.com/glaudsonvilela/mimo-agente/blob/main/backend/qa_evidence.py): `backend/qa_evidence.py`

### Interface and reporting

- [App interface](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/main.js): `frontend/src/main.js`
- [Live session](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/live-session.js): `frontend/src/live-session.js`
- [Public event adapter](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/phone-adapter.js): `frontend/src/phone-adapter.js`
- [Learning mascot](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/mascot.js): `frontend/src/mascot.js`
- [Report builder](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/documentation.js): `frontend/src/documentation.js`
- [Report export](https://github.com/glaudsonvilela/mimo-agente/blob/main/frontend/src/download.js): `frontend/src/download.js`

### Other components

- **Operator**
- **Authorized website**
- **Termux runtime**

## Connections

- Operator → App interface: submits request (evidence: `README.md`)
- App interface → Live session: starts session (evidence: `frontend/src/main.js`)
- Live session → Agent orchestration: sends request (evidence: `README.md`)
- Agent orchestration → Tool adapters: dispatches tools (evidence: `backend/core.py`)
- Agent orchestration → Methodology skills: uses skills (evidence: `backend/core.py`)
- Agent orchestration → Bounded crawler: invokes mapping (evidence: `backend/core.py`)
- Agent orchestration → WebView broker: requests rendering (evidence: `backend/core.py`)
- Agent orchestration → Site memory: uses memory (evidence: `backend/core.py`)
- Tool adapters → Bounded crawler: uses crawler (evidence: `backend/tools.py`)
- Bounded crawler → Origin-bound session: uses credentials (evidence: `backend/qa_crawler.py`)
- Bounded crawler → JavaScript browser: uses browser (evidence: `backend/qa_crawler.py`)
- Bounded crawler → WebView broker: requests rendering (evidence: `backend/qa_crawler.py`)
- Bounded crawler → Evidence handling: records observations (evidence: `backend/qa_crawler.py`)
- Bounded crawler → Forensic analysis: uses analysis (evidence: `backend/qa_crawler.py`)
- Authorized website → Bounded crawler: serves pages (evidence: `README.md`)
- Agent orchestration → Security checks: performs checks (evidence: `README.md`)
- Agent orchestration → Forensic analysis: analyzes findings (evidence: `README.md`)
- Forensic analysis → Finding verification: verifies findings (evidence: `backend/qa_forensic.py`)
- Evidence handling → Security checks: uses classifications (evidence: `backend/qa_evidence.py`)
- Site memory → Security checks: compares observations (evidence: `backend/qa_learning.py`)
- Agent orchestration → Live session: publishes state (evidence: `README.md`)
- Live session → Public event adapter: maps state (evidence: `frontend/src/live-session.js`)
- Live session → Report builder: updates report (evidence: `frontend/src/live-session.js`)
- Live session → Learning mascot: shares learning (evidence: `frontend/src/main.js`)
- App interface → Report builder: creates report (evidence: `frontend/src/main.js`)
- Report builder → Report export: exports report (evidence: `frontend/src/documentation.js`)
- WebView host → Local service: starts service (evidence: `frontend/android/src/local/poco/ai/MainActivity.java`)
- WebView host → Native browser: hosts browser (evidence: `frontend/android/src/local/poco/ai/MainActivity.java`)
- WebView host → App interface: loads interface (evidence: `README.md`)
- Termux runtime → Agent orchestration: runs agent (evidence: `README.md`)
