SatGate

Puerta de enlace API de código abierto que añade control de presupuesto, atribución de costos y monetización a las llamadas API de agentes de IA. Compatible con MCP, con seguimiento de costos por herramienta, tokens portadores basados en macarrones, micropagos Lightning L402 y control de presupuesto empresarial (Fiat402). El cortafuegos económico para la economía de agentes.

Documentación

SatGate

SatGate

Observa, controla y admite el tráfico de agentes de IA
Cada permiso o denegación viene con un recibo firmado

CI Status Go Report Card Go Reference License

Por qué • Construir • Características • Inicio rápido • Documentación • Sitio web • Blog


SatGate es una puerta de enlace frente a APIs y herramientas MCP. Mide el tráfico de agentes y MCP (Observa), aplica los presupuestos del propietario antes de que se ejecute el trabajo (Controla), y cobra a agentes externos en las rutas que elijas (Admite; la política de Cargo en el panel de control). Cada permiso o denegación viene con un recibo firmado.

Pruébalo como agente. Esta ruta alojada cuesta 10 sats:

curl -i -H "X-SatGate-Tenant: satgate-demo" https://api.satgate.io/paid/agent-demo

La llamada no pagada devuelve HTTP 402 con una factura Lightning y términos. Las instrucciones para agentes están en llms.txt.

Construye Agentes con SatGate

La primitiva de desarrollo de SatGate son tres llamadas: issue(), pay() y verify().

import os
from satgate import SatGate

satgate = SatGate(api_key=os.getenv("SATGATE_API_KEY"))

capability = satgate.issue(
    task="research market prices",
    agent="research-agent",
    allow=["mcp:web.search", "api:prices.read"],
    budget_usd=25,
    expires_in="1h",
)

receipt = satgate.pay(
    upstream="https://api.example.com/search",
    capability=capability,
    max_usd=4.20,
)

verified = satgate.verify(receipt)
print(verified.decision, verified.evidence_pack_id)

Instala hoy:

pip install satgate
npm install @satgate/sdk

Los paquetes públicos se instalan hoy; el espacio de nombres de la API issue/pay/verify está en beta privada. Las llamadas sin acceso a la beta privada generan un error estructurado en lugar de devolver recibos falsos:

SatGateAuthError: This API namespace requires private beta access. Visit cloud.satgate.io/docs to request access.

Ejemplos ejecutables:

  • examples/python/issue_pay_verify.py
  • examples/node/issue-pay-verify.mjs

Funciona con: MCP · herramientas de OpenAI · herramientas de Anthropic · LangChain · CrewAI · HTTP sin procesar


🎬 Ve a SatGate en Acción

Watch Explainer  Watch Delegation


☁️ ¿No quieres autoalojar? Prueba SatGate Cloud

SaaS gestionado: cero configuración, aislamiento multiinquilino, panel empresarial.
Nivel Observe gratuito. No se requiere tarjeta de crédito.

Try SatGate Cloud


El Problema

Los agentes de IA están haciendo llamadas a APIs de forma autónoma. Generan subagentes, llaman a herramientas MCP y trabajan durante la noche mientras duermes.

Tu stack actual responde: "¿Está autenticada esta solicitud?"

Nadie responde: "¿Debería este agente tener autoridad para gastar, delegar o invocar este recurso de pago?"

✓ Network Firewall    → "Can this packet enter?"
✓ Application Firewall → "Is this request safe?"
? Economic Firewall    → "Should this agent act, spend, or pay?"

Esa es la brecha. SatGate la llena.

¿Qué es SatGate?

SatGate es un Firewall Económico para solicitudes de agentes de IA. Colócalo frente a tus APIs y herramientas MCP para aplicar autoridad con alcance, presupuestos, contexto de vías de pago y recibos de Evidence Pack antes de que los agentes actúen.

No es otra capa de enrutamiento. Las puertas de enlace de enrutamiento (Bifrost, LiteLLM, Portkey) optimizan qué proveedor maneja una llamada. SatGate gobierna si la llamada debería ocurrir en absoluto según autoridad, política, presupuesto y contexto de vías de pago.

Úsalos juntos:

Agent → SatGate (economic governance) → Routing Gateway → LLM Providers

Características

  • 🛡️ Tokens de Capacidad (Macaroons) — Credenciales criptográficas con restricciones integradas, delegación y revocación en la siguiente solicitud. No son claves API: son tokens que los agentes pueden subdelegar de forma segura.
  • 🎯 Consciente de MCP — Analiza llamadas de herramientas MCP JSON-RPC. Sabe que el Agente X gastó $47 en search_database y $12 en send_email — no solo "1,000 solicitudes".
  • 💰 Aplicación de Presupuestos — Detenciones estrictas por agente, equipo o API. Cuando el presupuesto llega a cero, las solicitudes se bloquean. No se registran. No se alertan. Se bloquean.
  • ⚡ Gobernanza de Vías de Pago — Gobierna el acceso a APIs de pago a través de L402, x402, facturación por clave API y libros mayores empresariales sin convertir ninguna vía en el plano de control.
  • 🔒 Denegación por Defecto — Todas las rutas requieren credenciales válidas a menos que sean explícitamente públicas. Zero Trust por diseño.
  • 🚀 <50ms de Sobrecarga — Proxy Go ligero. Añade gobernanza sin añadir latencia.
  • 📦 Autoalojado — Tu infraestructura, tus reglas. Binario único, Docker o Kubernetes.
  • 🔌 Integración Directa — Funciona con cualquier backend HTTP. REST, GraphQL, servidores MCP. Sin cambios de código.

Inicio Rápido

Demo de 60 Segundos

# Download the binary (macOS Apple Silicon — see Releases for other platforms)
curl -L https://github.com/satgate-io/satgate/releases/latest/download/satgate-darwin-arm64 -o satgate
chmod +x satgate

# Start with example config (mock Lightning, auto-generated keys)
export ADMIN_TOKEN=my-secret-token
export LIGHTNING_BACKEND=mock
./satgate --config examples/gateway.yaml

Prueba las tres políticas:

# 1. Public — no auth needed
curl http://localhost:8080/health

# 2. Protected — mint a capability token, then use it
curl -X POST http://localhost:8080/api/capability/mint \
  -H "X-Admin-Token: my-secret-token" \
  -H "Content-Type: application/json" \
  -d '{"scope": "api:read", "duration": "1h"}'

# Use the token:
curl -H "Authorization: Bearer YOUR_CAPABILITY_TOKEN" \
  http://localhost:8080/api/capability/ping

# 3. Paid — get a payment challenge (L402 today; x402/other rails as governed context)
curl http://localhost:8080/api/micro

Pública → Protegida → De pago. Tres políticas, una puerta de enlace; las vías de pago son contexto gobernado, no el límite del producto.

Demo de pago alojada (Admite; Cargo en el panel de control). Sin nodo Lightning local:

curl -i -H "X-SatGate-Tenant: satgate-demo" https://api.satgate.io/paid/agent-demo

Las llamadas no pagadas devuelven 402. El precio es de 10 sats. Muestra la factura al propietario, consulta el estado del pago y luego reintenta. Las reglas de consulta están en llms.txt.

📖 Guía completa de inicio rápido →

Otros Métodos de Instalación

# Docker
docker run -v $(pwd)/gateway.yaml:/etc/satgate/gateway.yaml \
  -e ADMIN_TOKEN=my-secret-token -e LIGHTNING_BACKEND=mock \
  -p 8080:8080 ghcr.io/satgate-io/satgate:latest

# Build from source
git clone https://github.com/satgate-io/satgate.git
cd satgate && go build -o satgate ./cmd/satgate

Configuración

version: 1

server:
  listen: ":8080"

admin:
  capabilityRootKey: "${CAPABILITY_ROOT_KEY}"

lightning:
  provider: "${LIGHTNING_BACKEND}"
  config:
    connectionString: "${NWC_CONNECTION_STRING}"

upstreams:
  api:
    url: "http://localhost:3000"

routes:
  - name: public-health
    match:
      pathPrefix: /health
    upstream: api
    policy:
      kind: public

  - name: protected-api
    match:
      pathPrefix: /api/
    upstream: api
    policy:
      kind: capability
      scope: "api:read"

  - name: premium-api
    match:
      pathPrefix: /premium/
    upstream: api
    policy:
      kind: l402  # paid-rail policy; use payment_context to preserve L402/x402/ledger evidence
      priceSats: 100

Tipos de Políticas

PolíticaDescripciónCaso de uso
publicSin autenticaciónComprobaciones de salud, documentación, webhooks
capabilityRequiere Macaroon válidoEndpoints de API protegidos
l402Requiere pago Lightning y registra el contexto de vías de pagoEndpoints monetizados; el contexto x402/libro mayor se puede conservar en Evidence Packs

En Qué se Diferencia

SatGatePuertas de EnrutamientoPuertas de API Tradicionales
Preocupación principalGobernanza económicaEnrutamiento de proveedoresGestión de tráfico
Aplicación de presupuestosLímites estrictos (bloqueados al límite)Solo alertas suaves❌
Atribución de costos MCPGranularidad por herramienta❌❌
Modelo de credencialesMacaroons (delegables)Claves APIClaves API / OAuth
Delegación de agentesSubtokens con presupuestos reducidos❌❌
Gobernanza de vías de pagoL402, x402, facturación por clave API, libros mayores empresariales❌❌
Funciona junto a—✅ Úsalos juntos✅ Úsalos juntos

Arquitectura

┌──────────────────────────────────────────────────┐
│                    SatGate                        │
│                                                   │
│  Request → Route Match → Policy Check → Proxy    │
│                             │                     │
│              ┌──────────────┼──────────────┐     │
│              │              │              │      │
│          [public]    [capability]   [paid rail]  │
│          pass        verify token     verify     │
│                      check budget     payment    │
│                      log MCP tool     context    │
└──────────────────────────────────────────────────┘

Conceptos clave:

  • Macaroons: Tokens portadores con restricciones integradas (caducidad, alcance, presupuesto, IP). No son claves API: admiten delegación sin viajes de ida y vuelta al servidor.
  • Delegación: El Agente A le da al Agente B un subtoken con permisos reducidos y un límite de presupuesto de $50. B no puede escalar.
  • Análisis MCP: SatGate lee cargas útiles MCP JSON-RPC para atribuir costos a llamadas de herramientas específicas, no solo a endpoints HTTP.
  • Contexto de vías de pago: SatGate trata L402, x402, facturación por clave API y libros mayores empresariales como vías a gobernar. Los Evidence Packs conservan qué vía estuvo involucrada sin convertir la vía en el producto.

SDKs

LenguajePaqueteDocumentación
Pythonpip install satgateREADME
JavaScriptnpm install @satgate/sdkREADME

Proxy MCP (NUEVO)

SatGate ahora incluye un proxy MCP nativo que gobierna llamadas de herramientas para cualquier agente compatible con MCP:

# Run MCP proxy with 1000-credit budget
satgate-mcp --config satgate-mcp.yaml
  • Aplicación de presupuestos: 402 estricto cuando los agentes agotan su asignación
  • Delegación: Los agentes padres generan tokens de subagente con presupuestos recortados
  • Costos por herramienta: web_search: 5, dalle_generate: 50 (se admiten patrones comodín)
  • Dos transportes: stdio (sidecar local) o SSE/HTTP (multiagente remoto)
  • Tres modos de autenticación: ninguno, token estático, macaroon (cadena HMAC)

Consulta pkg/mcpserver/README.md para la documentación completa.

Documentación

☁️ SatGate Cloud y Enterprise

¿El autoalojamiento no es lo tuyo? SatGate Cloud es la versión totalmente gestionada: la misma puerta de enlace, cero operaciones.

La puerta de enlace de código abierto maneja protección, presupuestos y aplicación de vías de pago. SatGate Cloud añade el plano de control:

  • 📊 Observa — Paneles en tiempo real, atribución de uso, etiquetado de centros de costos
  • 🎚️ Controla — Aplicación de presupuestos y políticas antes de que se ejecuten las solicitudes de agentes
  • 🤖 SatGate Mint — Aprovisionamiento de agentes sin intervención (K8s, AWS, OIDC)
  • 🏢 Multiinquilino — Aislamiento de equipos, RBAC, SSO/SCIM
  • 📝 Auditoría — Registro a prueba de manipulaciones, exportaciones de cumplimiento

Empieza Gratis → (El modo Observe es gratuito, ilimitado, para siempre)

Contribuciones

¡Agradecemos las contribuciones! Consulta CONTRIBUTING.md para las pautas.

git clone https://github.com/satgate-io/satgate.git
cd satgate
go mod download
go test ./...
go build -o satgate ./cmd/satgate

Licencia

Licencia Apache 2.0 — consulta LICENSE para más detalles.

Enlaces


Construido con ⚡ por SatGate — El Firewall Económico