Configuration de bureau (Windows, Linux et macOS)
Memories lit un fichier TOML UTF-8 pour les paramètres locaux non secrets. La CLI, le démon, l'application de zone de notification Windows, l'application de barre de menus macOS et la WebUI utilisent le même chargeur de configuration. L'archive de distribution contient memories.example.toml ; le modèle source se trouve dans crates/cli/assets/memories.example.toml.
Créer et inspecter
memories config path
memories config init
memories config show
config init crée un exemple commenté à l'emplacement normal de configuration. Il n'écrase jamais un fichier existant. config path indique l'emplacement exact sélectionné, et config show affiche les valeurs effectives sans ouvrir ni créer le stockage chiffré. Pour conserver une configuration de développement distincte :
memories config init --output ./development.toml
memories --config ./development.toml config show
memories --config ./development.toml daemon
memories --config ./development.toml tray
Le fichier de configuration est sélectionné par --config, puis MEMORIES_CONFIG, puis la valeur par défaut du système. Un fichier du répertoire courant n'est jamais découvert implicitement. Un fichier explicitement sélectionné mais manquant provoque une erreur, sauf lors de sa création avec config init.
| Plateforme | Fichier de configuration par défaut |
|---|---|
| Windows | %APPDATA%\memories\memories\config\config.toml |
| Linux | $XDG_CONFIG_HOME/memories/config.toml, ou ~/.config/memories/config.toml |
| macOS | ~/Library/Application Support/app.memories.memories/config.toml |
Utilisez memories config path comme référence pour le chemin du compte courant. Aucune configuration personnelle n'est créée par la simple installation ou le lancement d'une version distribuée.
Paramètres
# Windows example: storage_dir = "D:/MemoriesData"
storage_dir = "~/MemoriesData"
relay_url = "wss://relay.example.com"
[desktop]
port = 0
open_browser = true
| Clé | Signification | Remplacement par l'environnement | Remplacement en ligne de commande |
|---|---|---|---|
storage_dir |
Répertoire contenant le stockage chiffré et l'état local | MEMORIES_HOME |
--home PATH |
relay_url |
URL de base du relais par défaut pour sync send et sync receive |
MEMORIES_RELAY_URL |
--relay URL |
desktop.port |
Port du tableau de bord sur l'interface de bouclage ; 0 sélectionne un port libre |
MEMORIES_WEBUI_PORT |
tray/webui --port PORT |
desktop.open_browser |
Ouvrir un navigateur au démarrage de l'application de zone de notification/WebUI | MEMORIES_OPEN_BROWSER (true/false ou 1/0) |
--open ou --no-open |
Pour chaque paramètre, les options de ligne de commande priment sur les variables d'environnement, puis sur la valeur TOML, puis sur la valeur intégrée par défaut. Sans storage_dir, le répertoire de données système existant reste inchangé. Aucun relais public n'est intégré. L'ouverture du navigateur est activée par défaut et le port du tableau de bord vaut zéro par défaut.
Les chemins storage_dir relatifs sont résolus à côté du fichier de configuration, et non dans le répertoire de travail du shell. Le préfixe ~/ est développé vers le répertoire personnel de l'utilisateur courant. Utilisez des barres obliques ou des chaînes littérales TOML pour les chemins Windows. Modifier ce paramètre sélectionne un autre stockage ; cela ne migre ni ne copie les données existantes. Redémarrez ensemble le démon et l'application de zone de notification après toute modification des paramètres de stockage ou de bureau. L'application de zone de notification transmet sa configuration sélectionnée et le stockage résolu aux sondes enfants et aux lancements du démon.
La langue reste contrôlée par les paramètres existants --lang, MEMORIES_LANG et memories language. Une langue enregistrée est lue depuis le répertoire de stockage configuré. La WebUI dispose aussi de son propre sélecteur de langue du navigateur.
Exemples de relais
memories --config ./development.toml sync receive --room ROOM
memories --config ./development.toml sync send VAULT_ID RECIPIENT_DEVICE_PUBLIC_KEY --room ROOM
memories sync receive --relay wss://another-relay.example.com --room ROOM
Seul wss:// est accepté pour les relais distants. ws:// est autorisé pour le développement en boucle locale (localhost, 127.0.0.1 ou ::1). Les URL ne peuvent pas contenir de nom d'utilisateur/mot de passe. Le protocole de relais existant détermine le chemin du canal à partir de la salle et de l'emplacement. Définir un relais n'active pas la synchronisation automatique par relais et ne démarre pas de serveur relais ; cela fournit l'adresse par défaut pour les opérations explicites d'envoi/réception.
Le fichier n'est pas chiffré. Stockez les mots de passe, clés privées, jetons OAuth et autorisations MCP dans leurs mécanismes protégés existants, jamais dans ce fichier. Les clés inconnues, valeurs invalides et fichiers TOML mal formés provoquent un échec sécurisé au lieu de sélectionner silencieusement un autre stockage. Les messages d'erreur de configuration ne reproduisent pas les valeurs sources TOML.
Paramètres de recherche et de modèles
Le même fichier accepte les sections [rag], [rag.http] et les sections facultatives [rag.embedding], [rag.generation] et [rag.rerank]. Elles configurent le répertoire du modèle EmbeddingGemma exécuté dans le processus et ses threads CPU, les URL d'API et noms de modèles choisis par le client, les noms de variables d'environnement des clés d'API, les proxys, les délais d'attente et les tentatives. La génération n'a aucun point de terminaison par défaut ; les embeddings utilisent le modèle local par défaut. Consultez recherche et RAG et l'exemple fourni pour tous les paramètres. Redémarrez le démon après leur modification. L'application de zone de notification transmet le chemin de configuration lorsqu'elle démarre le démon ; les clés des modèles doivent être disponibles dans son environnement.
Écoute du démon distant (hors TOML)
Les jetons d'écoute RPC HTTP/relais ne doivent pas être placés dans le fichier de configuration. Utilisez uniquement des options ou des variables d'environnement :
| Usage | Option | Environnement |
|---|---|---|
| Écoute HTTP/WS du démon | daemon --listen http(s)://HOST:PORT |
— |
| TLS facultatif | daemon --tls-cert PATH --tls-key PATH |
— |
| Jeton d'écoute du démon | daemon --listen-token |
MEMORIES_LISTEN_TOKEN |
| Liaison hors boucle locale | daemon --allow-non-loopback |
— |
| Hôte relais du démon | daemon --relay-host URL --room ROOM |
— |
| Connexion directe de la CLI | --daemon URL (http(s)://, avec un hôte et un port) |
MEMORIES_DAEMON |
| Connexion de la CLI par relais | --daemon-relay URL --daemon-room ROOM |
MEMORIES_DAEMON_RELAY / MEMORIES_DAEMON_ROOM |
| Jeton de connexion de la CLI | --daemon-token |
MEMORIES_DAEMON_TOKEN |
Consultez démon distant pour les détails de l'écoute HTTP/WebSocket.
Centres d'autorisation
Cette section configure le démon de bureau et la CLI. Les choix Standalone, Center et SaaS du téléphone sont des paramètres d'application distincts ; consultez sélection du mode mobile.
Les entrées facultatives [[centers]] (id, url, public_key, mode facultatif) placent un point de terminaison sous gestion du Center : l'initialisation/restauration et les autorisations MCP locales sont refusées. mode = "ticket" est la valeur par défaut : utilisez memories center enroll / import-grant avec des tickets signés. Exactement une entrée mode = "saas" peut à la place rattacher le contenu du démon à un Center hébergé avec MEMORIES_CENTER_TOKEN ; aucun chemin parallèle d'inscription/contenu local n'est créé. Les appels CLI directs au Center utilisent MEMORIES_CENTER_URL / MEMORIES_CENTER_TOKEN, ou MEMORIES_CENTER_ADMIN_TOKEN pour les opérations d'administration. Les secrets de signature et jetons porteurs restent dans l'environnement, jamais dans TOML. Consultez center.
Les portées d'autorisation omises prennent désormais read par défaut, y compris les tickets du Center et les spécifications statiques d'autorisations hébergées. L'émission locale d'autorisations Admin/Owner et l'importation de tickets exigent un coffre déverrouillé, mais pas d'élévation du terminal. L'émission est bornée par le rôle dans le coffre et par la portée et l'expiration de toute autorisation parente ; seul un Owner peut sélectionner explicitement allow_all. Les jetons porteurs restent hors de TOML. Les changements d'appartenance révoquent les autorisations déléguées concernées, et le verrouillage efface toutes les autorisations locales. Consultez autorisation pour les noms RPC, les demandes de permission, les listes d'accès, la compatibilité de l'audit et les changements de comportement.
En mode hébergé, memories-center --data DIR (variable d'environnement MEMORIES_CENTER_DATA) stocke aussi les métadonnées durables des demandes dans DIR/requests.json et la chaîne d'audit SHA-256 en ajout uniquement dans DIR/audit.jsonl ; les deux utilisent le mode Unix 0600, avec le mode 0700 pour DIR. Le fichier existant DIR/members.json contient toujours des identifiants porteurs durables en clair. Protégez ces trois fichiers et leurs sauvegardes ; ne les ajoutez jamais au dépôt. Aucun nouveau paramètre de mot de passe, de jeton ou d'audit n'a sa place dans TOML. Les échecs d'enregistrement d'audit/demande/membre verrouillent le serveur et définissent restart_required ; le déverrouillage distant ne peut contourner cet état. Réparez et redémarrez plutôt avec le mot de passe détenu par l'opérateur.
Les corps HTTP des membres hébergés acceptent role=reader|editor|admin|owner facultatif ; l'omission du rôle préserve la correspondance existante entre portée et rôle. POST /v1/grants utilise par défaut scope=read, duration_minutes=30 (alias minutes) et exige Admin/Owner. POST /v1/requests utilise duration_minutes (alias duration) avec approvers facultatif ; GET /v1/requests liste le travail en attente. GET /v1/access/{vault} et GET /v1/grants exposent des métadonnées d'accès sans jeton. GET /v1/audit?vault=NAME filtre les entrées vérifiées et GET /v1/audit?format=jsonl exporte le journal complet visible par l'opérateur. Ces routes d'autorisation utilisent les jetons porteurs hébergés/d'administration existants, sans nouvelles variables d'environnement. La suppression de membres/les changements de portée invalident toutes les autorisations précédemment émises via des générations d'émission figées ; les identifiants statiques/durables sont rétablis à la transition. Consultez Center pour les routes exactes, les champs de réponse et les limites de la chaîne d'audit.
Sélection du mode mobile
Sélectionnez le mode au premier lancement, puis utilisez Changer de mode dans la barre d'outils principale. L'application ne lit pas MEMORIES_CENTER_URL / MEMORIES_CENTER_TOKEN et ne modifie pas [[centers]] lorsque ce choix change.
| Mode de l'application | Point de terminaison | Contenu stocké |
|---|---|---|
| Standalone | Service Rust local via FFI | Bibliothèque chiffrée existante sur le téléphone |
| Center | Origine du Center hébergé saisie par l'utilisateur | Stockage hébergé de ce serveur |
| SaaS | Fixe : https://memories.ivjn.us |
Stockage hébergé SaaS |
Les URL du Center doivent utiliser HTTPS hors boucle locale et ne contenir ni nom d'utilisateur, ni mot de passe, ni chemin autre que la racine, ni requête, ni fragment. Saisissez l'origine du serveur, pas /v1/rpc. L'adresse de boucle locale du téléphone désigne le téléphone lui-même, pas un ordinateur de développement.
La préférence non secrète memories.app-mode.v1 stocke standalone, center ou saas. Les valeurs absentes ou inconnues affichent le sélecteur de mode. Les profils de connexion sont des objets JSON stockés avec flutter_secure_storage sous memories.hosted.center.connection.v2 et memories.hosted.saas.connection.v2 ; chacun associe une url à son bearer. Une nouvelle connexion réussie n'enregistre la paire qu'après le chargement de la liste des demandes. La déconnexion supprime le jeton porteur tout en conservant l'URL ; changer de mode conserve les deux profils pour une utilisation ultérieure.
Lors d'une mise à niveau, l'ancienne paire memories.hosted.url.v1 / memories.hosted.bearer.v1 n'est importée que si ce mode n'a pas de nouveau profil. Une URL exactement égale à https://memories.ivjn.us, avec éventuellement une barre oblique finale, appartient à SaaS ; les autres URL appartiennent à Center. L'ancienne paire est supprimée après migration. SaaS ne reconnectera pas un jeton enregistré dont l'URL pointe ailleurs.
L'ouverture d'un mode hébergé restaure sa connexion enregistrée lorsqu'elle est disponible. Après un passage en arrière-plan, la page courante exige Reconnecter la session enregistrée ou une nouvelle connexion. Changer de mode ne migre jamais le contenu de la bibliothèque, ne modifie pas l'appartenance au serveur et ne révoque pas de jeton émis par le serveur. Consultez utilisation mobile pour comparer les fonctionnalités et résoudre les problèmes de connexion.
Valeurs par défaut de la CLI cliente
Indépendamment de config.toml, la CLI stocke des valeurs par défaut de commandes facultatives et non secrètes dans defaults.json, sous le répertoire personnel Memories (storage_dir / MEMORIES_HOME / --home) :
memories default set KEY VALUE
memories default get [KEY]
memories default delete KEY
Clés : persona, vault, type, category, daemon, daemon_relay, daemon_room. Ce ne sont jamais des secrets de coffre ; n'y placez pas de mots de passe ni de jetons d'autorisation MCP.