RETIX - The Optic Nerve for Autonomous Agents
Project description
RETIX
RETIX is a local-first vision CLI for agents that need to inspect screenshots, extract visible text, and verify visual claims with deterministic output. It is built around a simple idea: keep the workflow close to the codebase, keep the defaults predictable, and expose enough control for engineering use without forcing a heavier application layer.
What RETIX Does
RETIX currently provides four primary capabilities:
describefor structured screenshot analysisocrfor text extractioncheckfor YES/NO claim verification with confidencedaemonfor keeping the model warm across repeated requests
It also includes first-class project initialization, model management, and benchmarking commands so the CLI can be used both interactively and as part of automated workflows.
Install
Recommended: PyPI
uv pip install retix
If you prefer standard pip, this also works:
pip install retix
uv resolves this dependency graph much faster than pip in practice, especially because RETIX depends on ML packages such as torch, torchvision, mlx, and mlx-vlm.
retix setup uses uv automatically when it is available and falls back to the standard Python tooling path on bare environments.
From Source
git clone https://github.com/SNiPERxDD/retix.git
cd retix
python3 -m pip install -e .
Quick Start
retix setup
retix describe screenshot.png
retix ocr document.png
retix check image.png "button is visible"
If you run retix with no arguments, the CLI prints the help screen.
Architecture
RETIX keeps the control flow simple: the CLI routes requests, the project layer resolves local state, inference runs through the model stack, and the daemon path keeps the model warm for repeated requests.
flowchart LR
U[User or Agent] --> C[retix CLI]
C --> S[setup / config]
C --> A[describe / ocr / check]
C --> M[model / bench]
C --> D[daemon]
S --> P[.retix\nconfig.yaml\nSKILL.md]
S --> H[path_utils.py\nconfig.py]
A --> I[inference.py]
I --> Z[image_preprocessing.py]
I --> G[guardrails.py]
I --> L[MLX-VLM runtime]
D --> T[daemon_server.py]
T --> L
M --> R[model_management.py]
M --> B[benchmarking.py\nbenchmark_tokens_resolution.py]
L --> O[structured output]
G --> O
This layout matches the codebase: retix/main.py owns routing, retix/project_config.py handles project-local state, retix/inference.py and retix/image_preprocessing.py own the vision path, and retix/daemon_server.py provides the warm-process mode.
Command Reference
Screenshot Analysis
retix describe <image>
retix describe <image> --prompt "focus on buttons"
retix describe <image> --json
OCR
retix ocr <image>
retix ocr <image> --json
Claim Verification
retix check <image> "submit button is visible"
retix check <image> "error banner is red" --json
Project Setup
retix setup
retix setup --non-interactive
retix config
retix setup validates the environment, creates the local cache virtual environment under ~/.cache/retix/venv when needed, and selects a model tier based on the machine.
If uv is installed, setup uses it for dependency installation and editable installs; otherwise it falls back to the virtual environment's built-in pip path.
retix config creates the project context in .retix/ and keeps the repository ignore rules aligned with RETIX artifacts.
Model Management
retix model list
retix model info
retix model switch 2b
retix model switch 8b
retix model switch moe
Benchmarking
retix bench
Daemon
retix daemon start
retix daemon status
retix daemon stop
retix daemon stop sends SIGTERM, waits for graceful shutdown, escalates to SIGKILL if necessary, and removes stale PID/socket files.
Project Files
RETIX keeps project-local state in:
.retix/
SKILL.md
config.yaml
The generated skill file is designed for agent integration and uses a minimal metadata header with ID, Name, and Version.
Performance Notes
RETIX includes two built-in optimizations that matter in practice:
- High-resolution images are automatically downscaled before inference when needed.
- The CLI uses task-specific token limits rather than one fixed ceiling for every command.
The repository also includes benchmark_tokens_resolution.py for comparing token budgets and image resolutions.
Testing
pytest tests
For the real-world image suite:
RETIX_RUN_REAL_WORLD=1 pytest tests/real_world -m real_world
Troubleshooting
Torch Installation Feels Stuck
If pip install retix appears to hang while resolving torch, use uv:
uv pip install retix
In practice, uv resolves and installs RETIX far faster than pip for this dependency set.
If uv is not installed:
brew install uv
Need a Known-Good Install Path
If you want to avoid the resolver entirely, install the project from source:
git clone https://github.com/SNiPERxDD/retix.git
cd retix
python3 -m pip install -e .
License
MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file retix-1.2.6.tar.gz.
File metadata
- Download URL: retix-1.2.6.tar.gz
- Upload date:
- Size: 33.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b40a8fd0c3323e466af849f10495d296470c11846ce1c82237ec63e884d829ae
|
|
| MD5 |
9f1138e62e38449548ca9d63c5ed6536
|
|
| BLAKE2b-256 |
08adf3f0bbf8c3b16541c3c0336f34e4372fa89987a64b54291240287fa25068
|
File details
Details for the file retix-1.2.6-py3-none-any.whl.
File metadata
- Download URL: retix-1.2.6-py3-none-any.whl
- Upload date:
- Size: 38.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72527652e677f7704f60cebdb4713d003ff012b62551c8b896aa6fde81efe3f0
|
|
| MD5 |
4da5169b4e836bfb882c678b90532158
|
|
| BLAKE2b-256 |
7acc43d060126fb709ea7f72b596956533812e0933e077f97e759614eea306c1
|