Référence de l’environnement PrismVox

Chaque clé de PrismVox/.env.example est décrite ci-dessous. Les exemples sont des valeurs de départ, pas des identifiants à réutiliser. Gardez votre .env privé et limitez ses permissions.

Environnement, réglages sauvegardés et mises à jour

Les réglages SIP, dictionnaire et niveaux de modèles initialisent PostgreSQL au premier démarrage. Modifiez ensuite leurs valeurs enregistrées dans la console. Les réglages vocaux sauvegardés remplacent leurs défauts d’environnement pour les nouveaux appels. Les identifiants et paramètres réseau propres à l’environnement exigent de recréer les conteneurs concernés.

chmod 600 .env
docker compose up -d --build

Déploiement et identifiants

COMPOSE_PROJECT_NAME

Exemple / défaut
prismvox
Rôle
Identité du projet Docker Compose et préfixe des volumes.
Utilisation
Gardez-le lors des mises à jour. Un nouveau nom crée un autre déploiement et d’autres volumes ; il ne renomme ni ne migre la base.

COMPOSE_FILE

Exemple / défaut
docker-compose.yml
Rôle
Fichiers Compose utilisés par les commandes dans ce dossier.
Utilisation
Utilisez le fichier de base seul pour ElevenLabs ou les API vocales externes. Sous Linux, ajoutez :docker-compose.llm-local.yml uniquement pour le modèle de langage local optionnel. Les anciens overlays STT/TTS intégrés sont retirés.

ARI_USER

Exemple / défaut
phoneagent
Rôle
Compte Asterisk REST Interface utilisé par l’agent et la console.
Utilisation
Gardez le compte cohérent entre Asterisk, l’agent et l’interface. Ce n’est ni l’identité du trunk SIP ni le compte de la console web.

ARI_PASS

Exemple / défaut
(generate; replace change_me_ari)
Rôle
Mot de passe de l’API Asterisk interne.
Utilisation
Générez une valeur unique avant le démarrage. Compose la transmet aux composants contrôlant les appels. Ne publiez pas le port ARI d’Asterisk sur Internet.

DB_PASS

Exemple / défaut
(generate; replace change_me_db)
Rôle
Mot de passe du compte PostgreSQL phoneagent.
Utilisation
Définissez-le avant la création du volume de base. Sur un volume existant, changer l’environnement seul ne change pas le mot de passe PostgreSQL : faites évoluer le compte de base et ses clients ensemble.

UI_USER

Exemple / défaut
admin
Rôle
Identifiant Basic Auth de la console d’administration.
Utilisation
Choisissez un identifiant opérateur. Utilisez le même comme VOX_USER dans Prism lors de la connexion des projets.

UI_PASSWORD

Exemple / défaut
(generate; replace change_me_ui)
Rôle
Mot de passe de la console et de son API d’administration.
Utilisation
Gardez l’authentification active même sur un réseau de confiance. Vide supprime cette protection Basic Auth. En mode connecté, Prism utilise ce mot de passe pour relayer l’API d’administration.

AGENT_API_KEY

Exemple / défaut
(empty)
Rôle
Jeton Bearer distinct pour agent-chat et les endpoints de conversation compatibles OpenAI.
Utilisation
Définissez-le lorsqu’une autre application appelle ces API conversationnelles. Ce n’est ni le mot de passe de la console ni la clé ElevenLabs, et il ne donne pas accès aux API d’administration.

UI_BIND

Exemple / défaut
127.0.0.1
Rôle
Interface hôte de publication des ports console 7860 et 7861.
Utilisation
Gardez la boucle locale en local ou derrière un proxy sur l’hôte. Pour une autre adresse, restreignez l’accès réseau et configurez HTTPS ; 0.0.0.0 écoute sur toutes les interfaces IPv4.

UI_TLS_SAN

Exemple / défaut
(empty)
Rôle
Nom alternatif facultatif dans le certificat auto-signé de la console.
Utilisation
Utilisez un SAN comme IP:192.0.2.20 pour une adresse de laboratoire. Cela ne crée pas de certificat publiquement approuvé. Le microphone navigateur exige un contexte sécurisé comme localhost ou HTTPS approuvé.

Trunk SIP et transport

SIP_REGISTRAR

Exemple / défaut
sbc.example.com
Rôle
Nom du registrar/SBC fourni par votre opérateur SIP ou PBX.
Utilisation
Utilisez le véritable nom fourni. Les valeurs initialisent le trunk enregistré au premier démarrage ; les changements suivants se font dans Configuration → SIP / Telephony.

SIP_REGISTRAR_IP

Exemple / défaut
192.0.2.10
Rôle
IP de signalisation de l’opérateur utilisée par Compose pour la correspondance hôte de SIP_DOMAIN et, par défaut, l’identification du SIP entrant.
Utilisation
Remplacez l’adresse documentaire par celle fournie par votre opérateur. Vérifiez les changements de DNS/IP avec lui ; l’adresse d’exemple ne peut pas transporter vos appels.

SIP_REGISTRAR_MATCH

Exemple / défaut
192.0.2.10
Rôle
Adresse source ou expression de correspondance autorisée pour identifier le SIP entrant.
Utilisation
Le défaut suit SIP_REGISTRAR_IP. Faites correspondre les sources de signalisation de l’opérateur ; n’élargissez pas à tout Internet pour faire fonctionner l’enregistrement.

SIP_DOMAIN

Exemple / défaut
example.com
Rôle
Domaine SIP utilisé dans la signalisation et les adresses de contact.
Utilisation
Utilisez le domaine fourni avec le compte SIP, qui peut différer du domaine du site ou du registrar. Le Compose fourni le fait aussi correspondre à SIP_REGISTRAR_IP.

SIP_USERNAME

Exemple / défaut
phoneagent
Rôle
Identité d’authentification du compte ou trunk SIP.
Utilisation
Copiez l’identifiant d’authentification, qui peut différer du numéro public. Il est distinct de UI_USER et ARI_USER.

SIP_PASSWORD

Exemple / défaut
(empty)
Rôle
Secret utilisé pour authentifier le trunk SIP.
Utilisation
Récupérez-le auprès de l’opérateur SIP. Les identifiants SIP enregistrés sont chiffrés ; modifier .env après l’initialisation ne remplace pas le trunk sauvegardé. Utilisez ensuite le formulaire SIP.

SIP_TRANSPORT_MODE

Exemple / défaut
tls
Rôle
Transport de signalisation SIP, tls ou udp.
Utilisation
Faites correspondre le transport à celui de l’opérateur. Le profil TLS fourni demande aussi le chiffrement média SDES-SRTP ; UDP utilise du RTP en clair. Faites correspondre ces choix aux capacités de l’opérateur et au pare-feu/NAT.

SIP_TLS_PORT

Exemple / défaut
5061
Rôle
Port distant de signalisation TLS.
Utilisation
Utilisez le port du registrar avec SIP_TRANSPORT_MODE=tls. Le modifier ne change pas les ports publiés sur l’hôte par Compose.

SIP_UDP_PORT

Exemple / défaut
5060
Rôle
Port distant de signalisation UDP.
Utilisation
Utilisé pour le transport UDP. La stack publie UDP 5060 et RTP UDP 10000–10100 ; adaptez le pare-feu et le NAT à votre trunk.

SIP_TLS_VERIFY_SERVER

Exemple / défaut
yes
Rôle
Vérification du certificat du correspondant SIP TLS.
Utilisation
Gardez yes avec un certificat opérateur valide. Pour une CA privée, montez son certificat et configurez SIP_TLS_CA_FILE plutôt que désactiver la vérification.

SIP_TLS_CA_FILE

Exemple / défaut
/etc/ssl/certs/ca-certificates.crt
Rôle
Chemin du fichier de CA dans le conteneur Asterisk.
Utilisation
Le défaut utilise les CA publiques du conteneur. Un fichier personnalisé sur l’hôte nécessite un montage Compose en lecture seule au chemin choisi. Un chemin hôte seul n’est pas visible dans Docker.

Modèle de conversation et connexion à Prism

OPENAI_BASE_URL

Exemple / défaut
http://host.docker.internal:4000/v1
Rôle
Racine de passerelle compatible OpenAI pour la conversation locale.
Utilisation
Incluez /v1 et rendez l’endpoint accessible depuis les conteneurs. Utilisez un modèle capable d’appels d’outils. Les URL standard/on-call peuvent être remplacées ensuite dans Agent.

OPENAI_MODEL

Exemple / défaut
your-model-id
Rôle
Modèle initial pour les deux niveaux de conversation.
Utilisation
Remplacez-le par un ID exact de modèle servi. Il initialise standard/on-call seulement si ces réglages sont absents ; les choix déjà enregistrés restent conservés.

OPENAI_API_KEY

Exemple / défaut
(empty)
Rôle
Clé de la passerelle de modèles par défaut.
Utilisation
Laissez vide seulement pour un endpoint sans clé. La clé de passerelle n’est pas transmise à un endpoint distinct choisi pour un niveau ; configurez ces endpoints en conséquence.

PRISM_URL

Exemple / défaut
(empty)
Rôle
Racine interne du serveur Prism en mode connecté.
Utilisation
Sur un réseau partagé, utilisez http://prism-server:8080. Nécessite PRISM_TOKEN correspondant et une connectivité dans les deux sens. Vide laisse PrismVox autonome.

PRISM_TOKEN

Exemple / défaut
(empty)
Rôle
Identifiant de service Prism pour identifier les appelants et ouvrir les sessions vocales.
Utilisation
Copiez le jeton de service du déploiement Prism connecté. C’est un secret d’intégration privilégié, pas le mot de passe d’un utilisateur. Gardez-le privé.

PRISM_PUBLIC_URL

Exemple / défaut
https://prism.example.com
Rôle
Adresse Prism accessible au navigateur quand la console est connectée.
Utilisation
Utilisez la véritable URL publique ou locale du navigateur. Le nom Docker prism-server n’est généralement pas résolu par le navigateur ; il appartient à PRISM_URL, pas à ce champ.

Reconnaissance et synthèse vocales

STT_PROVIDER

Exemple / défaut
elevenlabs
Rôle
Fournisseur de reconnaissance vocale : elevenlabs, openai ou service.
Utilisation
ElevenLabs utilise l’intégration directe en streaming. openai vise une API compatible hébergée séparément ; service conserve le contrat historique /transcribe. Ce réglage n’installe aucun moteur vocal.

TTS_PROVIDER

Exemple / défaut
elevenlabs
Rôle
Fournisseur de synthèse vocale, indépendant de STT_PROVIDER.
Utilisation
Utilisez elevenlabs, openai ou service. Vous pouvez mélanger reconnaissance externe et synthèse ElevenLabs. Les réglages enregistrés dans Speech providers priment et s’appliquent aux nouveaux appels.

ELEVENLABS_API_KEY

Exemple / défaut
(empty)
Rôle
Clé API pour la reconnaissance et la synthèse ElevenLabs.
Utilisation
Entrez votre clé ici ou dans Speech providers. Elle doit autoriser les modèles et voix choisis. L’audio est transmis à ce fournisseur externe et son utilisation peut être facturée.

ELEVENLABS_VOICE_ID

Exemple / défaut
(empty)
Rôle
Identifiant de voix ElevenLabs, distinct de son nom affiché.
Utilisation
Choisissez une voix disponible après Connect dans Speech providers ou copiez son ID exact. Sans clé et voix valides, la synthèse ElevenLabs n’est pas prête.

ELEVENLABS_STT_MODEL

Exemple / défaut
scribe_v2_realtime
Rôle
ID du modèle de reconnaissance ElevenLabs.
Utilisation
Gardez le modèle realtime pour le chemin en streaming. Choisissez un autre modèle de reconnaissance pris en charge dans Speech providers selon votre compte et vos usages.

ELEVENLABS_TTS_MODEL

Exemple / défaut
eleven_flash_v2_5
Rôle
ID du modèle de synthèse ElevenLabs.
Utilisation
Utilisez un modèle disponible sur votre compte et adapté à la langue. Latence et comportement vocal varient selon le modèle ; l’aperçu effectue une véritable synthèse.

ELEVENLABS_LANGUAGE

Exemple / défaut
fr
Rôle
Code de langue vocale.
Utilisation
Utilisez par exemple fr pour le français ou en pour l’anglais. Alignez accueil, personnalité, phrases fixes et prononciation sur cette langue. La langue de la console ne change pas celle des appels.

ELEVENLABS_STABILITY

Exemple / défaut
(empty)
Rôle
Stabilité facultative de synthèse entre 0 et 1.
Utilisation
Vide conserve le défaut du fournisseur. Des valeurs plus grandes recherchent généralement une diction plus stable ; ajustez avec de courts aperçus et des appels réels selon la voix.

ELEVENLABS_BASE_URL

Exemple / défaut
https://api.elevenlabs.io/v1
Rôle
Racine de l’API ElevenLabs.
Utilisation
Gardez l’URL officielle pour l’usage courant. Ne changez que pour un proxy compatible et approuvé ; n’envoyez jamais une clé de production à un endpoint non fiable.

STT_URL

Exemple / défaut
http://host.docker.internal:8000/v1
Rôle
Racine d’API de reconnaissance externe.
Utilisation
Utilisée avec STT_PROVIDER=openai ; PrismVox ajoute /audio/transcriptions. Avec service, la route historique /transcribe est utilisée. Ignorée par la reconnaissance directe ElevenLabs.

STT_MODEL

Exemple / défaut
(empty)
Rôle
ID facultatif de modèle envoyé à l’API de transcription externe.
Utilisation
Utilisez l’ID attendu par votre serveur. Aucun modèle ni serveur Whisper n’est supposé ; la compatibilité dépend du contrat réel de transcription multipart.

TTS_URL

Exemple / défaut
http://host.docker.internal:8880/v1
Rôle
Racine d’API de synthèse externe.
Utilisation
Utilisée avec TTS_PROVIDER=openai ; PrismVox ajoute /audio/speech et demande du WAV. Avec service, configurez l’URL historique, normalement terminée par /synthesize.

TTS_MODEL

Exemple / défaut
(empty)
Rôle
ID de modèle envoyé à l’API de synthèse externe.
Utilisation
Utilisez l’identifiant attendu par votre serveur. Ce n’est pas le réglage de modèle ElevenLabs et cela ne télécharge pas de moteur.

TTS_VOICE

Exemple / défaut
(empty)
Rôle
ID facultatif de voix envoyé à une API de synthèse externe.
Utilisation
Utilisez une voix installée sur ce serveur. Gérez les ajouts/suppressions de voix externes sur le serveur lui-même ; les voix ElevenLabs se choisissent séparément.

SPEECH_SERVICE_API_KEY

Exemple / défaut
(empty)
Rôle
Clé Bearer facultative des API vocales externes compatibles OpenAI.
Utilisation
Indépendante de ELEVENLABS_API_KEY. Les connexions STT et TTS externes partagent ce secret ; laissez vide seulement si leurs serveurs l’autorisent.

Prononciation, recherche documentaire et audio

WHISPER_HOTWORDS

Exemple / défaut
(empty)
Rôle
Indications initiales de reconnaissance des noms et du vocabulaire métier.
Utilisation
Nom de variable historique ; il n’exige pas Whisper. Modifiez ensuite le vocabulaire dans Dictionary. La prise en charge des indications dépend de l’API de reconnaissance choisie.

TTS_SPELL_WORDS

Exemple / défaut
(empty)
Rôle
Mots ou acronymes initiaux à épeler lettre par lettre.
Utilisation
Utilisez des entrées séparées par des virgules, puis gérez-les dans Dictionary. Limitez la liste aux termes réellement mal prononcés par la voix choisie.

TTS_SPELL_EXCEPTIONS

Exemple / défaut
OK
Rôle
Termes à ne pas épeler automatiquement.
Utilisation
Exceptions séparées par des virgules au traitement des acronymes. Gardez naturelles les abréviations usuelles ; les valeurs enregistrées remplacent les valeurs initiales.

TTS_SPELL_ACRONYMS

Exemple / défaut
true
Rôle
Active le traitement automatique des acronymes.
Utilisation
Mettez false si l’épellation automatique dégrade la voix ou la langue choisie. Ajustez ce comportement avec le dictionnaire et les réglages du fournisseur.

EMBEDDING_MODEL

Exemple / défaut
paraphrase-multilingual-MiniLM-L12-v2
Rôle
Modèle sentence-transformers du service d’embeddings CPU inclus.
Utilisation
La base actuelle stocke des vecteurs de dimension 384. Gardez un modèle compatible en dimension 384 ; un modèle d’embeddings quelconque n’est pas interchangeable. Un changement exige aussi de réindexer les documents.

RAG_TOP_K

Exemple / défaut
5
Rôle
Nombre maximal de passages de documents récupérés par recherche.
Utilisation
Augmentez seulement si des informations utiles manquent régulièrement. Plus de passages augmentent le contexte et peuvent ajouter de la latence ; la qualité des collections et documents compte d’abord.

BARGEIN_MS

Exemple / défaut
2000
Rôle
Seuil de parole continue, en millisecondes, pour interrompre la lecture.
Utilisation
Une valeur plus basse permet d’interrompre plus vite, mais réagit davantage à l’écho et au bruit. Testez avec votre véritable téléphone et réseau, y compris des réponses longues.

LOG_SENSITIVE_DATA

Exemple / défaut
false
Rôle
Active les logs contenant des données d’appel sensibles avec true.
Utilisation
Gardez false en fonctionnement normal. Un diagnostic avec données sensibles exige un accès limité aux logs, une rétention courte et une anonymisation avant partage.

DEBUG

Exemple / défaut
false
Rôle
Journaux de diagnostic supplémentaires.
Utilisation
Activez temporairement pour un problème reproductible, consultez les logs en privé puis désactivez. Ce réglage est distinct de LOG_SENSITIVE_DATA.

Modèle de langage local optionnel

FAST_LLM_MODEL_DIR

Exemple / défaut
./.dev/models/qwen3.5-9b
Rôle
Dossier hôte monté en lecture seule dans le service de modèle optionnel.
Utilisation
Utilisé uniquement par docker-compose.llm-local.yml. Téléchargez séparément le GGUF et autorisez Docker à lire ce dossier ; l’overlay ne le télécharge pas.

FAST_LLM_MODEL_FILE

Exemple / défaut
Qwen3.5-9B-Q8_0.gguf
Rôle
Nom du fichier GGUF dans le dossier de modèles configuré.
Utilisation
Faites-le correspondre exactement au fichier téléchargé. L’overlay fourni exige un GPU/runtime NVIDIA et assez de VRAM ; taille de contexte et échantillonnage se définissent dans l’overlay.

FAST_LLM_MODEL_NAME

Exemple / défaut
qwen3.5-9b
Rôle
Alias servi exposé par l’API locale optionnelle.
Utilisation
Choisissez cet alias avec http://fast-llm:8080/v1 dans les modèles Agent. L’alias est distinct du nom physique du GGUF.

FAST_LLM_PORT

Exemple / défaut
18120
Rôle
Port hôte de diagnostic du modèle local optionnel, limité à la boucle locale.
Utilisation
L’agent téléphonique utilise le port 8080 sur le réseau Docker. Changez le port hôte en cas de conflit ; cela ne change pas l’URL interne du modèle.

Options Compose supplémentaires et compatibilité

NO_PROXY / no_proxy complètent les exclusions de proxy pour les services Docker internes. SGLANG_URL et SGLANG_MODEL sont d’anciens alias de connexion modèle ; l’ancienne URL est une racine sans /v1. CORTEX_URL et CORTEX_TOKEN sont d’anciens alias de connexion Prism. Préférez OPENAI_BASE_URL, OPENAI_MODEL, PRISM_URL et PRISM_TOKEN pour une nouvelle installation.

Options avancées et câblage interne

Ces options sont lues par les processus mais ne sont pas toutes transmises par le Compose standard. Ajouter un nom au .env ne suffit pas si aucune entrée environment ne le référence. Utilisez un override pour le service concerné puis recréez-le ; préférez les réglages d’interface pour les changements ordinaires.

BARGEIN_VAD_MODE

Agressivité du détecteur de voix pour interrompre la lecture : 0–3. Une valeur élevée rejette plus de bruit. Distinct de BARGEIN_MS ; réglez après tests de parole et d’écho sur un vrai téléphone.

Service : agent · Défaut : 3

SECRET_KEY_PATH

Chemin de la clé persistante commune. Les deux services doivent lire la même clé ; le volume secrets la fournit. Ne remplacez pas la clé à la mise à jour et ne restaurez pas la base seule.

Service : ui and agent · Défaut : /var/lib/prismvox/secret.key

SIP_CALLERID_NAME

Valeur initiale facultative du nom affiché sortant. Le Compose de base ne la transmet pas ; utilisez Display name (From) dans le formulaire SIP. Elle ne change pas l’identité d’authentification.

Service : ui · Défaut : Vide

SIP_TRANSFER_METHOD

Choix initial facultatif, bridge ou refer, pour transfert direct. Utilisez normalement le formulaire SIP ; les transferts annoncés restent bridgés. Ajouter cette variable au .env ne la transmet pas avec le Compose fourni.

Service : ui · Défaut : bridge

ARI_URL

Adresse ARI interne d’administration de la console ; l’agent a son câblage ARI_HOST/ARI_PORT. À changer seulement lors d’une modification du réseau des services.

Service : ui · Défaut : http://asterisk:8088

ASTERISK_DYNAMIC_DIR

Chemin conteneur partagé avec Asterisk pour la configuration SIP générée. Un override doit préserver volume et permissions ; ce n’est pas une nouvelle ligne SIP.

Service : ui · Défaut : /asterisk-dynamic

EMBEDDINGS_URL

URL interne du service d’embeddings. Import et recherche doivent joindre un service compatible avec la même dimension vectorielle.

Service : agent and ui · Défaut : http://embeddings:8002

DATABASE_URL

Connexion PostgreSQL interne construite depuis DB_PASS et le service base. Les deux services doivent utiliser la même base. Ce n’est ni un compte utilisateur distinct ni une URL de fournisseur IA.

Service : agent and ui · Défaut : Géré par Compose

LLM_MODEL

Ancien repli de modèle de la console si OPENAI_MODEL est absent. Préférez OPENAI_MODEL et les modèles standard/on-call enregistrés pour aligner console et agent vocal.

Service : ui · Défaut : Repli de compatibilité