withOhm

oficial

Plano de control de tráfico de IA (gobernador de caos): reproducción de prompts en Redis, ingesta web compatible, libro mayor de organizaciones con SSO, Agent Shell. Entrada compatible con OpenAI mediante BYOK. Cursor opcional; MCP es un cliente de compatibilidad.

¿Qué puedes hacer con withOhm MCP?

  • Replay de prompts en caché — Pide a tu IA que reenvíe una solicitud idéntica y obtén una respuesta byte-idéntica con X-AT-Cache: HIT, facturada como un acierto en lugar de una llamada de modelo nueva.
  • Verificar recibos criptográficos — Haz que tu asistente compruebe el JWS firmado X-Ohm-Receipt en cualquier respuesta usando verify_receipt.py para demostrar que un acierto fue real, no afirmado.
  • Obtener contexto web público — Usa ohm_fetch_web para recuperar páginas públicas como markdown/JSON redactado, con indicadores de cumplimiento como web_purpose y web_compliance_ack aplicados.
  • Consultar uso y facturación — Consulta ohm_usage para ver el consumo medido en los medidores ohm_cache_hit, ohm_cache_miss y ohm_web_fetch, además de la estimación de ahorro entre inquilinos.
  • Chatear a través del proxy — Usa ohm_chat para enviar solicitudes compatibles con OpenAI a cualquier proveedor (OpenAI, Anthropic, Google, etc.) mediante una única URL base, con BYOK vía X-Ohm-Upstream-Key.

Documentación

Ohm (withOhm)

CI Golden path (nightly, production)

En una frase: withOhm es un proxy que se sitúa entre tu aplicación (o Cursor) y OpenAI/Anthropic/etc. — reproduce solicitudes byte-idénticas de forma gratuita en lugar de volver a pagar al modelo, obtiene contexto web público bajo controles de cumplimiento, y te da una única factura auditable con recibo criptográfico en lugar de varias facturas opacas de proveedores.

El conducto medido sobre inferencia desperdiciada y repetida: entrada compatible con OpenAI, reproducción de indicaciones con Redis, ingesta web conforme, arrendamiento de organización con SSO y un libro mayor corporativo limpio. Para las empresas, el mismo conducto es un gobernador del caos para el gasto en IA (cuña canónica: docs/GEM_POSITION.md). Cursor/MCP son clientes opcionales.

Aciertos de reproducción exacta que cuestan cero tokens ascendentes. Consistencia entre proveedores. Localidad — lecturas de borde Redis. Valor de reproducción y auditoría. Apunta cualquier cliente compatible con OpenAI (o el Ohm Agent Shell) a una única URL base. Conserva tus claves o usa un grupo gestionado. Alquila la plomería; gobierna el caos.

Sitio: https://www.withohm.dev · API: https://api.withohm.dev/v1 · Workbench: /workbench · Arquitectura: docs/ARCHITECTURE.md · Visión: docs/VISION.md · Empresa: docs/ENTERPRISE_CHAOS.md · Gem: docs/GEM_POSITION.md · Auditoría de cuidado: docs/CARE_AUDIT.md — la disciplina de mantenimiento de la verdad aplicada a cada afirmación pública; léela antes de juzgar la relación ingeniería-atracción.

Licencia: MIT (ver LICENSE + NOTICE). El código fuente es abierto; el conducto withOhm alojado sigue siendo un servicio comercial medido. Los nombres de paquetes/claves pueden seguir diciendo at-utility / sk-at-* (prefijo AT heredado); el producto es withOhm.

Etapa, sin rodeos

Sin giros: withOhm está en pre-semilla y pre-atracción por diseño, no por accidente de omisión. Tabla completa y regla de fuentes: docs/STATUS.md.

HechoAhora
Versión0.1.2
Socios de diseño0 de los 10 equipos objetivo (docs/DESIGN_PARTNERS.md — "desde cero")
Financiación institucionalNinguna; pre-incorporación (docs/distribution/INVESTOR_INTRO_TARGETS.md)
RegiónÚnica (us-east-1); sin SLA contractual
Cobertura de pruebas automatizadas30 archivos, más de 215 funciones de prueba en tests/ (pytest -q, CI en cada push)

La disciplina de ingeniería y auditoría (pruebas, recibos firmados, INSPECTION.md, docs/CARE_AUDIT.md) es en lo que se ha invertido el tiempo pre-atracción — lee los números de etapa y la disciplina juntos, no uno solo.

Verifícalo tú mismo

La prosa es barata; cada afirmación que soporta carga viene con el comando que la comprueba.

AfirmaciónVerificación
El conducto está activo (ambos planos)curl -s https://api.withohm.dev/health && curl -s https://api.withohm.dev/ready
Los aciertos se reproducen y se facturan como aciertosEnvía el mismo cuerpo dos veces; la segunda respuesta tiene X-AT-Cache: HIT + X-AT-Billed-USD
Un acierto es criptográfico, no afirmadoLas respuestas de acierto llevan X-Ohm-Receipt (JWS firmado) — verifica: python scripts/verify_receipt.py "<receipt>" (docs/RECEIPTS.md)
Las claves de firma son públicascurl -s https://api.withohm.dev/.well-known/http-message-signatures-directory
Límites y rechazos publicadoscurl -s https://api.withohm.dev/v1/public/honesty — lo que no haremos, con el endpoint que prueba cada elemento
Contador de ahorro entre inquilinoscurl -s https://api.withohm.dev/v1/public/stats (siempre estimate_only: true)
La ruta de revisión funciona cada noche contra producciónGolden path workflow history

Contrato local para desarrolladores (estable)

RolDirecciónNotas
Entrada pública de clientehttp://localhost:8081/v1Borde Rust. Apunte aquí los kits de desarrollo de software de OpenAI.
Plano de control internohttp://localhost:8080Python FastAPI. Los proxies Rust van aquí en caso de fallo de caché. No des esto a desconocidos.
AutenticaciónAuthorization: Bearer <ohm-api-key>Clave de arranque local: sk-at-dev (ver .env).
BYOKX-Ohm-Upstream-Key: <provider-key>Requerido en fallo de caché para gpt/claude a menos que haya claves gestionadas por entorno/empresa.
Selección de modeloCampo JSON modelmock permanece local; gpt-* / o* → OpenAI; claude-* → Anthropic; gemini-* → Google; deepseek-* → DeepSeek; kimi-* / moonshot-* → Moonshot; glm-* → Z.ai; qwen* → Qwen; grok-* → xAI (todos compatibles con OpenAI, BYOK).
from at_utility_sdk import openai_client, LOCAL_BASE_URL

client = openai_client(
    "sk-at-dev",
    base_url=LOCAL_BASE_URL,
    upstream_api_key="sk-proj-...",
)
completion = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello"}],
)

Inicio rápido (Docker Compose)

cd <repo-root>   # e.g. clone of iwasinnam2/ohm
copy .env.example .env
# Edit .env: set OPENAI_API_KEY for local env-fallback; keep OPENAI_BASE_URL=https://api.openai.com/v1
docker compose --profile rust up --build -d
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\release_smoke.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\railgun_smoke.ps1

Ejecución nativa en la nube / agente (sin Docker): ver AGENTS.md.

El smoke de release verifica salud, fallo/acierto simulado, fallo/acierto de OpenAI (cuando hay una clave presente), cabecera de plano Rust y contadores de uso. El smoke de Railgun verifica cabeceras BYOK, seat_plus_meters y la forma del endpoint de checkout.

Cursor / MCP

MCP local stdio más un MCP remoto sin estado sobre HTTP transmisible (núcleo sin estado MCP 2026-07-28). Base pública: https://api.withohm.dev/v1. Socios: docs/LAUNCH_GTM.md · https://www.withohm.dev/design-partners

pip install withohm-mcp
# monorepo dev alternative: pip install -e ".[mcp]"
# stdio (Cursor local attach): set OHM_API_KEY (required). Optional: OHM_UPSTREAM_KEY, OHM_BASE_URL
# Plugin: .cursor-plugin/ + mcp.json — see docs/CURSOR.md

# Remote (stateless streamable HTTP at /mcp, default port 8091):
#   OHM_MCP_TRANSPORT=http ohm-mcp     (or: ohm-mcp-http)
# Auth is per-request: clients send `Authorization: Bearer sk-at-*`
# (falls back to OHM_API_KEY env). Host allowlist: OHM_MCP_ALLOWED_HOSTS.

Honestidad sobre streaming y conmutación por error

  • No streaming de completaciones de chat: el borde Rust puede reintentar el upstream de Python (URL primaria y luego de respaldo) antes de devolver un cuerpo. Las escrituras de caché ocurren después de una respuesta completa exitosa.
  • Streaming de completaciones de chat: la conmutación por error pre-primer-byte está implementada. El plano Python abre con avidez el stream upstream, reintenta una vez si muere antes del primer byte, y devuelve un error HTTP honesto (no un stream de marco de error 200) si ambos intentos fallan; el borde Rust cae en errores de conexión o 5xx pre-primer-byte y reenvía el stream de tokens fragmento a fragmento (sin buffering en el borde). La transferencia de proveedor a mitad de stream después del primer byte sin reconexión del cliente no está soportada — planifica reconexión o no-stream para rutas críticas.

Reglas de entorno

  • Los secretos en vivo pertenecen solo a .env (ignorado por git).
  • .env.example nunca debe contener un secreto vivo de OpenAI o Stripe.
  • Después de cambiar .env, recrea los contenedores: docker compose up -d --force-recreate gateway.
  • OPENAI_BASE_URL debe ser https://api.openai.com/v1, nunca el host del sitio web platform.openai.com.

Límites legales (obligatorio)

La ingesta web es solo pública y limitada por propósito bajo las normas del RGPD/CMA del Reino Unido y CFAA/CCPA de EE. UU. Todo el repositorio debe permanecer dentro de este marco—ver docs/LEGAL.md.

Cuando fetch_web_context es verdadero, los clientes deben enviar:

  • web_purpose — uno de public_web_retrieval, business_catalog, public_company_info, job_listings
  • web_compliance_ack: true — confirmar solo público, sin recolección de clientes potenciales / expedientes / acceso restringido
  • terms_ack / dpa_ack: true — vincular plantillas de docs/legal/
  • opcional cache_control: "no_store" — omitir escritura en Redis para indicaciones confidenciales

Inspecciona la política en vivo: GET /v1/compliance/policy. Plantillas: Términos, DPA, lista de verificación ascendente bajo docs/legal/.

Arquitectura

CapaRol
gateway-rs (:8081)Borde público: caché de protocolo de serialización Redis, proxy, cabecera de plano
Python gateway (:8080)API compatible con OpenAI, proveedores, límites de velocidad, medición, arrendamiento, puertas de cumplimiento
Ingest worker (:8090)Meta-búsqueda + obtención de páginas públicas → markdown/JSON redactado para fetch_web_context
src/at_utility/compliance/Matriz de propósito, puerta de URL, robots.txt, redacción de PII
src/ohm_mcp/Adjunto MCP de Cursor (ohm_fetch_web, ohm_usage, ohm_chat)
Redis líder / réplicaCaché + RL; GET en réplica/lector, SET en líder — docs/REDIS_MESH.md
infra/Terraform + Kubernetes: EKS de una sola región (malla conservada detrás de banderas)
site/Marketing + docs + autoservicio /billing

Arrendamiento y facturación

La clave de arranque sk-at-dev funciona localmente. Autoservicio: POST /v1/billing/checkout (sitio /billing). Operaciones: emisión con clave de administrador (AT_ADMIN_API_KEYS):

curl.exe -s -X POST http://localhost:8080/v1/admin/tenants `
  -H "Authorization: Bearer sk-at-dev" `
  -H "Content-Type: application/json" `
  -d "{\"plan\":\"payg\",\"label\":\"design-partner-1\",\"terms_ack\":true,\"dpa_ack\":true}"

Los inquilinos suspendidos (POST /v1/admin/tenants/{id}/status con {"status":"suspended"}, o webhook de cancelación de Stripe) reciben HTTP 403.

La medición escribe claves de libro mayor diarias duraderas y sincroniza los medidores de facturación de Stripe cuando stripe_customer_id está configurado (ohm_web_fetch, ohm_cache_hit, ohm_cache_miss).

Libros mayores: El cliente paga a los proveedores (BYOK). El cliente paga asiento + medidores de Ohm. Opcional: pip install -e ".[billing]".

Pruebas

pip install -e ".[dev,billing]"
pytest -q