{% extends "base.html" %} {% block title %}Einstellungen · {{ workspace.name }}{% endblock %} {% block content %} {% set wbase = '/workspaces/' ~ workspace.id %}
Gespeichert.
Entscheiden dürfen Admins und Freigeber dieses Workspace. Lockern lässt sich die zentrale Einstufung hier nicht.
Aktuell: {{ effective_model.label }} {{ effective_model.name }}
{% if not workspace.model_id %}(Standard der Plattform){% endif %}
Es ist noch kein Modell eingerichtet. Das macht der Plattform-Admin unter „Modelle und Zugänge“.
Wartet ein Antrag auf Freigabe, bekommen die Admins und Freigeber des Workspace eine E-Mail (wenn im Profil eine Adresse steht). Zusätzlich kann eine Nachricht in einen Teams- oder Slack-Kanal gehen: dafür dort einen eingehenden Webhook anlegen und die Adresse hier eintragen. Sie wird verschlüsselt gespeichert.
{% if workspace.webhook %}Webhook eingerichtet: {{ workspace.webhook_hint }}
Der Workspace kommt in den Papierkorb und ist sofort für alle unsichtbar. Workspace-Admins können ihn dort {{ trash_days }} Tage lang wiederherstellen; danach wird er endgültig gelöscht, mit Quellen, Chats, Freigabeanträgen, Uploads und Tool-Vorgaben.
Repositories und Datenbanken bleiben unberührt, ebenso Branches und Pull Requests, die schon erstellt wurden. Audit-Log und Verbrauch bleiben erhalten.{% if memory_enabled %} Beim endgültigen Löschen wird der Munin-Key entfernt; Projekt und Key müssen danach in Munin gelöscht oder widerrufen werden.{% endif %}
Zur Bestätigung den Namen „{{ workspace.name }}“ eingeben.
Mitglieder sehen alle Chats, Quellen und Dateien und können chatten. Admins verwalten Quellen, Mitglieder und Tools und entscheiden Freigaben.
| Name | Nutzername | Rolle | |
|---|---|---|---|
| {{ u.display_name }}{% if u.id == p.user_id %} (du){% endif %} | {{ u.username }} |
Nur Mitglieder des Teams {{ team.name }} kommen in Frage. Freigeber entscheiden Freigabeanträge wie Admins, verwalten den Workspace aber nicht.
Was das Modell in diesem Workspace darf. Die Einstufung legt der Plattform-Admin fest; hier lässt sie sich nur verschärfen („wie global“ übernimmt die Einstufung unverändert). Aufrufe von Tools mit „Freigabe nötig“ warten auf die Entscheidung eines Workspace-Admins oder Freigebers.
{% if saved_tool %}Gespeichert: {{ saved_tool.definition.name }} ist jetzt {{ labels[saved_tool.verdict.decision] }} ({{ 'Vorgabe des Workspace' if saved_tool.override else 'wie global' }}).
| Tool | Wirksam | Workspace-Vorgabe |
|---|---|---|
{{ t.definition.name }}{% if not t.available %} {% if t.definition.kind.startswith('mcp:') %}(MCP-Server im Workspace nicht freigeschaltet){% elif t.definition.kind.startswith('hugin') %}(keine passenden Pakete aus Hugin){% else %}(keine passende Quelle){% endif %}{% endif %} |
{{ labels[t.verdict.decision] }}
{{ t.verdict.reason }}
{% if t.verdict.level == 'global_approver' %} Freigabe durch globalen Approver {% endif %} {% if t.verdict.four_eyes %}Vier-Augen-Prinzip {% endif %} |
Verschärft ein Tool nur für ein bestimmtes Repository, z. B. commit_change auf dem Produktiv-Repository nur mit Freigabe. Datenbanken und andere MCP-Verbindungen haben eigene Tools (z. B. shop__query); dort gilt die Vorgabe oben unter „Tools“ direkt für diese Verbindung. Auch lesende Tools können so eine Freigabe verlangen; die KI erhält das Ergebnis dann erst nach der Entscheidung.
Es gibt noch keine Quelle, für die Regeln möglich sind.
{% else %} {% set source_names = {} %}{% for s in sources %}{% set _ = source_names.update({s.id: s.name}) %}{% endfor %} {% if source_rules %}| Quelle | Tool | Regel | |
|---|---|---|---|
| {{ source_names.get(r.source_id, r.source_id) }} | {{ r.tool_name }} |
{% if r.decision %}{{ labels[r.decision] }}{% endif %} {% if r.four_eyes %}Vier Augen{% endif %} |
Dienste, die der Plattform-Admin registriert hat. Erst freigeschaltet bieten sie ihre eingestuften Tools in diesem Workspace an. Für Munin das Token des Projekts eintragen; es bestimmt, in welches Gedächtnis geschrieben wird.
{% set waiting = mcp_servers|selectattr('1', 'none')|selectattr('0.active')|list %} {% if waiting %}{{ waiting|length }} Server {{ 'ist' if waiting|length == 1 else 'sind' }} verfügbar, aber in diesem Workspace noch nicht freigeschaltet.
| Server | Status | |
|---|---|---|
{{ s.label }} {{ s.name }}{% if s.role == 'memory' %} Gedächtnis{% endif %} |
{% if link and s.active %}freigeschaltet{% if link.secret_hint %} eigenes Token …{{ link.secret_hint }}{% endif %}{% elif link %}Server inaktiv{% else %}aus{% endif %} | {% if link %} {% elif s.active %} {% endif %} |
Es ist noch kein MCP-Server registriert.
{% endif %}| Verbindung | Status | |
|---|---|---|
{{ s.label }} {{ s.name }}__…
{% if s.template_id %}{{ s.config.user }}@{{ s.config.host }}{% if s.config.port %}:{{ s.config.port }}{% endif %}/{{ s.config.database }}{% else %} |
{% if s.approval == 'pending' %}wartet auf Freigabe{% elif s.approval == 'rejected' %}abgelehnt{% elif not s.active %}inaktiv{% elif s.status == 'ok' %}ok{% elif s.status == 'error' %}Fehler{% else %}neu{% endif %}
{% if s.status_message %} {{ s.status_message }} {% endif %} |
{% if s.approval == 'approved' %} {% endif %} Bearbeiten |
MCP-Server nur für diesen Workspace, mit eigenem Token und eigenen Headern. Nutzt die Plattform die Adresse schon, ist die Verbindung sofort aktiv; sonst wartet sie auf die Freigabe eines Plattform-Admins. Neue Tools sind gesperrt, bis sie eingestuft sind; gleiche Tools desselben Dienstes übernehmen die Einstufung.
{% if own %}{{ connection_rows(own) }}{% else %}Noch keine eigene Verbindung.
{% endif %}Lesender Zugriff auf eine Datenbank. Den Treiber je Datenbanktyp stellt die Plattform; Host, Nutzer und Passwort trägst du hier ein. Die Zugangsdaten liegen verschlüsselt in Bifröst; das Modell sieht sie nie. Die Tools heißen nach dem Kurznamen, z. B. shop__query; Vorgaben dafür unter „Tools“ gelten nur für diese Datenbank.
Es gibt noch keinen Datenbank-Treiber; den richtet ein Plattform-Admin unter Administration → Datenbank-Treiber ein.
{% endif %} {% if dbs %}{{ connection_rows(dbs) }}{% elif db_drivers %}Noch keine Datenbank.
{% endif %}Hugin ist das Register für geprüfte KI-Erweiterungen. Regeln gelten in jedem Chat dieses Workspace, Skills lädt die KI bei Bedarf, Befehle ruft man im Chat mit /name auf. Neue Versionen kommen erst, wenn du abgleichst und übernimmst; Pflichtpakete eures Tenants kommen immer mit. Inhalte aus Hugin verleihen keine Rechte.
Hugin ist auf dieser Plattform noch nicht eingerichtet; den Host trägt ein Plattform-Admin unter Administration → Hugin ein.
{% else %}Integrations-Key (hi_…) eures Tenants in Hugin unter {{ h.host.url }}, dort unter Integrationen mit den Rollen Lesen und Ausliefern. Der Tenant bestimmt, welche Pakete und Pflichtpakete hier gelten. Der Key liegt verschlüsselt in Bifröst.
Key …{{ a.hint }}
{% if a.status == 'ok' %}ok{% elif a.status == 'error' %}Fehler{% else %}ungeprüft{% endif %}
{% if a.tenant %}Tenant {{ a.tenant }}{% if a.key_name %}, Key „{{ a.key_name }}“{% endif %}{% endif %}
{% if a.status_message %}{{ a.status_message }}{% endif %}
Abgleich vom {{ h.access.synced.strftime('%d.%m.%Y %H:%M') }}:
Mit Abgleichen ansehen und übernehmen; automatisch übernommen wird nichts.
Zuletzt abgeglichen {{ h.access.synced.strftime('%d.%m.%Y %H:%M') }}: alles aktuell.
{% endif %}| Paket | Version | |
|---|---|---|
{{ s.package_id }} | {{ s.spec }} |
Noch kein Paket gewählt.
{% endif %} {% endif %}| Paket | Art | Version | Stand |
|---|---|---|---|
{% if l.kind == 'command' %}/{% endif %}{{ l.package_id }}{% if l.mandatory %} Pflicht{% endif %}{% if l.deprecated %} veraltet{% endif %}
{% if l.description %}{{ l.description }} {% endif %} |
{{ h.kind_names.get(l.kind, l.kind) }} | {{ l.version }} | {% if l.unsupported %}nicht angeboten {{ l.unsupported }} {% else %}aktiv{% endif %}{{ l.locked.strftime('%d.%m.%Y %H:%M') }} |
Noch nichts übernommen.
{% endif %}