IEl modelo de custodia

Nada sale.
Nada llama a casa.

SQAI se ejecuta donde viven tus datos. En el momento de la consulta no hay llamada de red que interceptar, ningún servicio que almacene tus filas, ninguna telemetría. Esta hoja da cuenta de cada byte que cruza el cable — hay exactamente dos movimientos, y ninguno es tu información.

Hoja de custodiaSQAI · modo local
contract_hash sha256:79f1c5a6c716…be9a1Emitido a: tu proceso
  • Tus filas

    Leídas dentro de tu proceso. Nunca copiadas, nunca subidas, nunca en manos de nadie más que tú.

    nunca
  • Planes y resultados

    Validados y ejecutados en proceso. Los resultados viven en un almacén local acotado y expiran a los 15 minutos.

    nunca
  • Telemetría

    No existe. Sin llamadas de analítica, sin informes de fallos, sin ningún destino al que llamar.

    nunca
  • Paquete de runtime

    Código del motor, descargado una vez desde Cloudflare R2 y verificado antes de escribir un solo archivo. El código entra; las filas nunca salen.

    una vez · entrante · firmado
  • Inicio de sesión del dispositivo

    Opcional. Transfiere un token de licencia firmado entre tu máquina y el servicio de cuenta — nunca tus datos.

    opcional · solo token

Sin red en tiempo de consulta. Corta el cable tras la instalación y cada consulta sigue respondiendo.

Solo lectura no es una configuración.
Es la forma de la herramienta.

4.574 capacidades expuestas · todas de lectura · sin ruta de escritura que configurar mal

IIILa única descarga

Seis verificaciones antes de escribir un archivo.

El paquete de runtime es lo único que SQAI descarga — código del motor desde Cloudflare R2, tratado como hostil hasta que se demuestre lo contrario. La verificación se ejecuta antes de la extracción, continúa archivo por archivo, y la instalación es atómica.

  1. 01

    Una clave aceptada

    Las versiones se firman con RS256 mediante una única clave RSA-4096. Una sola clave verifica; nada más es de confianza.

  2. 02

    Verificar antes de extraer

    La firma se comprueba sobre el manifiesto antes de desempaquetar cualquier archivo. Un paquete manipulado o sin firmar nunca llega tan lejos.

  3. 03

    Esquema y seguridad de rutas

    El manifiesto debe ajustarse al esquema esperado, y cada ruta listada debe resolverse dentro del directorio raíz de instalación.

  4. 04

    sha256 por artefacto

    Cada archivo se hashea y se compara con el manifiesto firmado. Un solo byte discrepante invalida toda la instalación.

  5. 05

    No listado o enlace simbólico — rechazado

    Un archivo que el manifiesto no lista, o cualquier enlace simbólico, rechaza el paquete de inmediato.

  6. 06

    Instalación atómica, reversión bloqueada

    La extracción se realiza en un directorio temporal y se mueve a su lugar con un único renombrado atómico. Las versiones por debajo del umbral aceptado se rechazan como rollback_protected.

El artefacto bajo inspecciónruntime_bundle 0.1.0sha256 4d64142e4c1ff63d299cfc8b172fdf97cb59169b545e1e02978e678a632ce6e1MIN_ACCEPTED_RUNTIME_VERSION 0.1.0 · below → rollback_protected

IVClaves e higiene de errores

Superficies pequeñas, mantenidas pequeñas.

La clave de dispositivo

ubicación
~/.sqai — en tu directorio personal, nunca a nivel de sistema
permisos
modo de archivo 600 — legible solo por ti
emisión
inicio de sesión de dispositivo opcional (código de dispositivo RFC 8628)
qué se transmite
un token de licencia firmado — nunca tus datos

Lo que ve el modelo

Lanzado en tu procesoENOENT: no such file or directory — /Users/dana/finance/q3-actuals.csv
Entregado al modeloENOENT: no such file or directory

sanitizeMessage elimina las rutas absolutas de cada error visible por el modelo. La estructura de tu sistema de archivos nunca forma parte del contexto del modelo.

VEl almacén de resultados

Un identificador que no prueba nada.

Los resultados voluminosos permanecen tras un identificador en lugar de saturar el contexto del modelo. El identificador está diseñado para ser inútil para cualquiera que no sea el tenant emisor.

result_id
16 bytes aleatorios, base64url — imposible de adivinar, sin vínculo con ninguna consulta ni tenant
autorización
con ámbito de tenant — solo el tenant emisor puede canjearlo
tenant incorrecto
result_not_found — indistinguible de un identificador que nunca existió
vigencia
TTL de 15 minutos · ≤256 resultados · 64 MB en total · 16 MB por tenant

result_id = base64url(randomBytes(16))

tenant emisor→ ok
cualquier otro tenant→ result_not_found

No prohibido — no encontrado. La existencia nunca se revela.

VIEl manual de air-gap

Funciona donde el cable está cortado.

El plano de consultas está desconectado por diseño; solo el runtime de cómputo se descarga alguna vez. Para operar completamente desconectado, recibe el paquete tú mismo — al verificador no le importa de dónde provienen los bytes.

  1. 01

    Desactivar la instalación automática

    SQAI nunca descargará el runtime de forma implícita.

    $export SQAI_RUNTIME_AUTO_INSTALL=0
  2. 02

    Transferir el paquete manualmente

    Descarga el paquete firmado en una máquina conectada y transfiérelo según tu propia política de transferencia.

  3. 03

    Instalar desde el archivo

    Las seis comprobaciones se ejecutan sobre el archivo local — misma firma, mismo manifiesto, mismos hashes por artefacto.

    $sqai runtime install --from-file <bundle>
  4. 04

    Verificar en sitio

    Vuelve a comprobar el runtime instalado contra la única clave de versión aceptada, en cualquier momento.

    $sqai runtime verify

Tras la instalación: red cero. Las consultas, las comprobaciones de política y los hashes de procedencia se calculan localmente.

VIILas preguntas de revisión

Preguntado en toda revisión de seguridad.

¿Qué sale exactamente de mi máquina?

En el momento de la consulta, nada. A lo largo de la vida de una instalación, dos cosas cruzan la red: un paquete de runtime firmado entrante desde Cloudflare R2 (código del motor, no filas) y — solo si optas por el inicio de sesión de dispositivo — un token de licencia firmado. No hay telemetría.

¿El modo de solo lectura es simplemente un indicador que alguien podría cambiar?

No. Un indicador de solo lectura en una conexión de base de datos es una promesa; SQAI es una superficie ausente. Las 4.574 capacidades expuestas son lecturas — no existe ruta de escritura, DDL ni eval que proteger — y la salida de emergencia (getUnsafeRuntime) nunca es accesible para un modelo.

¿Puede el modelo ampliar su propio acceso?

No. La política se fija en código en el momento de createSQAI() y se verifica en proceso antes de la ejecución. La entrada de herramienta que completa el modelo no contiene campos allowed*, y nombrar una capacidad fuera de la lista de permitidos lanza unsupported_operation.

¿Funciona SQAI en modo air-gapped?

Sí. Establezca SQAI_RUNTIME_AUTO_INSTALL=0, transfiera el paquete firmado manualmente e instálelo con sqai runtime install --from-file. La misma cadena de verificación se ejecuta contra el archivo, y el plano de consultas opera completamente sin conexión.

¿Puede un mensaje de error filtrar rutas de archivo al modelo?

No. sanitizeMessage elimina las rutas absolutas de cada error visible para el modelo, de modo que este nunca conoce la estructura de su sistema de archivos.

El siguiente paso

Traiga su revisión de seguridad.

Recorra el cuestionario con nosotros — custodia, firma, política, air-gap — cada respuesta trazable hasta el código.