LOOM — stories woven
Team-Server · Für die, die LOOM selbst betreiben

LOOM gemeinsam betreiben

Normalerweise läuft LOOM bei dir am Laptop — dann brauchst du diese Seite nicht. Sie ist für den Fall, dass ihr LOOM auf einen gemeinsamen Server stellt, damit das ganze Team im Browser am selben Board arbeitet.

Zuerst das Wichtigste: die Anmeldung ist nicht alles

LOOM hat eine Anmeldung: jedes Teammitglied bekommt einen persönlichen Zugangsschlüssel, ohne den nichts geht (weiter unten steht, wie ihr sie verteilt). Was LOOM nicht hat, ist eine Verschlüsselung eurer Verbindung — und ohne die ist die Anmeldung weniger wert, als sie aussieht.

⚠ Ein Schlüssel über eine unverschlüsselte Verbindung ist mitlesbar

Wenn euer Server ohne HTTPS im Internet steht, wandert der Zugangsschlüssel im Klartext durchs Netz — jeder auf dem Weg dorthin kann ihn abfangen und danach als euer Teammitglied hereinspazieren. Dann steht euer Project Memory offen: eure Namen, eure Entscheidungen, eure ganze Diplomarbeits-Geschichte.

Deshalb sind die zwei folgenden Schritte nicht optional: die Anmeldung schützt wen LOOM hereinlässt, die Verschlüsselung schützt den Schlüssel auf dem Weg dorthin. Ihr braucht beides.

Wie kommt LOOM zu euch?

Es gibt drei Wege, und keiner ist der richtige für alle. Sie unterscheiden sich darin, wer LOOM erreichen kann und wie viel ihr dafür einrichten müsst. Lest die drei Kästen und nehmt den, der zu eurer Lage passt — ihr könnt später jederzeit wechseln.

Die eine Frage, die alles entscheidet: habt ihr eine öffentliche IP?

Nur mit einer öffentlichen IP-Adresse kann jemand von außen zu euch verbinden. Testet es auf der Maschine, die den Server spielen soll:

curl -s https://api.ipify.org; echo

Vergleicht die Ausgabe mit der WAN-Adresse in eurem Router/Modem. Sind sie verschieden — oder beginnt die Router-Adresse mit 100.64. bis 100.127. — dann sitzt ihr hinter dem Provider-NAT: Portfreigabe und DynDNS bleiben wirkungslos, Weg 3 fällt aus.

Wichtig für Mobilfunk (4G/5G): dort ist Provider-NAT der Normalfall — aber kein Schicksal. Bei den österreichischen Anbietern könnt ihr für eure SIM eine öffentliche IP anfordern; danach genügt ein kleiner Router, und Weg 3 steht euch offen. Ein Anruf, kein Umbau.

Weg 1 — Im selben Netz (Schulnetz, WLAN vor Ort)
1
Ihr gebt gar keinen Port frei. LOOM läuft auf einem Rechner im selben Netz, ihr ruft es über dessen lokale Adresse auf. Von außen ist nichts erreichbar — weil nichts nach außen zeigt.
2
Aufwand: keiner. Kein Zertifikat, kein Konto, keine Freigabe. Das funktioniert bei jedem Team, heute.
3
Der Preis: ihr erreicht LOOM nur, wenn ihr im selben Netz seid. Für gemeinsames Arbeiten vor Ort — Casting, Showcase, Loomback — genügt das vollkommen. Von zuhause aus kommt ihr nicht dran.
Weg 2 — Tailscale (ein privates Netz über das Internet)
1
Tailscale verbindet eure Geräte zu einem eigenen, verschlüsselten Netz. Jedes Gerät baut die Verbindung nach außen auf — deshalb funktioniert es auch hinter Provider-NAT, ohne öffentliche IP, ohne Portfreigabe, ohne DynDNS.
2
Aufwand: ein Konto fürs Team, dann eine Installation je Gerät. Auf dem Server tailscale up, auf jedem Laptop dasselbe, einloggen — fertig. Das ist der Unterschied zu Weg 3: die Arbeit fällt bei jedem an, nicht einmalig bei einer Person.
3
Die Verschlüsselung ist eingebaut (WireGuard) — kein Zertifikat, nichts zu erneuern. Und weil kein Port offen steht, gibt es von außen nichts anzugreifen.
4
Der Preis: nur Geräte in eurem Tailscale-Netz kommen an LOOM — wer kurz etwas herzeigen will, muss den Gast erst aufnehmen. Und es ist ein Dienst einer Firma: ihr braucht Konten, und die Verbindungsvermittlung läuft über deren Server (eure Inhalte nicht).
Weg 3 — Reverse Proxy (LOOM steht im Internet)
1
Voraussetzung: eine öffentliche IP (siehe Kasten oben) und ein Name, unter dem man euch findet — eine Subdomain oder DynDNS.
2
Aufwand: am meisten — Portfreigabe, Proxy einrichten, Passwort setzen, Zertifikat (Caddy holt es automatisch). Dafür einmalig bei einer Person, danach müssen die anderen nichts installieren.
3
Der Gewinn: jede:r mit dem Link und dem Passwort kommt hinein — auch euer Coach, auch vom Handy, auch ohne Vorbereitung. Das ist der einzige Weg, der das kann.
4
Der Preis: euer Server steht im offenen Internet. Lest die Regeln unten bevor ihr freischaltet — sie sind kurz und sie sind wichtig.
!
Die Grenze mit Safari: über https kommt Safari nicht an euer eigenes Ollama — die KI-Knöpfe bleiben dort aus. Alles andere in LOOM geht. Für die KI nehmt Chrome (warum).

Kurz zum Selbst-Einordnen

Ihr arbeitet ohnehin meist gemeinsam vor Ort? → Weg 1, fangt heute an. · Ihr wollt von zuhause dran und habt keine öffentliche IP? → Weg 2. · Ihr betreibt eine eigene VM oder einen Server und wollt, dass Außenstehende ohne Installation zugreifen können? → Weg 3.

Ehrlich dazu: Weg 2 haben wir selbst noch nicht im Schulbetrieb erprobt, und wie viele Geräte der kostenlose Tailscale-Tarif erlaubt, solltet ihr vor der Entscheidung nachsehen. Wenn ihr Erfahrungen macht — gute wie schlechte — sagt uns Bescheid.

Die zwei Regeln

Diese Regeln gelten für Weg 3. Bei Weg 1 und 2 verlässt euer Zugangsschlüssel das eigene Netz nie unverschlüsselt — dort seid ihr ohne Zutun auf der sicheren Seite.

Regel 1 — LOOM selbst bleibt auf localhost
1
LOOM lauscht von sich aus nur auf dem eigenen Rechner (localhost). Das ist Absicht und euer wichtigster Schutz.
2
Setzt nicht --urls oder ASPNETCORE_URLS auf 0.0.0.0, um LOOM „ins Netz zu stellen". Genau das hebelt den Schutz aus — dann hängt LOOM unverschlüsselt im Internet, und euer Zugangsschlüssel ist auf dem Weg dorthin mitlesbar.
Regel 2 — davor kommt ein Reverse Proxy mit Passwort und Verschlüsselung
1
Ein Reverse Proxy ist ein kleines Programm, das die Anfragen aus dem Netz entgegennimmt, ein Passwort verlangt und sie erst dann an das LOOM auf localhost weiterreicht.
2
Er erledigt gleichzeitig die Verschlüsselung (HTTPS). Ohne die wandern Passwort und Inhalte im Klartext durchs Netz — jeder auf dem Weg kann mitlesen.
3
Caddy ist dafür die einfachste Wahl: es holt das Zertifikat automatisch. Die Konfiguration passt in fünf Zeilen.
Caddyfile — Passwort und HTTPS in fünf Zeilen
loom.eure-schule.at {
    basic_auth {
        team <hier der Passwort-Hash>
    }
    reverse_proxy localhost:5311
}

Schritt für Schritt, mit jedem Befehl

Diese fünf Zeilen sind die Kurzfassung. Wenn ihr Weg 3 wirklich einrichtet, nehmt die ausführliche Weg-3-Anleitung — neun Schritte von der IP-Prüfung bis zum Dienst, geschrieben von einem Schüler, der es selbst gemacht hat.

Den Passwort-Hash erzeugen

Mit caddy hash-password — Caddy fragt nach dem Passwort und gibt den Hash aus, den ihr oben einsetzt. Das Passwort selbst steht nie in der Datei.

Wenn euch das zu viel ist — das ist völlig in Ordnung

Ihr müsst diesen Weg nicht gehen. Weg 1 und Weg 2 oben brauchen keine Portfreigabe, kein Zertifikat und keines dieser Regelwerke — und ihr könnt jederzeit später umsteigen. Ein Team, das mit Weg 1 anfängt und arbeitet, ist besser dran als eines, das an Weg 3 hängen bleibt.

Bevor ihr anfangt

Ein Team-Server nimmt euch die gemeinsame Ablage ab — nicht die KI. Die braucht auf jedem Gerät etwa 16 GB Arbeitsspeicher und ein installiertes Ollama ↗, genau wie beim Arbeiten am eigenen Laptop. Wer das nicht hat, kann LOOM voll benutzen, nur eben ohne die KI-Hilfen.

Das richtige Paket für eure Maschine

LOOM wird als fertiges Paket ausgeliefert — ihr braucht kein installiertes .NET. Aber das Paket muss zu eurer Maschine passen, und zwar in zwei Hinsichten: Betriebssystem und Prozessor-Architektur. Ein Paket für einen normalen PC läuft auf einem Raspberry Pi gar nicht, da hilft auch kein Nachhelfen.

Fangt beim Betriebssystem an — der Rechner, der den Server spielen soll, ist meistens der, den sowieso jemand herumstehen hat:

macOS
Ein Mac (auch ein MacBook) kann euer Team-Server sein → loom-<version>-osx-arm64.zip. Darin liegt LOOM.app zum Doppelklicken. Gilt für alle Macs mit Apple-Chip (M1 und neuer); für die alten Intel-Macs gibt es derzeit kein Paket. Beim ersten Öffnen meldet sich die Gatekeeper-Warnung — die Schritte stehen in OPEN-ON-MAC.txt im Paket.
Windows
→ LOOM-Setup-<version>.exe (Installer) oder loom-<version>-win-x64.zip, wenn ihr nichts installieren wollt.
Linux / Raspberry Pi
Hier entscheidet zusätzlich die Architektur — siehe direkt darunter.

Nur für Linux: welche Architektur habt ihr?

Auf der Maschine, die den Server spielen soll, im Terminal:

uname -m

Die Antwort sagt euch das Paket:

aarch64
Raspberry Pi 4/5 und andere ARM-Rechner → loom-<version>-linux-arm64.zip oder LOOM-<version>-aarch64.AppImage
x86_64
normaler PC oder Server → loom-<version>-linux-x64.zip oder LOOM-<version>-x86_64.AppImage
armv7l
32-Bit-Raspberry-Pi-OS — dafür gibt es derzeit kein Paket. Installiert das 64-Bit-Raspberry-Pi-OS neu (Standard seit 2022) und sagt uns Bescheid.

Warum die Reihenfolge so ist: uname -m antwortet auf einem Mac mit arm64 und unter Windows gar nicht — wer mit diesem Befehl anfängt, findet seine Ausgabe in der Liste oben nicht wieder. Deshalb zuerst das System, dann die Architektur.

⚠ Ehrlich gesagt: auf einem echten Pi haben wir es noch nicht laufen sehen

Das ARM-Paket ist gebaut und wurde in einer echten ARM-Linux-Umgebung gestartet — LOOM antwortet dort, die Hilfe-Seiten werden ausgeliefert, im Start-Protokoll steht kein Fehler. Was nicht geprüft ist: euer Pi mit eurem Betriebssystem-Abbild, und ob seine Leistung im Alltag reicht. Ihr seid die Ersten. Wenn etwas klemmt, ist das ein Befund und kein Anwenderfehler — sagt Bescheid, wir wollen es genau wissen.

LOOM in den Team-Modus schalten

LOOM kennt zwei Betriebsarten. Am eigenen Laptop läuft es im Modus local — da darfst du alles. Auf einem Team-Server stellt ihr hosted ein.

Die Einstellung steht in der Datei app-settings.yaml auf der Maschine, auf der LOOM läuft:

macOS
~/Library/Application Support/LOOM/app-settings.yaml
Windows
%APPDATA%\LOOM\app-settings.yaml
Linux
~/.config/LOOM/app-settings.yaml
app-settings.yaml
port: 5311
mode: hosted

Danach LOOM neu starten. Den aktiven Modus seht ihr jederzeit in LOOM unter Settings → App; ändern lässt er sich dort bewusst nicht — dafür muss man an die Maschine.

Wer darf den Modus ändern?

Wer die Datei bearbeiten kann. LOOM hat dafür keine eigene Rolle — wer Zugriff auf den Server hat, betreibt ihn. Das ist keine Lücke, sondern Absicht: eine Berechtigung weniger, die falsch stehen kann.

Wie stoppt ihr einen Team-Server?

Auf der Maschine, nicht im Browser. Im lokalen Modus hat LOOM oben rechts einen Aus-Knopf — auf einem Team-Server ist der bewusst nicht da: ein Klick würde LOOM für das ganze Team beenden, und daran ändert auch eine Anmeldung nichts. Stattdessen zeigt die Leiste dort einen Hinweis TEAM SERVER.

Läuft LOOM als Dienst (so richtet es die ausführliche Weg-3-Anleitung ein), dann:

Stoppen
sudo systemctl stop loom
Starten
sudo systemctl start loom
Läuft es?
systemctl status loom — und journalctl -u loom -f zeigt mit, was LOOM gerade meldet.

Abmelden ist kein Stoppen. Nach dem Abmelden fragt LOOM wieder nach dem Zugangsschlüssel — dieser Bildschirm sieht aus wie ein ausgeschaltetes LOOM, aber der Server läuft weiter und hält seinen Port. Das hat schon ein Team gekostet, das genau das versucht hat.

Zugangsschlüssel verteilen

Jedes Teammitglied bekommt einen eigenen Zugangsschlüssel (Token). Damit meldet es sich am Team-Server an — LOOM weiß dann, wer etwas geworfen hat. Es gibt bewusst keine Benutzerkonten und keine Passwörter: ein Schlüssel pro Person, mehr braucht ein DA-Team nicht.

⚠ Reihenfolge beachten — sonst sperrt ihr euch aus

Die Schlüssel werden im lokalen Modus erzeugt, bevor ihr auf hosted umstellt. Sonst braucht ihr zum Anmelden einen Schlüssel, den ihr nur im angemeldeten Zustand erzeugen könntet.

So richtet ihr es ein
1
LOOM auf dem Server starten, solange mode noch auf local steht (oder die Zeile fehlt).
2
Settings → App → Team access: für jedes Mitglied auf Create token klicken. Der Schlüssel erscheint genau einmal — kopieren und der Person geben (persönlich, nicht in den Gruppenchat).
3
mode: hosted setzen und LOOM neu starten. Ab jetzt fragt LOOM beim Öffnen nach dem Schlüssel.
4
Danach kann nur noch die Person Schlüssel verwalten, die im Setup als Maintainer eingetragen ist.

Schlüssel verloren?

Einfach einen neuen erzeugen — der alte hört im selben Moment auf zu funktionieren. Es gibt kein „Passwort vergessen", weil es kein Passwort gibt.

Wo die Schlüssel liegen

Neben app-settings.yaml auf der Maschine, und zwar nur als Prüfsumme — der Schlüssel selbst steht nirgends. Er landet nie in eurem Projekt-Ordner, denn der liegt in Git und wäre damit in jedem Klon.

Was sich im Team-Modus ändert

Board ist festgelegt

Der Vault-Umschalter oben links ist weg. Sonst würde ein Klick von einer Person allen anderen das Board unter den Füßen wegziehen.

Kein Ausschalten

Der Beenden-Knopf ist weg. Auf einem gemeinsamen Server würde er den Dienst für alle stoppen.

Die KI läuft bei dir

Am Team-Server hat die KI keine zentrale Adresse mehr. Jede:r von euch braucht Ollama auf dem eigenen Gerät — dort läuft eure KI, egal ob ihr in der Schule sitzt oder zuhause. Der Server selbst braucht kein Ollama; auf einem Raspberry Pi könnte es ohnehin nicht laufen. Auch das Modell wählt jede:r für sich.

Backup für alle

An die Dateien auf dem Server kommt vom Browser aus niemand heran. Deshalb kann jedes Mitglied unter Settings → Board → Backup das ganze Board als ZIP herunterladen — die Zugangsschlüssel sind nicht darin. Zurückspielen geht nur an der Maschine: LOOM stoppen, den Vault-Ordner durch den entpackten ersetzen, LOOM starten. Ansehen kann jede:r ein Backup auch im eigenen LOOM: entpacken und über den Board-Umschalter öffnen.

Alles andere bleibt wie gewohnt: Stories, Flocks, Beacons, Casting, Loomback — der ganze Rhythmus funktioniert unverändert.

Zwei Stolpersteine

Live-Aktualisierung braucht Durchlass

LOOM hält eine offene Verbindung nach /api/events, um Änderungen zu melden. Manche Reverse Proxys puffern solche Verbindungen und halten sie zurück. Bei Caddy funktioniert es out of the box; bei nginx braucht es proxy_buffering off; und eine großzügige proxy_read_timeout.

Ollama muss LOOM hereinlassen

Euer Ollama nimmt standardmäßig nur Anfragen vom eigenen Rechner an — LOOM kommt aber vom Server. Das gilt pro Gerät: jede und jeder, der die KI benutzen will, setzt das einmal auf dem eigenen Rechner, nicht auf dem Server.

macOS
launchctl setenv OLLAMA_ORIGINS "*" — danach Ollama komplett beenden und neu starten. Ein laufendes Ollama übernimmt die Einstellung nicht, und nichts weist darauf hin. Diese Einstellung ist nach dem nächsten Neustart des Rechners wieder weg — auf dem Mac müsst ihr sie nach jedem Hochfahren neu setzen.
Windows
setx OLLAMA_ORIGINS "*" — danach Ollama schließen und wieder öffnen.
Linux
systemctl edit ollama, dort die Zeile Environment="OLLAMA_ORIGINS=*" eintragen, dann systemctl restart ollama.

Dasselbe sagt euch LOOM auch selbst, wenn es klemmt — die Karte im Dashboard nennt die Zeile für euer System.

Wenn es trotzdem nicht wirkt (macOS)

Zwei Dinge scheitern hier lautlos, und beide haben uns schon einen Vormittag gekostet:

Stoppen
Das verschwundene Menüleisten-Symbol beweist nichts — ollama serve läuft oft weiter. Sicher beenden mit killall Ollama; pkill -x ollama, danach muss lsof -nP -iTCP:11434 -sTCP:LISTEN leer sein. Erst dann neu starten.
Prüfen
Fragt Ollama selbst, nicht die Umgebung — launchctl getenv zeigt den Wert auch dann noch an, wenn er nie im laufenden Ollama angekommen ist:
curl -s -o /dev/null -w "%{http_code}" -H "Origin: https://euer-server" http://localhost:11434/api/tags
200 heißt: es wirkt. 403 heißt: der Wert ist nicht angekommen.

Nach jedem Neustart des Macs — ein Block statt vier Handgriffe

Weil die Einstellung auf dem Mac das Hochfahren nicht überlebt, braucht ihr sie danach erneut. Diese vier Zeilen erledigen alles auf einmal — setzen, stoppen, starten, prüfen. Einfach am Stück ins Terminal einfügen. Windows und Linux brauchen das nicht: dort bleibt die Einstellung gespeichert.

Terminal · macOS
launchctl setenv OLLAMA_ORIGINS "*"
killall Ollama; pkill -x ollama; sleep 3
open -a Ollama; sleep 8
curl -s -o /dev/null -w "%{http_code}\n" -H "Origin: https://euer-server" http://localhost:11434/api/tags

Die letzte Zeile ist das Urteil: 200 heißt, es wirkt — ihr könnt LOOM neu laden. 403 heißt, der Wert ist nicht im laufenden Ollama angekommen; dann hat wahrscheinlich das Beenden nicht funktioniert (siehe Kasten darüber). Setzt für euer-server die Adresse ein, unter der ihr LOOM aufruft.

Dauerhaft — für Erfahrene (macOS)

Wer den Block nicht nach jedem Hochfahren einfügen will, kann ihn dem Mac überlassen. Dieser Block richtet eine kleine Hilfe ein, die bei jeder Anmeldung läuft: sie setzt den Wert, wartet auf Ollama, fragt Ollama selbst — und startet es nur dann neu, wenn es LOOM noch abweist. Lässt Ollama LOOM schon herein, passiert nichts.

Das ist bewusst die zweite Stufe, nicht die erste: die Hilfe beendet bei Bedarf eine fremde App (Ollama). Wenn ihr nicht sicher seid, was das heißt, bleibt beim Block oben — der reicht.

Terminal · macOS · einmal einrichten
mkdir -p ~/.loom ~/Library/LaunchAgents ~/Library/Logs
cat > ~/.loom/ollama-origins.sh <<'EOF'
#!/bin/bash
# LOOM: after every login, make sure the running Ollama lets the team server in.
# Sets the value, waits for Ollama, asks Ollama itself, and restarts it only if it says no.
probe() { curl -s -o /dev/null -w "%{http_code}" -H "Origin: https://loom-check.invalid" http://localhost:11434/api/tags; }
launchctl setenv OLLAMA_ORIGINS "*"
for i in $(seq 1 60); do [ "$(probe)" != "000" ] && break; sleep 2; done
if [ "$(probe)" = "000" ]; then echo "$(date '+%F %T') Ollama is not running - value set for its next start"; exit 0; fi
if [ "$(probe)" = "200" ]; then echo "$(date '+%F %T') ok - Ollama already lets LOOM in"; exit 0; fi
killall Ollama 2>/dev/null; pkill -x ollama 2>/dev/null
for i in $(seq 1 15); do lsof -nP -iTCP:11434 -sTCP:LISTEN >/dev/null || break; sleep 1; done
open -a Ollama
# Ollama may restart itself a few times (an update at login does) - judge only after it settled.
for i in $(seq 1 30); do [ "$(probe)" = "200" ] && break; sleep 2; done
echo "$(date '+%F %T') restarted Ollama - check says $(probe) (200 = it works)"
EOF
cat > ~/Library/LaunchAgents/loom.ollama-origins.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>loom.ollama-origins</string>
  <key>ProgramArguments</key><array><string>/bin/bash</string><string>$HOME/.loom/ollama-origins.sh</string></array>
  <key>RunAtLoad</key><true/>
  <key>StandardOutPath</key><string>$HOME/Library/Logs/loom-ollama-origins.log</string>
  <key>StandardErrorPath</key><string>$HOME/Library/Logs/loom-ollama-origins.log</string>
</dict></plist>
EOF
LOG=~/Library/Logs/loom-ollama-origins.log; BEFORE=$(cat "$LOG" 2>/dev/null | wc -l)
launchctl bootout gui/$(id -u)/loom.ollama-origins 2>/dev/null
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/loom.ollama-origins.plist
for i in $(seq 1 90); do [ "$(cat "$LOG" 2>/dev/null | wc -l)" -gt "$BEFORE" ] && break; sleep 1; done; tail -1 "$LOG"

Die letzte Ausgabe ist wieder das Urteil, und die Hilfe schreibt es bei jeder Anmeldung mit: tail ~/Library/Logs/loom-ollama-origins.log. ok oder check says 200 heißt: es wirkt. check says 403 heißt: das Beenden hat nicht geklappt — dann hilft der Kasten „Wenn es trotzdem nicht wirkt" oben.

Geprüft am 3. Oktober 2026 mit einem echten Neustart (macOS 27.0.1): ohne irgendetwas einzufügen ließ Ollama danach den Team-Server herein. Ollama hat sich beim Anmelden dabei selbst aktualisiert und dafür mehrmals neu gestartet — deshalb wartet die Hilfe, bis es zur Ruhe kommt, bevor sie urteilt. Den Block erneut einzufügen ist unbedenklich: er ersetzt die vorhandene Hilfe.

Terminal · macOS · Hilfe wieder entfernen
launchctl bootout gui/$(id -u)/loom.ollama-origins
rm -f ~/Library/LaunchAgents/loom.ollama-origins.plist ~/.loom/ollama-origins.sh
launchctl unsetenv OLLAMA_ORIGINS
killall Ollama; pkill -x ollama; sleep 3; open -a Ollama

Und wieder zurück — wenn das Projekt vorbei ist

Das * heißt jede Herkunft. Für euren Team-Server ist das richtig, aber es bleibt auf eurem privaten Gerät stehen, bis ihr es zurücknehmt:

macOS
launchctl unsetenv OLLAMA_ORIGINS
Windows
reg delete "HKCU\Environment" /v OLLAMA_ORIGINS /f — oder den Eintrag in „Umgebungsvariablen für dieses Konto bearbeiten" löschen.
Linux
systemctl edit ollama und die Zeile Environment="OLLAMA_ORIGINS=*" wieder entfernen, dann systemctl restart ollama.

Ollama danach neu starten, genau wie beim Setzen. — Ehrlich gesagt: den Mac-Weg kennen wir inzwischen gut — und wissen deshalb, dass er nur bis zum nächsten Hochfahren hält. Windows und Linux haben wir bis heute nicht selbst nachgeprüft; läuft es bei euch anders, sagt uns Bescheid — dann korrigieren wir die Seite.

Safari und https — warum die KI dort ausbleibt

Läuft euer Team-Server über https (Weg 3), ruft LOOM euer Ollama unter http://localhost:11434 auf. Safari erlaubt einer https-Seite keinen Aufruf einer http-Adresse — auch nicht auf dem eigenen Rechner. Die Anfrage verlässt den Browser gar nicht erst; Ollama sieht sie nie. Deshalb hilft hier keine Einstellung an Ollama, auch nicht OLLAMA_ORIGINS.

Gemessen
am 3. Oktober 2026 mit Safari 27.0.1 auf macOS: von einer https-Seite aus blockiert (für localhost und 127.0.0.1), obwohl Ollama genau diese Herkunft zuließ; von einer http-Seite im eigenen Netz aus ging es. Chrome kam auf derselben https-Seite durch.
Was ihr tut
Für die KI auf einem https-Server Chrome verwenden. Alles andere in LOOM funktioniert in Safari wie gewohnt. Weg 1 (im eigenen Netz) und Weg 2 (Tailscale) laufen über http — dort tritt die Grenze nicht auf.
iPhone · iPad
Dort verwenden alle Browser Safaris Technik — die lokale KI ist auf diesen Geräten ohnehin kein Thema, weil Ollama dort nicht läuft.

Ehrlich gesagt: Firefox haben wir noch nicht geprüft. Klappt es bei euch dort, sagt uns Bescheid — dann nehmen wir es hier auf.

LOOM · Team-Server
Iron-Labs · Diese Seite beschreibt den Stand v1.2. LOOM hat eine eigene Anmeldung — trotzdem gilt ohne Ausnahme: euer Zugangsschlüssel darf nie unverschlüsselt durchs Netz. Welchen der drei Wege ihr dafür nehmt, ist eure Entscheidung.