§ Plattform / Daten
Deine Daten: rein, raus, verbucht.
Lokale Dateien streamen direkt von der Platte und verlassen dein Gerät standardmäßig nie. Alles andere — das Web, Buckets, Cloud-Speicher, SSH — kommt über Konnektoren herein: Du wirst gefragt, bevor etwas geholt wird, und die Schlüssel, die diese Türen öffnen, liegen verschlüsselt auf deinem Gerät und werden nirgendwohin synchronisiert. Und weil jedes Byte in einer Datenbank landet, trägt jeder Datensatz, jedes Modell und jedes Ergebnis die Geschichte seiner Herkunft.
Externe Quellen passieren ein Schloss
Ein Konnektor ist Inhalt, kein Feature der Engine. Jeder bindet drei Dinge: was er anfasst, typisierte Ein- und Ausgänge mit einem klaren Plan fürs Streamen, und den Schlüssel, den er braucht. Nichts davon ist uns vorbehalten — dieselbe Form, dieselben Prüfungen und derselbe Katalog bedienen die Builtins und selbst geschriebene Konnektoren gleichermaßen. Eine fehlende Quelle ist also etwas, das du hinzufügst, nicht etwas, worauf du wartest.
Die Richtung steckt im Typ, sie ist keine Nuance. Daten hereinholen zieht Bytes auf dein Gerät — du stimmst beim Abruf zu, danach liegen sie local-first. Daten hinausschicken ist eine eigene, stärkere Zustimmung, die das Ziel benennt, und sie kann nie auf der Erlaubnis mitreisen, die du fürs Hereinholen gegeben hast. Und wo ein Browser ein Protokoll gar nicht sprechen kann — ein Tab öffnet keinen rohen Netzwerk-Socket — laufen SSH und FTP über ein Plattform-Relay und werden genau so deklariert.
Ein Startkatalog, nie eine Obergrenze
| Familie | Konnektoren | Was die Tür öffnet | Wie es läuft, und eine ehrliche Anmerkung |
|---|---|---|---|
| Speicher | Lokale Dateien · Uploads · S3 · GCS · Drive · Dropbox | ein Dateidialog · Signatur der Anfrage · OAuth | Direkt aus deinem Browser; Bucket-Anfragen werden auf deinem Gerät signiert. |
| Transfer | Das Web, rein und raus · FTP · FTPS · SFTP | API-Schlüssel · Passwort · SSH-Schlüssel | Das Web läuft direkt aus dem Browser; SSH und FTP über das Relay — ein Tab öffnet keinen rohen Socket. |
| Nachrichten | E-Mail · Telegram · Ausgehende Webhooks | Passwort · API-Schlüssel · gemeinsames Geheimnis | Die Zustimmung nennt die Empfängerin; eine Probe und ein Protokoll des Gesendeten sind Pflicht, keine Option. |
| Eingehend | Eingehende Webhooks | ein wechselbarer Inbox-Schlüssel | Eine gehostete Inbox, größenbegrenzt und mit Ablauf — nie etwas, das auf deinem Gerät lauscht, und unterwegs nicht local-first. |
| Export | Google Sheets · Colab-Export | OAuth — nur die Dateien, die du wählst | Ein Formatwandler plus ein Konnektor; Colab heißt Export plus ein Link zum Öffnen — nie Ausführung aus der Ferne. |
Elf Konnektoren sind der Startkatalog des Early Access, keine Grenze: Die Arten und die Familien sind offene Listen, die jede und jeder erweitern kann, und jede Zeile hat dieselbe Prüfung bestanden wie ein Konnektor, den du schreibst.
Der Startkatalog umfasst elf Konnektoren in fünf Familien: lokale Dateien und Uploads; das Web, rein und raus; FTP, FTPS und SFTP über das Relay; S3 und GCS, mit auf deinem Gerät signierten Anfragen; Google Drive und Dropbox; E-Mail-Versand; ein Telegram-Bot; ausgehende Webhooks; eine Inbox für eingehende; Zeilen an eine Tabelle anhängen; und Export nach Colab. Jeder davon ist gewöhnlicher Katalog-Inhalt — versioniert, lesbar, aus dem Katalog installiert wie alles andere.
Was bewusst *nicht* dabei ist, sagt genauso viel wie das, was da ist. OneDrive, Slack, Discord, die Gmail-API — die bleiben zum Selberschreiben: ein Nachmittag Arbeit, mit eigenen App-Zugangsdaten, veröffentlicht wie jeder andere Inhalt. Eine fehlende Integration ist eine Lücke im Katalog, nie ein Ticket in der Warteschlange eines Anbieters. Der Guide geht den ganzen Weg durch: Daten & Konnektoren.
Der Tresor, den die Plattform nicht lesen kann
| Eigenschaft | Mechanismus | Anmerkung |
|---|---|---|
| Im Ruhezustand | AES-256-GCM unter einem gerätegebundenen Schlüssel | Auf deinem Gerät verschlüsselt; die Plattform hält keine Kopie. |
| Sync & Herkunft | nie | Nicht synchronisiert, nicht zur Synchronisierung eingereiht, in keine Aufzeichnung geschrieben — eine Regel, keine Einstellung. |
| Backup | eine passphrasengeschützte Exportdatei | Du hältst sie. Ohne sie heißt Geräteverlust: Schlüssel neu eingeben — eine Design-Eigenschaft, kein Defekt. |
| Die eine Ausnahme | das Relay meldet sich für SSH und FTP an | Im Speicher, nur für diese Verbindung, mit deiner Zustimmung — benannt, nie versteckt. |
| Daten hinausschicken | eine eigene Zustimmung, die das Ziel benennt | Die Erlaubnis fürs Hereinholen deckt sie nie mit ab; die Richtung steckt im Typ. |
| Assistenten | Schlüssel fasst nur du an, in der App | Der Copilot kann einen Konnektor einrichten und dir zeigen, was er täte; ein Geheimnis sieht er nie. |
Die Geheimnisse, die ein Konnektor braucht — API-Schlüssel, Anmelde-Tokens, SSH-Schlüssel — liegen in einem verschlüsselten Speicher auf deinem Gerät, unter einem Schlüssel, der an dieses Gerät gebunden ist. Sie werden nie synchronisiert, nie zur Synchronisierung eingereiht, nie in die Aufzeichnung eines Laufs gestempelt. Die eine Kopie, die existiert, ist deine; ein Schlüssel bewegt sich nur auf einem einzigen Weg — als passphrasengeschützte Exportdatei, die du hältst und die die Plattform nie zu sehen bekommt.
Es gibt genau eine Ausnahme, und sie wird benannt statt versteckt: SSH und FTP verlangen, dass sich das Relay als du anmeldet — dieses Geheimnis passiert das Relay also, nur im Speicher, nur für diese Verbindung und jedes Mal nur mit deiner Zustimmung. Es steht bei den ehrlichen Grenzen der Plattform, statt schöngeredet zu werden. Alles Weitere zur Vertrauensfläche — Sandbox, Signaturen, wann du wonach gefragt wirst — steht unter Sicherheit.
Selbst *wie* ein Dienst angebunden wird, ist Inhalt. Die Anmeldung bei einem externen Dienst beschreibt Inhalt, den du schreiben kannst — wo seine Anmeldeseite liegt, welche Rechte er verlangt, wie er die Identität der App belegt — ein neuer Anbieter ist also Inhalt, nie Engine-Code. Die Rechte werden schon beim Schreiben knapp gehalten: Der eingebaute Google-Konnektor fragt nur nach den einzelnen Dateien, die du auswählst, und ein Anbieter, den du schreibst, bringt seine eigenen App-Zugangsdaten mit — ganz ohne uns zu fragen. Die tiefere Mechanik steht in Sicherheit & Privatsphäre.
Von fremden Bytes zu zitierfähigen Datensätzen
Ein Konnektor bewegt Bytes; ein Formatwandler macht daraus typisierte Daten, mit denen du arbeiten kannst. Der eingebaute Satz liest und schreibt ONNX, safetensors und PyTorch-Checkpoints; CSV, Parquet und Arrow; Excel- und Word-Export; dazu die beiden gängigen Tokenizer, deren Vokabulare eigenständige, versionierte Artefakte sind. Zieh eine fremde Datei auf die Canvas, und sie läuft durch Konnektor und Wandler direkt in einen Datensatz — eine Geste, und derselbe Zustimmungspfad wie überall sonst.
Datensätze sind versioniert und über ihren Inhalt adressiert — ihre Splits ebenso. Trainings-, Validierungs- und Test-Partitionen sind Artefakte, auf die per Hash verwiesen wird; der exakte Split hinter einem Ergebnis ist damit reproduzierbar statt Folklore. Jeder Datensatz trägt ein Datenblatt und ein Profil — Spalten, fehlende Werte, Klassenbalance — und jeder Trainingslauf hält fest, welche Datensatz-Versionen er genau verbraucht hat. Genau das macht aus „Welche Daten haben dieses Modell trainiert?“ eine Abfrage statt eines Ausgrabungsprojekts.
Größer als der Speicher ist der Normalfall
Große Daten werden als Strom verarbeitet — in Stücken, gegen ausdrückliche Speicher- und Ablage-Budgets — nie durch Alles-Laden-und-Hoffen. Jeder Block sagt vorab, wie er seine Daten liest: in einem Durchgang, in einer genannten Zahl von Durchgängen oder indem er auf die Platte auslagert, wenn es nicht passt — und der Planer hält ihn daran. Ob ein Lauf passt, wird ausgerechnet, *bevor* er startet; einer, der nicht passt, wird vorab abgelehnt, mit konkreten Dingen, die du ändern kannst. Eine Speicher-Überraschung nach einer Stunde Rechnen ist ein Konstruktionsfehler, kein Pech.
Dieselbe Disziplin gilt, wenn nichts läuft. Große Dinge werden in Stücken gespeichert und über ihren Inhalt adressiert — gestreamt statt neu geparst, geholt, wenn sie gebraucht werden, und bei Ankunft geprüft. Alles, was ein gespeicherter Workflow braucht, liegt vor dem Lauf auf deinem Gerät, Lesezugriffe kommen also aus deiner eigenen Datenbank; ein geteilter Datensatz kommt als geprüfte Stücke an, und der Weltkatalog wird bei Bedarf abgefragt — nie als Ganzes auf deine Platte gespiegelt.
Senden ist bewusst; Trigger brauchen einen offenen Tab
Wenn ein Workflow auf die Welt wirkt — eine E-Mail sendet, eine Nachricht postet, einen Webhook aufruft — trägt der Akt Pflichten. Jeder von ihnen unterstützt eine Probe: genau das, was hinausginge — wohin, Betreff, Inhalt, welche Dateien — wird dir gezeigt, ohne dass wirklich etwas gesendet und ohne dass Zustimmung verbraucht wird. Sendungen sind außerdem gegen Wiederholung geschützt: Ein Workflow, der fortgesetzt oder neu gestartet wird, sendet nicht versehentlich zweimal, weil dein Gerät festhält, was es schon gesendet hat. Diese Aufzeichnung gilt — ehrlicherweise — pro Gerät, und jede Sendung wird in die Herkunft des Laufs geschrieben.
Eingehend ist ehrlich darüber, was ein Browser ist. Ein Tab kann nicht lauschen, also landen eingehende Webhooks in einer Inbox, die wir hosten — ein Schlüssel, den du wechseln kannst, größenbegrenzt, mit Ablauf. Das heißt: Was hereinkommt, ist unterwegs nicht local-first, und das Datenblatt sagt es genau so. Ein Ereignis kann einen Lauf nur starten, solange ein Tab offen ist; sonst wartet es in einer begrenzten Warteschlange, bis einer offen ist — und läuft diese über, sagt sie es laut, statt still etwas zu verwerfen.
Einen Trigger scharfzuschalten, ist die Zustimmung: eine stehende Erlaubnis über alles, was dieser Workflow anfasst, gegeben durch deine eigene Geste im Moment des Scharfschaltens. Ein Trigger kann beim Auslösen nie Zustimmung erzeugen, und eine Änderung, die den Wirkungskreis erweitert, entschärft ihn, bis du erneut scharfschaltest. Der Copilot darf einen Trigger entwerfen; er schaltet nie scharf. Senden, Inbox und Trigger kommen im Early Access in genau dieser Form — Scellis ist bewusst kein Produkt für unbeaufsichtigte Automatisierung: Ein geschlossener Tab führt nichts aus, und einen Zeitplaner, der bei geschlossenem Tab liefe, haben wir benannt und nicht gebaut.