# moreveal/mimic architecture

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

- Interactive diagram: https://gitdiagram.com/moreveal/mimic
- Repository: https://github.com/moreveal/mimic

## Overview

Mimic is a browser-execution runtime for automation: a CDP client commands pages, which load resources and execute website JavaScript while maintaining observable browser state, then expose results through CDP. The graph preserves the documented profile, proxy, storage, worker, and layout capabilities. Source excerpts are limited, so some subsystem connections are based on the README and module structure rather than inspected call sites.

Main entry points: [`internal/browser/page.go`](https://github.com/moreveal/mimic/blob/main/internal/browser/page.go) (Page execution), [`internal/browser/context_registry.go`](https://github.com/moreveal/mimic/blob/main/internal/browser/context_registry.go) (Contexts and pages), [`internal/cdp/server.go`](https://github.com/moreveal/mimic/blob/main/internal/cdp/server.go) (CDP server), [`internal/webapi/catalog.go`](https://github.com/moreveal/mimic/blob/main/internal/webapi/catalog.go) (Web APIs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_control["Automation control"]
  node_entry["Mimic entry<br/>[main.go]"]
  node_cdp["CDP server<br/>[server.go]"]
end

subgraph group_runtime["Page runtime"]
  node_browser["Browser manager<br/>[browser.go]"]
  node_context["Contexts and pages"]
  node_page["Page execution<br/>[page.go]"]
  node_engine["JavaScript engines<br/>[engine.go]"]
end

subgraph group_web["Web behavior"]
  node_dom["DOM and parser<br/>[dom.go]"]
  node_html["HTML streaming<br/>[parse.go]"]
  node_api["Web APIs<br/>[catalog.go]"]
  node_layout["Style and geometry<br/>[document.go]"]
end

subgraph group_state["Identity and state"]
  node_profile["Environment profiles<br/>[profile.go]"]
  node_cookies[("Cookie state<br/>[cookies.go]")]
  node_cache[("Cache Storage<br/>[cache_storage.go]")]
  node_storage[("Browser storage APIs<br/>[indexeddb.go]")]
end

subgraph group_network["Resource access"]
  node_loader["Resource loader<br/>[loader.go]"]
  node_policy["Network policy<br/>[policy.go]"]
  node_transport["HTTP and proxy transport<br/>[session.go]"]
end

node_client(("CDP client"))
node_origin(("Web origins"))

node_client -->|"starts"| node_entry
node_client -->|"sends CDP commands"| node_cdp
node_entry -->|"creates"| node_browser
node_cdp -->|"manages targets"| node_browser
node_cdp -->|"creates page"| node_context
node_context -->|"owns"| node_page
node_page -->|"executes scripts"| node_engine
node_page -->|"parses documents"| node_html
node_html -->|"builds DOM"| node_dom
node_page -->|"exposes APIs"| node_api
node_page -->|"maintains geometry"| node_layout
node_page -->|"loads resources"| node_loader
node_loader -->|"checks requests"| node_policy
node_loader -->|"sends requests"| node_transport
node_transport -->|"fetches resources"| node_origin
node_context -->|"configures identity"| node_profile
node_context -->|"shares cookie state"| node_cookies
node_api -->|"accesses Cache Storage"| node_cache
node_api -->|"accesses storage APIs"| node_storage
node_profile -->|"configures proxy"| node_transport

click node_entry "https://github.com/moreveal/mimic/blob/main/cmd/mimic/main.go"
click node_cdp "https://github.com/moreveal/mimic/blob/main/internal/cdp/server.go"
click node_browser "https://github.com/moreveal/mimic/blob/main/internal/browser/browser.go"
click node_context "https://github.com/moreveal/mimic/blob/main/internal/browser/context_registry.go"
click node_page "https://github.com/moreveal/mimic/blob/main/internal/browser/page.go"
click node_engine "https://github.com/moreveal/mimic/blob/main/internal/engine/engine.go"
click node_dom "https://github.com/moreveal/mimic/blob/main/internal/dom/dom.go"
click node_html "https://github.com/moreveal/mimic/blob/main/internal/htmlstream/parse.go"
click node_api "https://github.com/moreveal/mimic/blob/main/internal/webapi/catalog.go"
click node_layout "https://github.com/moreveal/mimic/blob/main/internal/layoutblitz/document.go"
click node_profile "https://github.com/moreveal/mimic/blob/main/internal/profile/profile.go"
click node_cookies "https://github.com/moreveal/mimic/blob/main/internal/network/cookies.go"
click node_cache "https://github.com/moreveal/mimic/blob/main/internal/browser/cache_storage.go"
click node_storage "https://github.com/moreveal/mimic/blob/main/internal/browser/indexeddb.go"
click node_loader "https://github.com/moreveal/mimic/blob/main/internal/network/loader.go"
click node_policy "https://github.com/moreveal/mimic/blob/main/internal/network/policy.go"
click node_transport "https://github.com/moreveal/mimic/blob/main/internal/network/session.go"

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_entry,node_cdp,node_client toneBlue
class node_browser,node_context,node_page,node_engine toneAmber
class node_dom,node_html,node_api,node_layout toneMint
class node_profile,node_cookies,node_cache,node_storage toneRose
class node_loader,node_policy,node_transport,node_origin toneIndigo
```

## Components

### Automation control

- [Mimic entry](https://github.com/moreveal/mimic/blob/main/cmd/mimic/main.go): `cmd/mimic/main.go`
- [CDP server](https://github.com/moreveal/mimic/blob/main/internal/cdp/server.go): `internal/cdp/server.go`

### Page runtime

- [Browser manager](https://github.com/moreveal/mimic/blob/main/internal/browser/browser.go): `internal/browser/browser.go`
- [Contexts and pages](https://github.com/moreveal/mimic/blob/main/internal/browser/context_registry.go): `internal/browser/context_registry.go`
- [Page execution](https://github.com/moreveal/mimic/blob/main/internal/browser/page.go): `internal/browser/page.go`
- [JavaScript engines](https://github.com/moreveal/mimic/blob/main/internal/engine/engine.go): `internal/engine/engine.go`

### Web behavior

- [DOM and parser](https://github.com/moreveal/mimic/blob/main/internal/dom/dom.go): `internal/dom/dom.go`
- [HTML streaming](https://github.com/moreveal/mimic/blob/main/internal/htmlstream/parse.go): `internal/htmlstream/parse.go`
- [Web APIs](https://github.com/moreveal/mimic/blob/main/internal/webapi/catalog.go): `internal/webapi/catalog.go`
- [Style and geometry](https://github.com/moreveal/mimic/blob/main/internal/layoutblitz/document.go): `internal/layoutblitz/document.go`

### Identity and state

- [Environment profiles](https://github.com/moreveal/mimic/blob/main/internal/profile/profile.go): `internal/profile/profile.go`
- [Cookie state](https://github.com/moreveal/mimic/blob/main/internal/network/cookies.go): `internal/network/cookies.go`
- [Cache Storage](https://github.com/moreveal/mimic/blob/main/internal/browser/cache_storage.go): `internal/browser/cache_storage.go`
- [Browser storage APIs](https://github.com/moreveal/mimic/blob/main/internal/browser/indexeddb.go): `internal/browser/indexeddb.go`

### Resource access

- [Resource loader](https://github.com/moreveal/mimic/blob/main/internal/network/loader.go): `internal/network/loader.go`
- [Network policy](https://github.com/moreveal/mimic/blob/main/internal/network/policy.go): `internal/network/policy.go`
- [HTTP and proxy transport](https://github.com/moreveal/mimic/blob/main/internal/network/session.go): `internal/network/session.go`

### Other components

- **CDP client**
- **Web origins**

## Connections

- CDP client → Mimic entry: starts
- CDP client → CDP server: sends CDP commands
- Mimic entry → Browser manager: creates
- CDP server → Browser manager: manages targets
- CDP server → Contexts and pages: creates page
- Contexts and pages → Page execution: owns
- Page execution → JavaScript engines: executes scripts
- Page execution → HTML streaming: parses documents
- HTML streaming → DOM and parser: builds DOM
- Page execution → Web APIs: exposes APIs
- Page execution → Style and geometry: maintains geometry
- Page execution → Resource loader: loads resources
- Resource loader → Network policy: checks requests
- Resource loader → HTTP and proxy transport: sends requests
- HTTP and proxy transport → Web origins: fetches resources
- Contexts and pages → Environment profiles: configures identity
- Contexts and pages → Cookie state: shares cookie state
- Web APIs → Cache Storage: accesses Cache Storage
- Web APIs → Browser storage APIs: accesses storage APIs
- Environment profiles → HTTP and proxy transport: configures proxy
