Skip to main content

A permissive-license-aware framework for serving modern computer vision models locally and over Cloudflare Tunnel.

Project description

VisionServeX

Local-first computer vision API gateway — secure, private, and honest.
Serve modern CV models on your machine. Local-only by default. No data retained.

Apache-2.0 Python 3.10+ CI v1.0.0rc2 ruff


What is VisionServeX?

VisionServeX is an open-source, permissive-license-aware Python framework for running modern computer vision models locally and exposing them through a stable HTTP API. It works as a local model gateway: start it once, call any supported model through one clean API.

Privacy-first design:

  • Binds to 127.0.0.1 by default — nothing leaves your machine.
  • Images are decoded in memory for inference and never written to disk by default.
  • No data is retained between requests by default.
  • Log redaction removes tokens, base64, and API keys from all output.

⚠️ No end-to-end encryption claimed. VisionServeX cannot provide E2E encryption in the cryptographic sense — the inference server must see plaintext image tensors to run models. We provide local-first processing, no-retention defaults, optional encryption-at-rest for job metadata, and auth for public mode. See docs/privacy.md.


Quickstart (CPU, 5 minutes)

pip install 'visionservex[server,hf,rfdetr]'

visionservex getting-started      # personalized guide
visionservex pull rfdetr-nano     # fast COCO detection, CPU-capable
visionservex serve                 # http://127.0.0.1:8080
curl -F "image=@image.jpg" -F "model_id=rfdetr-nano" \
     http://127.0.0.1:8080/detect | jq

Python Client

from visionservex import Client, VisionModel

# Direct inference (local, no server needed)
result = VisionModel("dfine-s").predict("image.jpg")

# Via local gateway
client = Client("http://127.0.0.1:8080")
result = client.detect("rfdetr-nano", "image.jpg")
result = client.grounded_segment("grounded-sam2", "image.jpg", prompt="car, person")
result = client.classify("swinv2-tiny", "image.jpg")

What works today

Family Models Task Status Install
Mock mock-* All stable base
RF-DETR rfdetr-nano/small/… detect beta [rfdetr]
RF-DETR-Seg rfdetr-seg-nano/small/… segment beta [rfdetr]
D-FINE dfine-n/s/m/l/x detect beta [hf]
Grounding DINO grounding-dino-tiny/… open-vocab detect beta [hf]
SwinV2 swinv2-tiny/small/base/large classify beta [hf]
SAM v1 sam-vit-base/large/huge foundation segment beta [hf]
SAM 2 sam2-hiera-tiny/small/… foundation segment beta [hf]
Grounded SAM grounded-sam grounded segment beta [hf]
Grounded-SAM2 grounded-sam2 grounded segment beta [hf]
OneFormer oneformer-swin-large/… semantic/panoptic beta [hf]
RTMPose rtmpose-s/m/… pose docker/manual openmmlab
RTMDet-R/R2 rtmdet-r*/r2* OBB docker/manual openmmlab
ONNX export SwinV2 working [onnx]
TensorRT dry-run only

GPU: CUDA verified on RTX 5080 in v0.7.0 for 6 model families. Run visionservex gpu smoke-test on your hardware.
MPS: Implemented, unverified (no Apple Silicon test hardware).

"beta" means: CPU-verified, CUDA-verified when noted, CLI/Python/gateway tested. No known regressions. May have edge cases.


Security and Privacy

# Check your current security posture
visionservex security audit --json

# Switch to public-mode configuration
visionservex security mode cloudflare_private --apply

# Generate an API key for development
visionservex gateway token

# Verify log redaction works
visionservex security test-redaction

# See what temp files exist
visionservex privacy inspect-cache
visionservex privacy cleanup --dry-run

Security modes:

Mode Binding Auth Notes
local_private 127.0.0.1 Optional Default, safest
lan_private LAN Required TLS recommended
cloudflare_private 127.0.0.1 + tunnel Required Cloudflare Access recommended
production_multi_user 127.0.0.1 + proxy Required Encrypted job store, audit logs

Safe Cloudflare Tunnel

export VISIONSERVEX_AUTH__ENABLED=true
export VISIONSERVEX_AUTH__API_KEY=$(visionservex gateway token 2>&1 | grep "API key:" | awk '{print $NF}')

visionservex tunnel config --domain api.yourdomain.com --out tunnel.yaml
visionservex serve &
visionservex tunnel run tunnel.yaml --i-understand-this-is-public

Installation

pip install visionservex                   # base (no heavy deps)
pip install 'visionservex[server]'         # + HTTP API server
pip install 'visionservex[hf]'             # + HF Transformers (D-FINE, GD, SwinV2, SAM, SAM2, OneFormer)
pip install 'visionservex[rfdetr]'         # + RF-DETR and RF-DETR-Seg
pip install 'visionservex[server,hf,rfdetr]'  # full recommended

OpenMMLab (RTMPose, RTMDet-R): Docker sidecar or pip install openmim && mim install mmengine mmcv mmpose. See docs/openmmlab_expert_models.md.


Syntax Contract

All 222 documented CLI/Python/API examples are covered and verified. No example is allowed to silently fail or return a raw traceback.

visionservex syntax audit             # verify 222 examples, failing must be 0
visionservex validation run release   # run full CI test suite

Documentation

Beginner quickstart 5-minute guide
Local gateway Gateway commands and Python client
Security Threat model, modes, configuration
Privacy No E2E claim, retention policy, encryption
Threat model What we protect and what we don't
Model zoo All 68 models with status table
Model downloads Download system, auto-pull
OpenMMLab expert RTMPose, RTMDet-R, Co-DINO, InternImage
Cloudflare Tunnel Public mode safely
GPU validation CPU/CUDA/MPS status
Benchmarks Latency numbers
Syntax contract 222 verified examples
Troubleshooting Common errors
About Author, citation

License and model licenses

Apache-2.0. See LICENSE and NOTICE.

Each integrated model retains its own upstream license. Review model, checkpoint, and dataset licenses before commercial use. See docs/model_licenses.md.


What remains before v1.0.0 final

  • OpenMMLab checkpoint auto-download (currently CHECKPOINT_REQUIRED structured error)
  • RTMPose / RTMDet-R2 real end-to-end inference via sidecar (checkpoints needed)
  • MPS verification on Apple Silicon hardware
  • TensorRT real engine build (currently dry-run)

Citation

@software{sajjadi2026visionservex,
  author = {Arash Sajjadi},
  title  = {{VisionServeX: A permissive-license-aware framework for local CV model serving}},
  year   = {2026},
  url    = {https://github.com/arashsajjadi/VisionServeX},
  note   = {Developed under the supervision of Prof. Mark Eramian, University of Saskatchewan.}
}

Author: Arash Sajjadi — PhD Candidate, Department of Computer Science, University of Saskatchewan
Supervision: Prof. Mark Eramian, Computer Vision Lab
(This project is not an official product of the University of Saskatchewan.)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

visionservex-1.0.0rc2.tar.gz (136.3 kB view details)

Uploaded Source

Built Distribution

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

visionservex-1.0.0rc2-py3-none-any.whl (171.8 kB view details)

Uploaded Python 3

File details

Details for the file visionservex-1.0.0rc2.tar.gz.

File metadata

  • Download URL: visionservex-1.0.0rc2.tar.gz
  • Upload date:
  • Size: 136.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for visionservex-1.0.0rc2.tar.gz
Algorithm Hash digest
SHA256 2320f4a8c507815cd79a4bb4d17171e5855495d61c18a71c22e06731a4aa2288
MD5 594c8ca5d5612feb01c641b30d9c8a78
BLAKE2b-256 2e12a8ce65c585eb0f4f4f684b66e0fb98e69f08ee9740e1095b3589ac34ffea

See more details on using hashes here.

Provenance

The following attestation bundles were made for visionservex-1.0.0rc2.tar.gz:

Publisher: publish.yml on arashsajjadi/VisionServeX

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file visionservex-1.0.0rc2-py3-none-any.whl.

File metadata

  • Download URL: visionservex-1.0.0rc2-py3-none-any.whl
  • Upload date:
  • Size: 171.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for visionservex-1.0.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 36f0faa9d20129a9f32b3c4b38783e92439ab9e13e2939ba0d31b5114bedf649
MD5 2c419a18d17508c521d75a2068e31b68
BLAKE2b-256 8fcd297860ee38c6bce4bc0af09ce1e29df483dd48f671920ea89cfd3b4d2859

See more details on using hashes here.

Provenance

The following attestation bundles were made for visionservex-1.0.0rc2-py3-none-any.whl:

Publisher: publish.yml on arashsajjadi/VisionServeX

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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