# ozongo/dseyes architecture

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

## Overview

DsEyes is a lightweight image-to-text vision bridge: an agent or user supplies images and a task prompt, and the CLI returns a vision model’s text for the main model to use. The main runtime is concentrated in one script, so its distinct stages are shown as separate responsibilities sharing that path. The GUI edits the same configuration and can test connectivity. Provider protocols and these workflows are documented; sampled source excerpts are partial, so uncertain internal wiring is omitted.

Main entry points: [`scripts/translate.py`](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py) (CLI entry), [`scripts/gui.py`](https://github.com/ozongo/dseyes/blob/master/scripts/gui.py) (GUI editor), [`SKILL.md`](https://github.com/ozongo/dseyes/blob/master/SKILL.md) (Agent skill)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_config["Configuration"]
  node_resolve["Resolve config<br/>[translate.py]"]
  node_configfile["User config"]
end

subgraph group_runtime["Translation Runtime"]
  node_cli["CLI entry<br/>[translate.py]"]
  node_images["Image loader<br/>[translate.py]"]
  node_prompt["Prompt selection<br/>[translate.py]"]
  node_dispatch["Provider dispatch<br/>[translate.py]"]
  node_output["Text / JSON output<br/>[translate.py]"]
end

subgraph group_providers["Vision Providers"]
  node_http["HTTP requests<br/>[translate.py]"]
  node_openai_chat["OpenAI Chat<br/>[translate.py]"]
  node_openai_responses["OpenAI Responses<br/>[translate.py]"]
  node_anthropic["Anthropic<br/>[translate.py]"]
  node_gemini["Gemini<br/>[translate.py]"]
end

subgraph group_gui["Configuration GUI"]
  node_gui["GUI editor<br/>[gui.py]"]
end

node_agent(("Main agent"))
node_user(("CLI user"))
node_skill["Agent skill<br/>[SKILL.md]"]
node_vision{{"Vision API"}}

node_agent -.->|"consults"| node_skill
node_agent -->|"invokes"| node_cli
node_user -->|"runs"| node_cli
node_cli -->|"resolves"| node_resolve
node_resolve -->|"reads"| node_configfile
node_gui -->|"writes"| node_configfile
node_gui -->|"loads"| node_resolve
node_gui -->|"tests via"| node_http
node_cli -->|"loads"| node_images
node_images -->|"returns images"| node_cli
node_cli -->|"selects"| node_prompt
node_cli -->|"dispatches"| node_dispatch
node_dispatch -->|"selects"| node_openai_chat
node_dispatch -->|"selects"| node_openai_responses
node_dispatch -->|"selects"| node_anthropic
node_dispatch -->|"selects"| node_gemini
node_openai_chat -->|"posts"| node_http
node_openai_responses -->|"posts"| node_http
node_anthropic -->|"posts"| node_http
node_gemini -->|"posts"| node_http
node_http -->|"sends request"| node_vision
node_vision -->|"returns response"| node_http
node_dispatch -->|"returns text"| node_output
node_output -->|"provides result"| node_agent

click node_skill "https://github.com/ozongo/dseyes/blob/master/SKILL.md"
click node_cli "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_resolve "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_gui "https://github.com/ozongo/dseyes/blob/master/scripts/gui.py"
click node_images "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_prompt "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_dispatch "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_http "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_openai_chat "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_openai_responses "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_anthropic "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_gemini "https://github.com/ozongo/dseyes/blob/master/scripts/translate.py"
click node_output "https://github.com/ozongo/dseyes/blob/master/scripts/translate.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_resolve,node_configfile,node_user toneBlue
class node_cli,node_images,node_prompt,node_dispatch,node_output toneAmber
class node_http,node_openai_chat,node_openai_responses,node_anthropic,node_gemini,node_vision toneMint
class node_gui toneRose
class node_agent toneIndigo
class node_skill toneTeal
```

## Components

### Configuration

- [Resolve config](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- **User config**

### Translation Runtime

- [CLI entry](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [Image loader](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [Prompt selection](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [Provider dispatch](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [Text / JSON output](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`

### Vision Providers

- [HTTP requests](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [OpenAI Chat](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [OpenAI Responses](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [Anthropic](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`
- [Gemini](https://github.com/ozongo/dseyes/blob/master/scripts/translate.py): `scripts/translate.py`

### Configuration GUI

- [GUI editor](https://github.com/ozongo/dseyes/blob/master/scripts/gui.py): `scripts/gui.py`

### Other components

- **Main agent**
- **CLI user**
- [Agent skill](https://github.com/ozongo/dseyes/blob/master/SKILL.md): `SKILL.md`
- **Vision API**

## Connections

- Main agent → Agent skill: consults
- Main agent → CLI entry: invokes
- CLI user → CLI entry: runs
- CLI entry → Resolve config: resolves
- Resolve config → User config: reads
- GUI editor → User config: writes
- GUI editor → Resolve config: loads
- GUI editor → HTTP requests: tests via
- CLI entry → Image loader: loads
- Image loader → CLI entry: returns images
- CLI entry → Prompt selection: selects
- CLI entry → Provider dispatch: dispatches
- Provider dispatch → OpenAI Chat: selects
- Provider dispatch → OpenAI Responses: selects
- Provider dispatch → Anthropic: selects
- Provider dispatch → Gemini: selects
- OpenAI Chat → HTTP requests: posts
- OpenAI Responses → HTTP requests: posts
- Anthropic → HTTP requests: posts
- Gemini → HTTP requests: posts
- HTTP requests → Vision API: sends request
- Vision API → HTTP requests: returns response
- Provider dispatch → Text / JSON output: returns text
- Text / JSON output → Main agent: provides result
