Zum Inhalt springenSkip to content
ACP · HandbuchHandbook Zur KonsoleTo the console

EinrichtungSetup

Vom leeren Server bis zum ersten beantworteten Anruf. Die ersten vier Schritte führen zu einer laufenden Konsole auf Mock-Engines — bevor irgendetwas Geld kostet.From an empty server to the first answered call. The first four steps reach a running console on mock engines — before anything costs money.

Für Administratoren. Einmal durcharbeiten, danach selten wieder öffnen.For administrators. Work through it once, then rarely open it again.

Die Reihenfolge, und warum sie so istThe order, and why it is this one#

Neun Schritte. Die Trennlinie liegt nach Schritt 4: bis dahin läuft alles ohne Anbieter, ohne Telefonnummer und ohne Rechnung. Erst danach binden Sie sich an etwas.Nine steps. The dividing line falls after step 4: up to there everything runs with no provider, no phone number and no invoice. Only after that do you commit to anything.

##SchrittStepDanach können SieAfterwards you can
11ServerServersich anmelden, sonst nichtslog in, nothing else
22Domain & TLSDomain & TLSdie Adresse im Browser öffnenopen the address in a browser
33DeploymentDeploydie Konsole sehensee the console
44Erster ZugangFirst accessalles bedienen — auf Mocksoperate everything — on mocks
55Benutzer & RollenUsers & rolesein Team arbeiten lassenlet a team work
66EnginesEnginesecht sprechen und denkenreally speak and think
77Odoo / ERPOdoo / ERPKundinnen erkennenrecognise customers
88TelefonieTelephonyAnrufe annehmenanswer calls
99AbrechnungBillingsehen, was es kostetsee what it costs
WarumWhy

Warum die Mocks zuerst kommen: Wer bei Schritt 6 zum ersten Mal die Konsole sieht, kann nicht mehr unterscheiden, ob ein Problem an seiner Konfiguration oder am Anbieter liegt. Nach Schritt 4 wissen Sie, wie „richtig" aussieht.

Why mocks come first: if step 6 is the first time you see the console, you can no longer tell whether a problem is your configuration or the provider. After step 4 you know what "working" looks like.

Schritte 1–4 · Bis zur laufenden KonsoleSteps 1–4 · Up to a running console#

  1. 1

    ServerServer

    Ein kleiner Linux-Server genügt für einen Pilot: 2 vCPU, 4 GB RAM, 40 GB Platte, in einer EU-Region. Die Plattform ist ein Python-Dienst hinter einem Reverse-Proxy; sie braucht keine GPU, solange die Modelle gemietet sind.A small Linux box is enough for a pilot: 2 vCPU, 4 GB RAM, 40 GB disk, in an EU region. The platform is a Python service behind a reverse proxy; it needs no GPU as long as the models are rented.

    AchtungCareful

    Legen Sie einen eigenen Benutzer an und deaktivieren Sie Passwort-Anmeldung. Der Dienst läuft nicht als root, und das Datenverzeichnis gehört ihm allein.

    Create a dedicated user and disable password login. The service does not run as root, and the data directory belongs to it alone.

  2. 2

    Domain und TLSDomain and TLS

    Ein A-Record auf den Server, dann ein Zertifikat. Der Proxy terminiert TLS und reicht an den Dienst weiter; HTTP wird dauerhaft auf HTTPS umgeleitet.An A record to the server, then a certificate. The proxy terminates TLS and forwards to the service; HTTP redirects permanently to HTTPS.

    Das Minimum. Details in docs/SETUP-DOMAIN-TLS.md.The minimum. Details in docs/SETUP-DOMAIN-TLS.md.

    server {
        listen 443 ssl;
        server_name acp.example.com;
        location / { proxy_pass http://127.0.0.1:8080; }
    }
  3. 3

    DeploymentDeploy

    Der Dienst wird als systemd-Unit betrieben. Zwei Umgebungsvariablen sind Pflicht: die Betriebsart und das Konsolengeheimnis, mit dem Sitzungs-Cookies signiert werden.The service runs as a systemd unit. Two environment variables are mandatory: the mode, and the console secret that signs session cookies.

    ACP_ENV=mock                 # noch keine Anbieter / no providers yet
    ACP_CONSOLE_SECRET=<48+ Zeichen / characters>
    ACP_DATA_ROOT=/var/lib/acp
    ACP_REGION=eu-central-1
    AchtungCareful

    Ohne gesetztes ACP_CONSOLE_SECRET erzeugt der Dienst ein flüchtiges Geheimnis und sagt das auch. Jeder Neustart wirft dann alle Anmeldungen weg.

    With no ACP_CONSOLE_SECRET set, the service generates an ephemeral one and says so. Every restart then throws away all sessions.

  4. 4

    Erster ZugangFirst access

    Das erste Konto wird auf dem Server angelegt — danach nie wieder. Das Passwort wird in eine versteckte Eingabe getippt und sofort gehasht; es ist nie ein Argument, weil Argumente in ps sichtbar sind und in der Shell-Historie landen.The first account is created on the server — and never again after that. The password is typed into a hidden prompt and hashed immediately; it is never an argument, because arguments are visible in ps and survive in shell history.

    Danach kein Neustart: die Konsole liest die Datei neu, sobald sie sich ändert.No restart afterwards: the console re-reads the file as soon as it changes.

    scripts/console-user.sh <name> admin
    Anmeldemaske der ACP-Konsole.
    Die Anmeldung. Jede weitere Person wird ab hier in der Konsole angelegt, nicht mehr auf dem Server.
    ACP console sign-in screen.
    The sign-in screen. Every further person is created in the console from here on, not on the server.

Schritt 5 · Benutzer und RollenStep 5 · Users and roles#

Ab jetzt geschieht Kontoverwaltung in der Konsole, unter Verwaltung → Benutzer. Dort werden die Regeln erzwungen, wer wen anlegen darf, und jede Änderung ist einer Person zugeordnet.From here account management happens in the console, under Administration → Users. That is where the rules about who may create whom are enforced, and every change is attributed to a person.

Benutzerliste in der Verwaltungskonsole.
Benutzerverwaltung. Ein Teamleiter legt Supervisor- und Viewer-Konten des eigenen Teams an; Administratoren alles.
User list in the administration console.
User management. A leader creates supervisor and viewer accounts for their own team; admins create anything.
  • Vergeben Sie viewer großzügig und admin sparsam. Zusehen schadet nicht; Mandanteneinstellungen ändern schon.Hand out viewer freely and admin sparingly. Watching does no harm; changing tenant settings does.
  • Ein entzogener Zugang wirkt sofort — die Konsole liest die Kontodatei neu, ohne Neustart.Revoking access takes effect immediately — the console re-reads the account file with no restart.

Schritt 6 · EnginesStep 6 · Engines#

Jetzt wird es echt. Jede Engine ist einzeln austauschbar: Sprache-zu-Text, Text-zu-Sprache, das Sprachmodell. Sie können eine umstellen und die übrigen auf Mock lassen.Now it becomes real. Every engine is swappable on its own: speech-to-text, text-to-speech, the language model. You can switch one and leave the rest on mocks.

Konfigurationsvorschau der Verwaltungskonsole.
Die Konfigurationsvorschau zeigt, was der Server tatsächlich sieht — samt Region und Routing-Politik.
Configuration preview in the administration console.
The configuration preview shows what the server actually sees — including region and routing policy.

Das Routing hat zwei Achsen, und die Reihenfolge ist entscheidend: Vertraulichkeit ist ein hartes Tor, Geschwindigkeit optimiert nur *innerhalb* dessen, was die Vertraulichkeit erlaubt.Routing has two axes, and their order matters: sensitivity is a hard gate, and speed optimises only *within* what sensitivity already allows.

Vertrauliche Gespräche erreichen ein Frontier-Modell nur bei EU-Region und Zero-Retention (ACP_CONFIDENTIAL_FRONTIER).Confidential traffic reaches a frontier API only on an EU-region, zero-retention posture (ACP_CONFIDENTIAL_FRONTIER).

provider_for(speed, sensitivity)
  sensitivity  →  hartes Tor / hard gate
  speed        →  FAST für Sprachzüge, STRONG für Analyse
AchtungCareful

Ein Gespräch wird voreingestellt als vertraulich eingestuft, nicht als intern. Ein Transkript ist eine Kundin, die spricht — und niedrig zu raten ist die Richtung, in der etwas ausläuft.

A conversation is classified confidential by default, not internal. A transcript is a customer speaking — and guessing low is the direction that leaks.

Schritt 7 · Odoo / ERPStep 7 · Odoo / ERP#

Die Anbindung macht aus einem anonymen Anruf ein Gespräch mit einer bekannten Kundin: Vertrag, Geräte, offene Vorgänge. Ohne sie funktioniert alles andere weiter — der Agent weiß nur weniger.The ERP connection turns an anonymous call into a conversation with a known customer: contract, devices, open tickets. Without it everything else still works — the agent simply knows less.

Mandanteneinstellungen mit ERP-Anbindung.
Mandant und ERP-Anbindung. Die Zugangsdaten gehören dem Mandanten, nicht dem Prozess.
Tenant settings with the ERP connection.
Tenant and ERP connection. The credentials belong to the tenant, not to the process.
AchtungCareful

Der Zugang sollte lesen dürfen und wenig schreiben. Schreibende Vorgänge laufen ohnehin über das Vorschlags-Gate; ein ERP-Konto mit vollen Rechten vergrößert nur den Schaden, den ein Fehler anrichten kann.

The account should read broadly and write narrowly. Writes go through the proposal gate anyway; an ERP account with full rights only widens the blast radius of a mistake.

Schritt 8 · TelefonieStep 8 · Telephony#

Eingehende Anrufe kommen über SIP herein und werden von einer Dispatch-Regel an die Sprachpipeline übergeben. Web-Sprache und Telefon werden über verschiedene Mechanismen gesteuert — das ist die häufigste Verwechslung im Betrieb.Inbound calls arrive over SIP and are handed to the voice pipeline by a dispatch rule. Web voice and phone are steered by different mechanisms — the most common operational mix-up there is.

WegPathGesteuert durchSteered by
Sprache im BrowserVoice in the browserdie Token-Ausgabe der Plattformthe platform's token endpoint
Eingehendes TelefonInbound phonedie SIP-Dispatch-Regelthe SIP dispatch rule
AchtungCareful

Es gibt in der Regel eine gemeinsame Medien-Infrastruktur für beides. Eine Routing-Änderung „nur zum Testen" fasst damit die echte Rufnummer an. Testen Sie mit einer zweiten Nummer, nicht mit der veröffentlichten.

There is usually one shared media stack for both. A routing change made "just to test" therefore touches the real published number. Test with a second number, not the advertised one.

Schritt 9 · AbrechnungStep 9 · Billing#

Die Nutzungsansicht zeigt pro Abrechnungszeitraum, was verbraucht wurde und was daraus berechnet wird. Sie ist Administratoren vorbehalten.The usage view shows, per billing period, what was consumed and what is charged for it. It is admin-only.

Der wichtigste Betriebsnutzen ist nicht die Rechnung, sondern die Frühwarnung: ein Sprung im Verbrauch ohne Sprung im Gesprächsaufkommen bedeutet fast immer, dass ein Gespräch in einer Schleife hängt oder ein Modell zu groß gewählt ist.The main operational value is not the invoice but the early warning: a jump in consumption without a jump in conversation volume almost always means a conversation is looping, or a model is larger than the job needs.

Abnahme: fertig ist, wenn das stimmtAcceptance: you are done when this holds#

  1. Ein Neustart wirft keine Anmeldung weg (das Geheimnis ist gesetzt).A restart throws away no sessions (the secret is set).
  2. Ein zweites Konto mit viewer sieht die Fläche und kann nichts ändern.A second account with viewer sees the floor and can change nothing.
  3. Die Konfigurationsvorschau zeigt Ihre Region, nicht die Voreinstellung.The configuration preview shows your region, not the default.
  4. Ein Testgespräch erzeugt eine Zeile auf der Fläche und, wenn es scheitert, eine Zeile auf der Lückenliste.A test conversation produces a row on the floor and, when it fails, a row on the gap board.
  5. make gate läuft grün — ohne Netz und ohne Zugangsdaten.make gate is green — with no network and no credentials.