{"id":821,"date":"2026-10-07T10:22:17","date_gmt":"2026-10-07T08:22:17","guid":{"rendered":"https:\/\/www.computeq.de\/de\/?page_id=821"},"modified":"2026-10-07T10:28:57","modified_gmt":"2026-10-07T08:28:57","slug":"libretto-work-admin","status":"publish","type":"page","link":"https:\/\/www.computeq.de\/de\/produkte\/libretto-inoffizielle-ios-app-fuer-librechat\/libretto-work-admin\/","title":{"rendered":"Libretto Work f\u00fcr Admins"},"content":{"rendered":"\n<!-- Libretto Work \u2013 Sprachausgabe einschr\u00e4nken (DE, f\u00fcr Administratoren). In WordPress als HTML\/Code-Editor einf\u00fcgen.\n     Platzhalter vor dem Ver\u00f6ffentlichen ersetzen: WORK-SEITE-LINK (Informationsseite \u201eLibretto Work\u201c). Stand: 7. Oktober 2026 -->\n<h1>Libretto Work: Sprachausgabe einschr\u00e4nken<\/h1>\n<p>Anleitung f\u00fcr Administratoren. Allgemeine Informationen und Lizenzierung: <a href=\"https:\/\/www.computeq.de\/de\/produkte\/libretto-inoffizielle-ios-app-fuer-librechat\/libretto-work\/\">Libretto Work<\/a>.<\/p>\n\n<h2>Worum geht es?<\/h2>\n<p>Libretto liest Antworten per Sprachausgabe vor. Standardm\u00e4\u00dfig spricht die <strong>iOS-Systemstimme lokal auf dem Ger\u00e4t<\/strong>, es verlassen keine Texte das Ger\u00e4t. Nutzer k\u00f6nnen optional eine Cloud-Stimme (OpenRouter, mit eigenem Schl\u00fcssel) einschalten. Dann gehen Antworttexte an diesen Dienst. Als Organisation k\u00f6nnen Sie festlegen, welche Sprachausgabe erlaubt ist.<\/p>\n<p><strong>Wichtig:<\/strong> Eine Vorgabe der Organisation k\u00f6nnen Mitarbeitende <strong>nicht lockern<\/strong>. Lokale Einstellungen oder Regeln in der App d\u00fcrfen sie nur weiter einschr\u00e4nken. Erlaubt ist, was <em>alle<\/em> Quellen (Ger\u00e4teverwaltung, Server, lokale Regel) erlauben. Die Systemstimme ist immer erlaubt.<\/p>\n<p>Zwei Wege, die sich kombinieren lassen:<\/p>\n\n<h2>Weg A: Verwaltete App-Konfiguration (MDM)<\/h2>\n<p>F\u00fcr Organisationen mit Ger\u00e4teverwaltung (Microsoft Intune, Jamf, Workspace ONE und andere). Die Konfiguration gilt auf dem verwalteten Ger\u00e4t f\u00fcr die ganze App, Mitarbeitende k\u00f6nnen sie nicht \u00e4ndern, \u00c4nderungen kommen live in der App an. Bundle-ID der App: <code>net.keutgen.libretto<\/code>.<\/p>\n<table>\n<thead><tr><th>Schl\u00fcssel<\/th><th>Typ<\/th><th>Bedeutung<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><code>speechAllowedEngines<\/code><\/td><td>Array von Strings<\/td><td>Erlaubte Sprachausgabe f\u00fcr <strong>alle<\/strong> Profile. Werte: <code>system<\/code>, <code>openrouter<\/code><\/td><\/tr>\n<tr><td><code>speechRules<\/code><\/td><td>Array von Objekten<\/td><td>Erlaubte Sprachausgabe <strong>je Domain<\/strong>: <code>host<\/code> (Domain, Subdomains z\u00e4hlen mit) und <code>allowedEngines<\/code><\/td><\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Beispiel 1:<\/strong> nur die lokale Systemstimme, auf dem ganzen Ger\u00e4t.<\/p>\n<pre><code>&lt;dict&gt;\n  &lt;key&gt;speechAllowedEngines&lt;\/key&gt;\n  &lt;array&gt;\n    &lt;string&gt;system&lt;\/string&gt;\n  &lt;\/array&gt;\n&lt;\/dict&gt;<\/code><\/pre>\n<p><strong>Beispiel 2:<\/strong> nur f\u00fcr Ihre Domain gilt die Systemstimme, private Profile der Mitarbeitenden bleiben unber\u00fchrt.<\/p>\n<pre><code>&lt;dict&gt;\n  &lt;key&gt;speechRules&lt;\/key&gt;\n  &lt;array&gt;\n    &lt;dict&gt;\n      &lt;key&gt;host&lt;\/key&gt;\n      &lt;string&gt;firma.de&lt;\/string&gt;\n      &lt;key&gt;allowedEngines&lt;\/key&gt;\n      &lt;array&gt;\n        &lt;string&gt;system&lt;\/string&gt;\n      &lt;\/array&gt;\n    &lt;\/dict&gt;\n  &lt;\/array&gt;\n&lt;\/dict&gt;<\/code><\/pre>\n<p><strong>In Microsoft Intune:<\/strong> <em>Apps \u2192 iOS\/iPadOS \u2192 App-Konfigurationsrichtlinien \u2192 Hinzuf\u00fcgen \u2192 Verwaltete Ger\u00e4te<\/em>, die Libretto-App ausw\u00e4hlen und als Format \u201eXML-Daten eingeben\u201c w\u00e4hlen. Tragen Sie das <code>&lt;dict&gt;<\/code> aus einem der Beispiele ein. In <strong>Jamf<\/strong> hinterlegen Sie dasselbe unter <em>App Configuration<\/em> der App.<\/p>\n\n<h2>Weg B: Datei auf Ihrem LibreChat-Server<\/h2>\n<p>F\u00fcr Organisationen ohne Ger\u00e4teverwaltung. Ihr Server liefert unter der Adresse<\/p>\n<pre><code>https:\/\/&lt;ihr-server&gt;\/.well-known\/libretto.json<\/code><\/pre>\n<p>eine kleine JSON-Datei aus:<\/p>\n<pre><code>{\n  \"version\": 1,\n  \"speech\": { \"allowedEngines\": [\"system\"] }\n}<\/code><\/pre>\n<ul>\n<li>Libretto holt die Datei beim Laden eines Profils und beim Zur\u00fcckkehren in die App und merkt sich die Vorgabe pro Server.<\/li>\n<li><strong>Offline<\/strong> gilt die zuletzt bekannte Vorgabe.<\/li>\n<li>Entfernen Sie die Datei, f\u00e4llt die Vorgabe beim n\u00e4chsten Abruf weg. Liefert der Server die Chat-Seite (HTML) oder 404, gilt das als \u201ekeine Vorgabe\u201c.<\/li>\n<li>Die Datei muss ohne Anmeldung abrufbar sein.<\/li>\n<\/ul>\n<p><strong>nginx:<\/strong><\/p>\n<pre><code>location = \/.well-known\/libretto.json {\n    default_type application\/json;\n    add_header Cache-Control \"no-store\";\n    return 200 '{\"version\":1,\"speech\":{\"allowedEngines\":[\"system\"]}}';\n}<\/code><\/pre>\n<p><strong>Apache:<\/strong><\/p>\n<pre><code>Alias \/.well-known\/libretto.json \/var\/www\/libretto.json\n&lt;Files \"libretto.json\"&gt;\n    ForceType application\/json\n&lt;\/Files&gt;<\/code><\/pre>\n\n<h2>So pr\u00fcfen Sie die Wirkung<\/h2>\n<ol>\n<li>Installieren Sie Libretto auf einem Testger\u00e4t und legen Sie ein Profil f\u00fcr Ihre Instanz an.<\/li>\n<li>\u00d6ffnen Sie <em>\u2026 \u2192 Sprachmodus<\/em>. Bei Weg A erscheint oben der Abschnitt <strong>\u201eVon deiner Organisation\u201c<\/strong> mit Ihren Vorgaben, und gesperrte Engines fehlen in der Auswahl.<\/li>\n<li>W\u00e4hlen Sie im Profil unter \u201eSprachmodus\u201c versuchsweise OpenRouter. Unter der Auswahl steht, dass eine Vorgabe die Wahl sperrt.<\/li>\n<li>Starten Sie ein Gespr\u00e4ch. Das Debug-Log des Profils nennt die Quelle, zum Beispiel: \u201eSprachausgabe: iOS-Systemstimme (Richtlinie des Servers f\u00fcr \u2026 sperrt OpenRouter)\u201c.<\/li>\n<\/ol>\n\n<h2>Grenzen<\/h2>\n<ul>\n<li>Die <strong>Server-Datei<\/strong> gilt f\u00fcr das Profil mit dieser Adresse. Tr\u00e4gt ein Mitarbeiter denselben Server unter einer anderen Adresse ein (IP-Adresse, eigener Proxy), erh\u00e4lt die App die Datei nicht. Eine Vorgabe per <strong>MDM<\/strong> (je Domain oder f\u00fcr alle Profile) l\u00e4sst sich so nicht umgehen. Eine Liste erlaubter Server in der MDM-Konfiguration ist geplant.<\/li>\n<li>Die Vorgabe sch\u00fctzt die <strong>Sprachausgabe der App<\/strong>. Texte lassen sich weiterhin kopieren und anderswo vorlesen. Es ist ein Schutz gegen unbeabsichtigtes Abflie\u00dfen, keine vollst\u00e4ndige Datensicherheit.<\/li>\n<li>Die Spracherkennung (Sprache zu Text) l\u00e4uft standardm\u00e4\u00dfig auf dem Ger\u00e4t. Eine zentrale Vorgabe daf\u00fcr gibt es derzeit nicht.<\/li>\n<\/ul>\n\n<h2>Kontakt<\/h2>\n<p>Technische Fragen: <a href=\"mailto:support@computeq.de\">support@computeq.de<\/a><br>\nLizenzen und Angebote: <a href=\"mailto:sales@computeq.de\">sales@computeq.de<\/a><\/p>\n<p><em>Stand: 7. Oktober 2026<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Libretto Work: Sprachausgabe einschr\u00e4nken Anleitung f\u00fcr Administratoren. Allgemeine Informationen und Lizenzierung: Libretto Work. Worum geht es? Libretto liest Antworten per Sprachausgabe vor. Standardm\u00e4\u00dfig spricht die iOS-Systemstimme lokal auf dem Ger\u00e4t, es verlassen keine Texte das Ger\u00e4t. Nutzer k\u00f6nnen optional eine Cloud-Stimme (OpenRouter, mit eigenem Schl\u00fcssel) einschalten. Dann gehen Antworttexte an diesen Dienst. Als Organisation k\u00f6nnen<\/p><\/div>\n<div class=\"blog-btn\"><a href=\"https:\/\/www.computeq.de\/de\/produkte\/libretto-inoffizielle-ios-app-fuer-librechat\/libretto-work-admin\/\" class=\"home-blog-btn\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":807,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-821","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/pages\/821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/comments?post=821"}],"version-history":[{"count":4,"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/pages\/821\/revisions"}],"predecessor-version":[{"id":828,"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/pages\/821\/revisions\/828"}],"up":[{"embeddable":true,"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/pages\/807"}],"wp:attachment":[{"href":"https:\/\/www.computeq.de\/de\/wp-json\/wp\/v2\/media?parent=821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}