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.6.tar.gz (33.7 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.6-py3-none-any.whl (38.9 kB view details)

Uploaded Python 3

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

Hashes for retix-1.2.6.tar.gz
Algorithm Hash digest
SHA256 b40a8fd0c3323e466af849f10495d296470c11846ce1c82237ec63e884d829ae
MD5 9f1138e62e38449548ca9d63c5ed6536
BLAKE2b-256 08adf3f0bbf8c3b16541c3c0336f34e4372fa89987a64b54291240287fa25068

See more details on using hashes here.

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

Hashes for retix-1.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 72527652e677f7704f60cebdb4713d003ff012b62551c8b896aa6fde81efe3f0
MD5 4da5169b4e836bfb882c678b90532158
BLAKE2b-256 7acc43d060126fb709ea7f72b596956533812e0933e077f97e759614eea306c1

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