Sécurité

Ce que Soreno fait sur votre machine

Le code de Soreno n’est pas public. Cette page dit donc précisément ce que l’application fait sur votre machine et sur vos serveurs, ce qu’elle envoie sur le réseau, et ce qu’elle ne protège pas.

Le principe

Pas de compte, pas de serveur Soreno

Soreno est une application de bureau. Vos projets ne passent par aucun serveur de Soreno.

  • Aucun compte

    Soreno s’ouvre sans inscription ni connexion. Le Kanban local fonctionne sans compte ; Linear n’est qu’une option.

  • Aucune télémétrie

    Ni statistiques d’usage, ni rapport de plantage : Soreno ne sait pas combien de sessions vous lancez, ni sur quels projets.

  • Vos données dans votre profil

    Notes, réglages, projets et issues locales sont enregistrés sur votre machine, dans le dossier de données de l’application.

  • Vos agents parlent à leurs fournisseurs

    Claude Code, Codex, Pi et OMP envoient vos consignes et votre code à leurs fournisseurs, comme dans votre terminal. Soreno ne s’interpose pas dans ces échanges.

Agents

Vos agents restent ceux que vous avez installés

Soreno lance vos CLI dans de vrais terminaux, ou OMP dans la vue Chat si vous la choisissez. Il ne les remplace pas : ce sont eux qui parlent à leurs fournisseurs.

  • Vos identifiants restent aux agents

    Soreno ne lit pas les fichiers de connexion de Claude Code ou de Codex. Pour vos quotas, il interroge les CLI eux-mêmes : claude auth status et /usage, qui n’appelle aucun modèle, et codex app-server.

  • Aucune autorisation contournée

    Soreno n’ajoute ni --dangerously-skip-permissions ni --yolo : chaque agent garde ses propres règles, et celui qui vous demande votre accord dans le terminal le demande aussi dans Soreno. Soreno ajoute en revanche ses consignes, par exemple pour créer une issue quand vous le demandez, et l’accès à quelques dossiers (voir Les limites).

  • Votre configuration n’est pas réécrite

    Pour suivre l’état des sessions, Soreno ajoute ses hooks au lancement de chaque session (--settings pour Claude Code, -c pour Codex). Codex vous demande de les approuver : Soreno ne contourne pas cette étape.

  • Des hooks pour suivre l’état, rien d’autre

    Pour savoir si Claude Code ou Codex travaille ou attend votre réponse, Soreno lui fait lancer un court script à chaque étape (début de tour, fin de tour, demande d’autorisation). Ce script note l’état de la session dans un fichier privé : il n’ouvre aucun port, ne répond jamais à une demande d’autorisation à votre place, et s’il échoue, l’agent continue. Pour Pi et OMP, une extension fait le même travail.

SSH

Vos serveurs, avec votre OpenSSH

Soreno n’a pas son propre client SSH : il appelle le ssh de votre système, avec votre ~/.ssh/config et votre agent SSH.

  • Aucun mot de passe enregistré

    Soreno garde l’hôte, l’utilisateur, le port et le chemin de la clé choisie, jamais la clé elle-même ni sa phrase secrète. Une clé protégée se déverrouille avec ssh-add.

  • L’empreinte du serveur vérifiée

    Chaque session exige une empreinte connue (StrictHostKeyChecking=yes) : celle de votre known_hosts, ou celle que vous avez confirmée dans Soreno après l’avoir comparée. Si elle change, la connexion est refusée.

  • Pas de transfert d’agent

    Le transfert de l’agent SSH est désactivé : le serveur ne peut pas se servir de vos clés pour se connecter ailleurs.

  • Ce qui est installé sur le serveur

    Dans ~/.cache/soreno : dtach, vérifié par son empreinte SHA-256, qui garde les sessions en vie quand Soreno est fermé, le script soreno-attach et les fichiers de suivi des sessions (hooks, pont Pi et OMP). Tout tourne sous votre compte : pas de sudo, pas de service système, pas de port ouvert.

  • Des sessions réservées à votre compte

    Chaque session écoute sur un socket Unix que seul votre compte peut ouvrir. Elle garde le dernier mégaoctet de sortie du terminal, pour le réafficher quand vous revenez.

  • Des ports redirigés en local

    Les ports redirigés depuis la barre d’état n’écoutent que sur 127.0.0.1 : le reste de votre réseau ne les voit pas.

Données

Ce qui est enregistré, et où

Les données principales sont dans ~/Library/Application Support/com.soreno.notes sur macOS et %APPDATA%\com.soreno.notes sous Windows, les journaux dans ~/Library/Logs/com.soreno.notes ou %LOCALAPPDATA%\com.soreno.notes\logs. L’interface garde aussi quelques préférences et caches dans le stockage de sa WebView.

  • Notes, projets et issues locales

    Dans des bases SQLite, et les réglages dans settings.json. Les captures collées dans une issue sont des fichiers à côté. Les issues Linear, et les captures que vous y ajoutez, sont enregistrées chez Linear.

  • La clé Linear dans le trousseau

    Si vous connectez Linear, sa clé d’API est rangée dans le Trousseau de macOS ou le Gestionnaire d’identifiants de Windows, pas dans un fichier. Vous déconnecter la supprime.

  • Ce qu’un agent reçoit d’une issue

    Lancer un agent depuis une issue lui donne sa description et le chemin de ses images, six au plus. L’agent envoie ce qu’il lit à son fournisseur, comme toute consigne.

  • Sur vos serveurs et dans WSL

    Sur un serveur SSH, les fichiers de Soreno sont dans ~/.cache/soreno, images collées comprises, et, si vous groupez des projets, dans ~/.soreno/groups. Certaines images jointes passent aussi par un dossier privé /tmp/soreno-agent-* ; dans WSL, chaque session a son dossier de contrôle dans /tmp.

Réseau

Les connexions que Soreno ouvre lui-même

La liste est complète. Vos agents, Git et vos serveurs SSH ouvrent les leurs.

  • GitHub, pour les mises à jour

    Une fois par heure, Soreno lit le fichier latest.json des versions publiées. Il télécharge la nouvelle version quand vous cliquez sur Mettre à jour.

  • GitHub, pour les skills

    Pour savoir si un skill installé a changé, Soreno lit l’arborescence de son dépôt avec l’API de GitHub, avec votre GITHUB_TOKEN s’il est défini.

  • npm ou Homebrew, pour Codex

    Pour vous signaler une nouvelle version de Codex, selon la façon dont vous l’avez installé.

  • Linear, si vous le connectez

    api.linear.app pour les issues, et ses serveurs de fichiers pour les images. La clé n’est envoyée qu’aux serveurs de Linear. Sans Linear, aucune connexion.

  • Les images de vos Markdown

    Une image distante dans une note ou dans la description d’une issue est chargée depuis son adresse, comme dans un navigateur. Ailleurs (conversations, commentaires, aperçu des fichiers), elle reste un simple lien.

  • Et les outils qu’il lance

    Vos agents, Git, npx skills et omp update ouvrent leurs propres connexions : Soreno les lance, il ne les relaie pas.

Mises à jour

Des versions signées, installées quand vous le décidez

Chaque version de Soreno est construite, signée et publiée de la même façon.

  • Signées, puis vérifiées

    Chaque version est signée à sa construction. Avant de l’installer, Soreno vérifie la signature du fichier téléchargé avec la clé publique qu’il embarque : un fichier modifié est refusé.

  • Au clic, pas en douce

    Soreno cherche seul les nouvelles versions, mais ne les télécharge et ne les installe que quand vous cliquez. Le redémarrage arrête les agents en cours en local et dans WSL ; en SSH, les terminaux continuent sur le serveur, et Chat (OMP) aussi sur un serveur Linux.

  • Construites par GitHub Actions

    Les versions sont compilées et publiées par l’intégration continue, sur le dépôt public Soreno-Releases.

  • Signée et notarisée sur macOS

    L’application macOS est signée avec un certificat Developer ID et notarisée par Apple.

Les limites

Ce que Soreno ne protège pas

Mieux vaut les connaître avant de lui confier vos projets.

  • Des données non chiffrées par Soreno

    Notes, issues et réglages sont enregistrés en clair. Leur protection est celle de votre disque : activez FileVault ou BitLocker.

  • Un agent agit avec vos droits

    Un agent lancé dans Soreno peut faire tout ce que peut votre compte, comme dans un terminal. Ses garde-fous sont les siens : Soreno ne l’enferme pas davantage.

  • Des dossiers ouverts aux agents

    Pour recevoir vos remarques et travailler sur un groupe de projets, l’agent a accès à des dossiers en plus du projet (--add-dir pour Claude Code, writable_roots pour Codex).

  • Le message de commit sans approbation

    Commit automatique lance Codex sans lui demander d’approbation, mais en lecture seule, sans shell, sans recherche web et sans votre configuration : il ne peut que rédiger le message.

  • Votre compte sur le serveur

    Une session SSH est protégée des autres comptes du serveur, pas de root ni des programmes qui tournent sous votre propre compte.

  • Windows pas encore signé

    L’installateur Windows n’a pas de certificat d’éditeur : Windows peut signaler un éditeur inconnu. Les mises à jour, elles, sont vérifiées comme sur macOS.

Vérifier

Ne nous croyez pas sur parole

Le code n’est pas public, mais ce que fait Soreno se contrôle.

  • La signature macOS

    codesign -dvv /Applications/Soreno.app affiche le certificat (Developer ID Application) ; spctl -a -vv /Applications/Soreno.app indique source=Notarized Developer ID.

  • Les connexions

    Un pare-feu applicatif comme Little Snitch ou LuLu montre chaque connexion de Soreno : comparez-les à la liste ci-dessus.

  • Les commandes lancées

    ps -efww ou le Gestionnaire des tâches (colonne Ligne de commande) montrent les CLI lancés par Soreno et les options qu’il leur ajoute.

  • Les fichiers

    Notes, réglages, projets et liste des sessions sont dans les dossiers cités plus haut : ouvrez-les, ce sont des bases SQLite et du JSON.

Une faille, un doute ?

Si vous trouvez une faille, ou si un point de cette page vous semble faux, écrivez à contactsoreno.dev.

Ouvrez votre premier projet dans Soreno

Soreno lance les CLI déjà installés sur votre machine, dans WSL ou sur vos serveurs. Vos notes, vos réglages et vos issues locales restent dans votre profil.

L’application macOS est signée et notariée par Apple. L’installateur Windows ne l’est pas encore : Windows peut signaler un éditeur inconnu.