Skip to main content

RETIX - The Optic Nerve for Autonomous Agents

Project description

RETIX

PyPI Python License

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:

  • describe for structured screenshot analysis
  • ocr for text extraction
  • check for YES/NO claim verification with confidence
  • daemon for 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

retix-1.2.4.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

retix-1.2.4-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file retix-1.2.4.tar.gz.

File metadata

  • Download URL: retix-1.2.4.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for retix-1.2.4.tar.gz
Algorithm Hash digest
SHA256 cca4eba98b4427d465eaec89f71c2870ed738e1dbea1a7c1158d25a2ef70d7d8
MD5 6035c49ee66e75701baabfc890a76127
BLAKE2b-256 b7c6c99a3a82f124421e24c6d43ed848eeea299ec3b7fe5d311fbd6b18bf90ee

See more details on using hashes here.

File details

Details for the file retix-1.2.4-py3-none-any.whl.

File metadata

  • Download URL: retix-1.2.4-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for retix-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f8b40a880dfc83c7bcf5e815585822d349419daf14caa3a066551ca5b139ba13
MD5 cbe2433804287b58fd75c81340b984b4
BLAKE2b-256 dea59be0b8b8a848f88702448a26e735fdeded5abb2f045165e79163af63cca0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page