v0.1 — TLS · ACME · audit HIPAA · hot reload

El ingress que vigila
tu tráfico desde
la altura de un cóndor.

nginx arrastra OpenSSL; Envoy pide un control plane; el resto suma C, GC y CVEs. Condor es un proxy HTTP inverso en Rust puro: un binario estático de ~7 MB, cero dependencias C (TLS con rustls + ring, sin OpenSSL), con HTTPS automático vía ACME, audit log append-only para HIPAA y hot reload sin cortar conexiones. Hecho para entornos regulados donde la residencia de datos y una superficie mínima no se negocian.

~7 MB
binario estático musl, stripped
0
dependencias C · sin OpenSSL
HTTP/2
y HTTP/1.1, downstream y upstream
180
tests · clippy limpio

Por qué Condor

Menos superficie, más control.

01

Cero OpenSSL

TLS con rustls + ring; los JWT con RustCrypto puro. Sin libssl, sin C linkeado: toda la clase de CVEs de OpenSSL sale de la superficie.

02

Un binario, sin sorpresas

~7 MB estáticos para x86_64-unknown-linux-musl, sin dependencias dinámicas. Se copia a la VM y corre. Imagen scratch opcional del mismo tamaño.

03

HTTPS automático (ACME)

Emisión y renovación de certificados Let's Encrypt vía desafío HTTP-01, con instant-acme sobre ring. SNI multi-dominio con resolver dinámico — los certs entran sin reiniciar.

04

Audit para cumplimiento

JSONL append-only, una línea por petición (request_id, IP, método, host, status, upstream, latencia, user_id). Rotación diaria, compatible WORM. Pensado para HIPAA / ISO-27001.

05

Hot reload sin drop

SIGHUP, POST /reload o cambios en el archivo recargan rutas, upstreams, middleware y certificados TLS en caliente con un swap atómico — sin cortar conexiones ni reiniciar (rotación de certs sin downtime).

06

Resiliencia incluida

Circuit breaker por upstream, health checks activos y outlier detection pasiva per-target: el que acumula 5xx se eyecta solo, con backoff, y se readmite solo. Nunca se eyecta el último target servible.

07

Gateway, no solo proxy

Auth JWT (JWKS), API key y HTTP Basic (bcrypt), IP ACL con CIDR, rate limiting por IP, redirects, rewrites y headers — por ruta. Y canary releases: traffic splitting ponderado con cutover por hot reload.

08

Observabilidad nativa

Métricas Prometheus (condor_*: requests, latencia, salud de upstreams, estado del circuito, handshakes TLS) y logs JSON con tracing.

09

Sin control plane

Toda la config en un YAML legible que un equipo de ops puede versionar y operar. Sin xDS, sin sidecars de configuración, sin daemon aparte.

Config

Todo en un archivo.

Un condor.yaml describe listeners, rutas, upstreams con su estrategia de balanceo, middleware por ruta y auditoría. Validá sin arrancar con condor check.

global:
  max_connections_per_ip: 100   # anti-abuso por IP
  header_read_timeout_secs: 30  # anti-slowloris
  request_timeout_secs: 60      # upstream lento → 408

listeners:
  - addr: "0.0.0.0:443"
    tls:
      mode: acme                 # file | acme | self_signed
      acme_email: ops@example.com
      acme_domains: ["api.example.com"]

routes:
  - name: api
    match_host: api.example.com
    match_path: /v1/*
    upstream: app-pool
    middleware:
      - type: auth
        mode: jwt
        jwks_url: "https://auth.example.com/.well-known/jwks.json"
      - type: ratelimit
        requests_per_second: 500
      - type: audit

upstreams:
  - name: app-pool
    strategy: round_robin     # round_robin | least_conn | random | ip_hash
    targets:
      - addr: "10.0.0.11:8080"
      - addr: "10.0.0.12:8080"
    health_check: { path: /health, interval_secs: 5 }
    circuit_breaker: { failure_threshold: 50, recovery_secs: 30 }

Comparativa

Frente a otros proxies.

CaracterísticanginxEnvoyCaddyCondor
Lenguaje / runtimeCC++Go (GC)Rust (sin GC)
Sin OpenSSL/BoringSSL✗ OpenSSL✗ BoringSSL✓ rustls
Binario único estático✓ ~7 MB
HTTPS automático (ACME)~ certbot✓ nativo
Audit append-only WORM/HIPAA~ access log~ access log~ access log✓ JSONL
Circuit breaker integrado~ Plus~ plugin
Traffic splitting / canary~ split_clients~ pesos✓ + hot reload
Outlier detection per-target~ max_fails~ pasivo✓ backoff + guardas
WebSocket / Upgrade
Timeouts + límites de conexión~ básico
Control de acceso por IP (CIDR)~ plugin
WAF (firmas SQLi/XSS/…)~ ModSecurity~ WASM/ext~ plugin✓ nativo
Redirects / rewrites
Compresión gzip
Sin control plane✗ xDS
ConfigDSL propioYAML + xDSCaddyfileYAML

Comparación de arquitectura, no de benchmarks. Las cifras de throughput/latencia de Condor son objetivos de diseño y se publicarán cuando estén medidas.