ILe modèle de garde

Rien ne sort.
Rien ne rappelle à la maison.

SQAI s'exécute là où vos données résident. Au moment d'une requête, aucun appel réseau n'est interceptable, aucun service ne détient vos lignes, aucune télémétrie n'est émise. Cette fiche rend compte de chaque octet qui transite sur le réseau — il y a exactement deux mouvements, et aucun n'est votre donnée.

Fiche de gardeSQAI · mode local
contract_hash sha256:79f1c5a6c716…be9a1Émis pour : votre processus
  • Vos lignes

    Lues dans votre processus. Jamais copiées, jamais téléversées, jamais détenues par quiconque d'autre que vous.

    jamais
  • Plans et résultats

    Validés et exécutés en processus. Les résultats résident dans un store local borné et expirent après 15 minutes.

    jamais
  • Télémétrie

    Inexistante. Aucun appel analytique, aucun rapporteur de plantage, aucune maison à rappeler.

    jamais
  • Bundle d'exécution

    Code du moteur, récupéré une fois depuis Cloudflare R2 et vérifié avant qu'un seul fichier soit écrit. Le code entre ; les lignes ne sortent jamais.

    une fois · entrant · signé
  • Connexion de l'appareil

    Optionnelle. Transfère un jeton de licence signé entre votre machine et le service de compte — jamais vos données.

    optionnel · jeton uniquement

Aucun réseau au moment des requêtes. Coupez le fil après l'installation : chaque requête répond quand même.

La lecture seule n'est pas un réglage.
C'est la forme de l'outil.

4 574 capacités exposées · chacune en lecture · aucun chemin d'écriture à mal configurer

IIILe seul téléchargement

Six vérifications avant qu'un fichier arrive.

Le bundle d'exécution est la seule chose que SQAI récupère — du code moteur depuis Cloudflare R2, traité comme hostile jusqu'à preuve du contraire. La vérification s'exécute avant l'extraction, se poursuit fichier par fichier, et l'installation est atomique.

  1. 01

    Une clé acceptée

    Les versions sont signées RS256 avec une clé de publication RSA-4096 unique. Une seule clé vérifie ; rien d'autre n'est approuvé.

  2. 02

    Vérifier avant d'extraire

    La signature est vérifiée sur le manifeste avant qu'aucun fichier ne soit décompressé. Un bundle altéré ou non signé n'arrive jamais jusque-là.

  3. 03

    Schéma et sécurité des chemins

    Le manifeste doit correspondre au schéma attendu, et chaque chemin listé doit se résoudre à l'intérieur de la racine d'installation.

  4. 04

    sha256 par artefact

    Chaque fichier est haché et comparé au manifeste signé. Un seul octet discordant fait échouer l'installation entière.

  5. 05

    Non listé ou lien symbolique — rejeté

    Un fichier absent du manifeste, ou tout lien symbolique, entraîne le rejet immédiat du bundle.

  6. 06

    Installation atomique, rollback plancher

    L'extraction s'effectue dans un répertoire temporaire, puis est mise en place par un renommage atomique unique. Les versions inférieures au plancher accepté sont refusées en tant que rollback_protected.

L'artefact en cours d'inspectionruntime_bundle 0.1.0sha256 4d64142e4c1ff63d299cfc8b172fdf97cb59169b545e1e02978e678a632ce6e1MIN_ACCEPTED_RUNTIME_VERSION 0.1.0 · below → rollback_protected

IVClés et hygiène des erreurs

Surfaces réduites, maintenues telles.

La clé d'appareil

emplacement
~/.sqai — dans votre répertoire personnel, nulle part ailleurs
permissions
mode fichier 600 — lisible par vous seul
émission
connexion d'appareil optionnelle (code d'appareil RFC 8628)
ce qui transite
un jeton de licence signé — jamais vos données

Ce que voit le modèle

Levée dans votre processusENOENT: no such file or directory — /Users/dana/finance/q3-actuals.csv
Transmise au modèleENOENT: no such file or directory

sanitizeMessage supprime les chemins absolus de chaque erreur visible par le modèle. La structure de votre système de fichiers ne fait jamais partie du contexte du modèle.

VLe store de résultats

Un handle qui ne prouve rien.

Les résultats volumineux restent derrière un handle plutôt que d'inonder le contexte du modèle. Le handle est conçu pour être sans valeur pour quiconque autre que le tenant émetteur.

result_id
16 octets aléatoires, base64url — impossible à deviner, sans lien avec une requête ou un tenant
autorisation
limité au tenant — seul le tenant émetteur peut l'utiliser
mauvais tenant
result_not_found — impossible à distinguer d'un handle qui n'a jamais existé
durée de vie
TTL de 15 min · ≤256 résultats · 64 Mo total · 16 Mo par tenant

result_id = base64url(randomBytes(16))

tenant émetteur→ ok
tout autre tenant→ result_not_found

Pas interdit — introuvable. L'existence n'est jamais divulguée.

VILe runbook air-gap

Fonctionne là où le réseau est coupé.

Le plan de requête est hors ligne par conception ; seul le runtime de calcul est jamais récupéré. Pour fonctionner entièrement déconnecté, prenez livraison du bundle vous-même — le vérificateur ne se soucie pas de l'origine des octets.

  1. 01

    Désactiver l'installation auto

    SQAI ne récupérera jamais le runtime implicitement.

    $export SQAI_RUNTIME_AUTO_INSTALL=0
  2. 02

    Transférer le bundle

    Récupérez le bundle signé sur une machine connectée et transférez-le selon votre propre politique de transfert.

  3. 03

    Installer depuis le fichier

    Les six vérifications s'exécutent sur le fichier local — même signature, même manifeste, mêmes hachages par artefact.

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

    Vérifier en place

    Revérifiez le runtime installé par rapport à la clé de publication unique acceptée, à tout moment.

    $sqai runtime verify

Après installation : zéro réseau. Les requêtes, les contrôles de politique et les hachages de provenance sont calculés localement.

VIILes questions d'audit

Posées à chaque revue de sécurité.

Qu'est-ce qui quitte exactement ma machine ?

Au moment d'une requête, rien. Sur la durée de vie d'une installation, deux éléments transitent par le réseau : un bundle de runtime signé entrant depuis Cloudflare R2 (code moteur, pas de données), et — uniquement si vous optez pour la connexion d'appareil — un jeton de licence signé. Il n'y a aucune télémétrie.

Le mode lecture seule est-il simplement un indicateur que l'on pourrait modifier ?

Non. Un indicateur lecture seule sur une connexion de base de données est une promesse ; SQAI est une surface absente. Les 4 574 capacités exposées sont des lectures — il n'existe aucun chemin d'écriture, DDL ou eval à protéger — et la trappe de secours (getUnsafeRuntime) n'est jamais accessible par un modèle.

Le modèle peut-il élargir ses propres accès ?

Non. La politique est fixée dans le code au moment de createSQAI() et vérifiée en cours de processus avant l'exécution. L'entrée d'outil que le modèle renseigne ne comporte aucun champ allowed*, et nommer une capacité hors de la liste d'autorisation lève unsupported_operation.

SQAI fonctionne-t-il en mode isolé (air-gapped) ?

Oui. Définissez SQAI_RUNTIME_AUTO_INSTALL=0, déplacez vous-même le bundle signé, puis installez-le avec sqai runtime install --from-file. La même chaîne de vérification s'applique au fichier, et le plan de requête reste entièrement hors ligne dans tous les cas.

Un message d'erreur peut-il exposer mes chemins de fichiers au modèle ?

Non. sanitizeMessage supprime les chemins absolus de chaque erreur visible par le modèle — celui-ci n'apprend jamais la structure de votre système de fichiers.

Prochaine étape

Apportez votre audit de sécurité.

Parcourez le questionnaire avec nous — garde, signature, politique, isolation — chaque réponse traçable jusqu'au code.