Aller au contenu
CADCAMFUN
Docs

Documentation

Configuration d'exécution

Choisissez le processus, le répertoire de données, le type d'informations d'identification et les paramètres d'intégration qui contrôlent réellement chaque environnement d'exécution.

Traduit automatiquement de l'anglais. Voir l'original en anglais

Propriétaires de configuration

Le sidecar lit la configuration de l'environnement via AppConfigService dans apps/sidecar/src/config.ts. Une couche lit ces valeurs lors de sa construction et transmet une valeur AppConfig aux services qui en ont besoin. La modification d'une variable shell parent ne modifie pas un service déjà en cours d'exécution.

Tauri fournit son propre jeton de lancement et ses propres chemins de données/migration d'application lors du démarrage de l'enfant. L'aperçu du navigateur utilise les variables de connexion côté Vite. Mobile stocke une connexion de bureau couplée et les informations d'identification de l'appareil. Le site de documentation dispose de liaisons Worker distinctes et d'un processus Studio local indépendant. Ils ne partagent pas de fichier de configuration universel.

Configurez le propriétaire du comportement que vous souhaitez modifier. Par exemple, la définition de l'URL de migration CLI ne redirige pas la base de données de bureau native et la configuration de l'assistant de documentation ne fournit pas les informations d'identification du fournisseur d'IA de bureau.

Démarrer un sidecar isolé

Terminal interactif à la racine du référentiel
CADCAMFUN_TOKEN=local-development-token \
CADCAMFUN_DATA_DIR=/tmp/cadcamfun-config-example \
CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" \
CADCAMFUN_AI_HOST=direct \
CADCAMFUN_AI_OFFLINE=1 \
bun --no-env-file apps/sidecar/src/main.ts

Cela utilise un répertoire jetable et un exemple de jeton de développement. Choisissez un jeton approprié pour votre propre processus. Le serveur lie le bouclage sur un port attribué ; lisez ce port à partir de son événement prêt. Gardez stdin ouvert car sa fermeture signale l'arrêt. La commande transmet délibérément les paramètres explicitement et désactive le chargement automatique du fichier d'environnement de Bun.

Pour la boucle native normale, utilisez bun run desktop:dev. Il prépare le binaire sidecar et les migrations avant de lancer Tauri, qui possède la connexion de processus résultante. Ne démarrez pas un deuxième sidecar manuel et supposez que la vue Web native s'y attachera.

Paramètres de connexion et de stockage requis

ParamètreDéfautComportement
CADCAMFUN_TOKENRequisInformations d'identification du porteur d'application expurgées pour les routes API locales protégées.
CADCAMFUN_DATA_DIRRequisRacine de l’État local géré par sidecar. La base de données est cadcamfun.db en dessous.
CADCAMFUN_MIGRATIONS_DIRAbsentRépertoire de migration transmis à la couche base de données. Sans cela, l'ouverture de la base de données ne crée ni ne met à niveau les tables d'application.
CADCAMFUN_APP_URLAbsent dans la configurationURL de base fournie pour les intégrations de liens de compte. Le service concerné décide de son recours.
CADCAMFUN_DEBUG_LINKSFAUXActive les champs de réponse de développement pour les liens de compte dans les gestionnaires qui les prennent en charge.

Le répertoire de données est une racine de stockage et non une adresse de liaison HTTP. L'écouteur du serveur principal est fixé sur 127.0.0.1 avec un port éphémère. Le réseau compagnon utilise sa propre passerelle HTTPS explicitement activée ; la modification d'un paramètre d'URL ne rend pas l'écouteur de bouclage public.

Gardez le répertoire de migration configuré aligné avec le binaire. Le démarrage peut échouer avant d'être prêt lorsqu'une migration ne peut pas être planifiée, sauvegardée ou appliquée. La référence de la base de données explique le comportement des transactions et des sauvegardes ; une table manquante après l'omission des migrations est un problème de configuration plutôt qu'une preuve que le projet a été supprimé.

Le jeton d'application est lu comme une valeur rédigée et n'apparaît jamais dans les journaux de configuration. Chaque paramètre de cette page est lu une fois, en apps/sidecar/src/config.ts; une valeur modifiée ne prend effet qu’après le redémarrage du sidecar.

Hôte IA et connectivité

ParamètreDéfautComportement
CADCAMFUN_AI_HOSTnikcliSélectionner nikcli ou direct. L'hôte direct n'ajoute pas la boucle d'outils persistante intégrée ni le planificateur spécialisé.
CADCAMFUN_AI_OFFLINEFAUXDésactive le chargement du catalogue du fournisseur de réseau et le gestionnaire de recherche Web en direct. Il ne s’agit pas d’une implémentation de modèle local.
CADCAMFUN_AI_MINIMAX_BASE_URLAbsentRemplacement du point de terminaison réduit en option pour la configuration MiniMax intégrée.

Les clés du fournisseur sont gérées par l'API d'informations d'identification et conservées par le service AI à l'adresse <dataDir>/ai/credentials.json. Ils ne sont pas fournis en inventant une variable d'environnement non documentée pour chaque fournisseur. Utilisez les points de terminaison d'état du fournisseur/modèle pour établir ce qui est configuré et le Guide de l'IA pour le routage de modèle direct pris en charge.

Le mode hors ligne ne transforme pas un appel du fournisseur cloud en réponse hors ligne. Un modèle direct ou intégré configuré peut toujours nécessiter sa connexion fournisseur pour l'inférence. Le produit local d'abord conserve les projets locaux sans connexion de modèle ; cette propriété de stockage est distincte de l’inférence de l’IA hors ligne.

La stratégie de l'opérateur est chargée à partir de <dataDir>/ai/policy.json. L'hôte intégré isole ses propres répertoires de travail/configuration sous le stockage AI de l'application. La stratégie, les informations d'identification, le contexte de session et le cache du catalogue de fournisseurs ont des objectifs différents ; la copie d'un fichier ne reconstruit pas l'intégralité de l'exécution d'une conversation.

Intégrations de compte et de facturation

ParamètreUtiliserEn cas d'absence
STRIPE_SECRET_KEYAuthentification API Stripe sortante.Le paiement payant et l'intégration du portail de facturation ne sont pas disponibles.
STRIPE_WEBHOOK_SECRETVérifiez les charges utiles du webhook Stripe signées.Le gestionnaire de webhook refuse l'ingestion sans vérification de la configuration.
STRIPE_PRICE_BASIC, STRIPE_PRICE_PRO, STRIPE_PRICE_ENTERPRISEID de prix pour les forfaits payants. Les valeurs vides sont ignorées.Un mappage manquant ne peut pas identifier un prix de paiement configuré pour ce plan.
CRON_SECRETIdentifiant partagé supplémentaire pour la maintenance cron.Aucun secret cron supplémentaire n'est requis par ce garde ; L’admission au porteur de la demande s’applique toujours.
ADMIN_EMAILIdentité de l'administrateur utilisée par la stratégie de compte/service.Le profil de l'installation locale conserve le comportement administratif local mis en œuvre par ses services.

Ces paramètres configurent les intégrations ; ils n'établissent pas qu'il existe un compte à distance, un prix, un abonnement ou une livraison webhook. Vérifiez l'échec réel de l'opération et l'état du service en cours d'exécution. N'en déduisez pas que la présence d'une table signifie que la fonctionnalité hébergée associée est entièrement configurée.

L'interface AppConfig contient également des hooks d'injection de test tels qu'une usine de modèles de remplacement et une base API Stripe. Ce ne sont pas des variables d'environnement lues par cette couche de configuration de production. Gardez les hooks de test en dehors des instructions de déploiement à moins que l'hôte en cours d'exécution ne les expose explicitement.

La période d'essai de facturation commence dans 14 jours PRO procès (TRIAL_DAYS dans apps/sidecar/src/repos/billing-repo.ts, utilisé par http/billing.ts). Les plans disponibles sont FREE, BASIC, PRO, et ENTERPRISE; seuls les trois forfaits payants prennent un STRIPE_PRICE_* paramètre.

Journaux et télémétrie

OTEL_EXPORTER_OTLP_ENDPOINT active les exportateurs de traces, de métriques et de journaux OTLP/HTTP du sidecar. Sans point de terminaison non vide, cette couche de télémétrie facultative est désactivée. Le code de l'exportateur crée les points de terminaison spécifiques au signal ; configurez un collecteur qui prend en charge ces signaux.

La journalisation sidecar normale est distincte de l’exportation de télémétrie. Stdout transporte le protocole de préparation/erreur JSON consommé par le shell, tandis que les journaux sont dirigés vers stderr. Lors du diagnostic du démarrage, conservez la première erreur pertinente et son contexte de fonctionnement plutôt que d'attendre que la fenêtre de l'application contienne tous les détails d'initialisation.

N'incluez pas de jetons de lancement, de clés de fournisseur, de jetons de session ou de fichiers d'informations d'identification complets dans les ensembles de diagnostics. Les chemins source, la méthode/le statut, les ID de point de terminaison, les ID de projet non secrets et l'échec de l'opération de base de données fournissent généralement un point de départ plus sûr et plus utile.

Configuration des clients

Un aperçu du bureau uniquement dans le navigateur utilise la fausse API en mémoire lorsque VITE_SIDECAR_URL est absent. Pour le connecter à un sidecar démarré manuellement, définissez cette URL et VITE_SIDECAR_TOKEN avant de démarrer Vite. Le chemin Tauri empaqueté obtient sa connexion à partir du shell à la place.

Navigateur utilisant le sidecar démarré manuellement
VITE_SIDECAR_URL=http://127.0.0.1:READY_PORT \
VITE_SIDECAR_TOKEN=local-development-token \
bun run --filter @cadcamfun/desktop dev

Remplacez l'espace réservé au port. Les paramètres Vite appartiennent au processus de développement frontend ; les modifier ne redémarre ni ne reconfigure le sidecar. L'accès au navigateur est soumis à la politique de bouclage/Tauri CORS du sidecar et à l'admission normale du support.

Le couplage mobile stocke son adresse de bureau, l'empreinte digitale du certificat et le jeton de l'appareil via l'application mobile. Changer le jeton de lancement du bureau n'est pas une manière normale de coupler un téléphone. Utilisez le procédure d'appariement et révoquer des appareils individuels si nécessaire.

Sélection du chemin de base de données

ProcessusRègle de sélection
Sidecar de bureau natifRépertoire de données d'application fourni par Tauri, puis cadcamfun.db.
Sidecar manuelCADCAMFUN_DATA_DIR/cadcamfun.db.
CLI de migration de base de donnéesDATABASE_URL, en supprimant une initiale file:; sinon relatif au processus ./data/cadcamfun.db.
Racine db:migrate emballageExécute le script du package DB, de sorte que la valeur par défaut soit résolue dans packages/db.
Studio de documentationCADCAMFUN_DB, alors DATABASE_URL, puis racine du référentiel data/cadcamfun.db. Le fichier doit exister.

Une liste de projets vide peut donc signifier que vous avez ouvert une autre base de données valide. Enregistrez le processus et le chemin absolu sélectionné avant de modifier les migrations ou de copier des données. Une session de compte peut également modifier les ressources visibles sans modifier le fichier.

Appliquer et vérifier un changement

  1. Identifiez le processus propriétaire et le chemin de stockage actuel. Conservez les données nécessaires avant de modifier le stockage ou les migrations.
  2. Arrêtez ce processus proprement et mettez à jour sa configuration de lancement explicite ou ses paramètres natifs.
  3. Redémarrez-le et attendez son résultat réel de préparation. Résolvez la nouvelle connexion au lieu de réutiliser un ancien port.
  4. Vérifiez un appel de santé publique et un appel protégé admis.
  5. Vérifiez le comportement spécifique : le projet souhaité apparaît, le statut du fournisseur change, la passerelle devient accessible ou le collecteur de télémétrie configuré reçoit le signal attendu.

La présence d'une valeur configurée n'est pas la même chose qu'une intégration externe fonctionnelle. Lisez le résultat du service après avoir effectué une modification. Les valeurs de configuration avec une valeur par défaut doivent être distinguées des valeurs facultatives pour lesquelles le service récepteur décide de son repli.

Diagnostic de configuration

Si l'initialisation échoue avant d'être prête, inspectez les paramètres requis, la disponibilité de la migration, l'accès au répertoire et la première erreur de construction de couche. Si l’intégrité réussit mais qu’un appel protégé échoue, vérifiez le type de jeton et le processus en cours. Si un fournisseur échoue pendant le fonctionnement des projets, inspectez la configuration de l'IA plutôt que de réinitialiser la base de données.

Si Studio n'est pas disponible sur le site hébergé, son API de production renvoie intentionnellement 503 ; démarrer son processus Bun local sur le fichier existant sélectionné. Si l'assistant de documentation n'est pas disponible, inspectez les liaisons Worker ou son backend nikcli configuré. Aucun des deux diagnostics ne nécessite le remplacement des informations d’identification du bureau.

Preuve source : apps/sidecar/src/config.ts, layers.ts, main.ts, observability.ts, services/ai.ts, packages/db/src/migrate.ts, et packages/web/script/studio-server.ts.

Chaque paramètre sidecar dans une seule table

AppConfigService est le seul endroit dans le sidecar qui lit l'environnement. Le tableau répertorie toutes les variables qu'il lit, dans l'ordre dans lequel il les lit. Les valeurs facultatives vides ou blanches sont traitées comme absentes lorsqu'elles sont indiquées.
VariableTaperDéfautUtilisé par
CADCAMFUN_TOKENchaîne rédigéerequisMiddleware de support pour chaque route protégée
CADCAMFUN_DATA_DIRchaînerequisBase de données, stockage IA, plugins, compagnon, téléchargements
CADCAMFUN_MIGRATIONS_DIRchaîneabsentCouche de base de données ; absent signifie qu'aucun schéma n'est créé
CADCAMFUN_APP_URLchaîneabsentLiens dans les e-mails du compte (l'héritage NEXTAUTH_URL)
CADCAMFUN_DEBUG_LINKSbooléenfalseRéinitialisation de l'écho et liens magiques dans les réponses (développement uniquement)
CADCAMFUN_AI_OFFLINEbooléenfalsePas de téléchargement de catalogue de fournisseurs et pas de recherche Web en direct
CADCAMFUN_AI_HOSTnikcli | directnikcliHôte adjoint ; toute autre valeur échoue au démarrage
CADCAMFUN_AI_MINIMAX_BASE_URLficelle, coupéeabsentPoint de terminaison MiniMax pour l'hôte intégré
STRIPE_WEBHOOK_SECRETchaîneabsentSans cela, les webhooks Stripe sont refusés
STRIPE_SECRET_KEYchaîne rédigéeabsentSans cela, le paiement payant et le portail de facturation ne sont pas disponibles
STRIPE_PRICE_BASIC, _PRO, _ENTERPRISEficelle, coupéeabsentIdentifiant du prix par forfait payant ; les valeurs vides sont ignorées
CRON_SECRETchaîneabsentSecret partagé pour /api/cron/*; sans cela, l'itinéraire est ouvert à l'application locale
ADMIN_EMAILchaîneabsentCourriel de l'administrateur ; par défaut le profil local administre sa propre installation
OTEL_EXPORTER_OTLP_ENDPOINTficelle, coupéeabsentURL de base du collecteur OTLP/HTTP ; la télémétrie est désactivée sans elle

La demande signalée version est corrigé dans le code (6.0.0), pas lu à partir de l'environnement.

Des valeurs invalides arrêtent le démarrage

Une variable obligatoire manquante ou une valeur qui n'est pas analysée (par exemple CADCAMFUN_AI_HOST=local), échoue à la couche de configuration. Le sidecar imprime ensuite une erreur au lieu de sa ligne prête et le bureau signale l'échec du démarrage.

Variables lues en dehors de la configuration sidecar

VariableLecteurBut
DATABASE_URLpackages/db migrer le script et le kit bruineCible pour db:migrate / db:generate; un leader file: est dépouillé. Défaut ./data/cadcamfun.db par rapport à packages/db.
CADCAMFUN_DB, alors DATABASE_URLServeur Web Studio (packages/web/script/studio-server.ts)Base de données que le Studio local ouvre ; défaut data/cadcamfun.db à la racine du référentiel.
NIKCLI_LOCALE, NIKCLI_LANGUAGE, NIKCLI_REGIONHôte assistant intégréRemplacez la langue et la région de l'assistant.
LC_ALL, LC_MESSAGES, LANG, LANGUAGE, TZHôte assistant intégréDétection des paramètres régionaux et du fuseau horaire du système lorsqu'aucun remplacement n'est défini.

Le shell du bureau transmet exactement trois variables au sidecar qu'il lance : CADCAMFUN_TOKEN (un nouveau jeton aléatoire par lancement), CADCAMFUN_DATA_DIR (le répertoire des données de l'application) et CADCAMFUN_MIGRATIONS_DIR (les migrations groupées). Tout le reste doit être présent dans l'environnement avec lequel l'application de bureau elle-même a été démarrée.

Ce qui se trouve dans le répertoire de données

<CADCAMFUN_DATA_DIR>/
cadcamfun.db            SQLite database (+ -wal / -shm while running)
backups/                pre-migration snapshots, newest five kept
auth-secret             signing secret for account session tokens (0600)
auth-revoked.json       revoked session tokens
ai/
  credentials.json      provider API keys (owner-readable only)
  policy.json           operator policy for the assistant
  skills/               user skills
  session-owners/       which account owns which assistant session
  nikcli/               isolated working and config dirs of the embedded host
plugins/                assistant plugins loaded at startup
plugins-registry/       installed marketplace plugin files
companion/              gateway TLS cert.pem and key.pem (0600)
storage/                file storage for library import/export, entity I/O and plugins
uploads/profiles/       profile pictures
downloads/              files served by /api/download
waitlist.json           local waitlist entries

Les répertoires sont créés lors de la première utilisation, donc une nouvelle installation ne contient que ceux que ses fonctionnalités ont touchés. Sauvegardez l'intégralité du répertoire avec l'application arrêtée : la base de données, les informations d'identification, le secret d'authentification et les clés compagnon vont ensemble. Les appareils compagnons couplés sont stockés dans la table clé-valeur de la base de données, et non dans companion/.

Traitez le répertoire comme secret

ai/credentials.json, auth-secret et la clé privée associée sont les informations d'identification. Ne validez pas un répertoire de données de développement et ne le joignez pas aux rapports de bogues.

Exemples de configuration

Développement hors ligne avec une base de données jetable
export CADCAMFUN_TOKEN=dev-$(openssl rand -hex 16)
export CADCAMFUN_DATA_DIR="$(mktemp -d)"
export CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle"
export CADCAMFUN_AI_HOST=direct
export CADCAMFUN_AI_OFFLINE=true
bun --no-env-file apps/sidecar/src/main.ts
Test de messagerie du compte
export CADCAMFUN_APP_URL=http://localhost:4321
export CADCAMFUN_DEBUG_LINKS=true      # reset/magic links appear in responses
Télémétrie vers un collecteur local
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318
Facturation en mode test
export STRIPE_SECRET_KEY=sk_test_...
export STRIPE_WEBHOOK_SECRET=whsec_...
export STRIPE_PRICE_PRO=price_...

Ne réglez jamais CADCAMFUN_DEBUG_LINKS en dehors du développement : il met les liens des comptes dans les réponses HTTP.

En 3D

Où la configuration est lue Faites glisser vers l'orbite · faites défiler pour zoomer · faites glisser vers la droite pour effectuer un panoramique
Processes at run time. The Tauri shell spawns the sidecar and waits for its {”event”:”ready”,”port”:N} line on stdout (sidecar.rs); the webview then talks HTTP to 127.0.0.1 on that port with the bearer token. The sidecar owns the SQLite database, the embedded nikcli AI host (CADCAMFUN_AI_HOST=nikcli, the default) and plugins; the mobile app reaches it through companion pairing.