§ Plattform / API & Agents
Alles, was du klicken kannst, kannst du skripten.
Jede Fähigkeit in Scellis wird als typisiertes Verb definiert, bevor irgendeine Oberfläche sie aufruft — die Knöpfe, die du drückst, und der Code, den du schreibst, sind also dasselbe Produkt, nicht zwei Implementierungen, die auseinanderdriften. Skripte, was du eben von Hand getan hast, gib eine lange Analyse an den Copilot ab und — sobald die Oberfläche fertig ist — verbinde deinen eigenen Agenten. Alles mit deiner Zustimmung, und nichts davon kann dein Geld ausgeben.
Eine Aktion, ein Handler
Ein Klick, eine Zeile Code, ein Copilot-Satz — jeder Aufrufer landet auf demselben validierten Handler, mit denselben Prüfungen und derselben Zustimmung.
Die Baureihenfolge ist eine Regel der Plattform: zuerst das typisierte Verb, dann das Studio-Element, das es aufruft, dann das Copilot-Tool, das dasselbe Verb aufruft. Validierung lebt genau einmal, in dieser einen Methode — ein Button ist hier also nicht mit versteckter Logik verdrahtet; er ist ein Aufrufer wie jeder andere. Es gibt keine zweite Implementierung, die aus dem Tritt geraten könnte.
Diese Symmetrie macht den Copilot als Operator vertrauenswürdig: Wenn er einen Workflow bearbeitet oder einen Lauf startet, durchläuft er exakt die Prüfungen, die du durchläufst, und dein Canvas aktualisiert sich über genau den Pfad, den dein eigener Klick genommen hätte. Es gibt keine Hintertür nur für Agenten, die man bewachen müsste — und keine Fähigkeit, die es nur per Klick gäbe und die ein Skript nachahmen müsste.
Die Oberfläche liest sich wie das Produkt
Rund 30 Namespaces heute — eine offene Liste, die mit dem Produkt wächst, nie ein festes Menü.
| Familie | Namespaces | Was die Verben tun |
|---|---|---|
| Bauen | program.* | Workflows aus Code erstellen, patchen, vergleichen, kompilieren und planen — mit Undo und Redo auf demselben Stack wie die Toolbar. |
| Ausführen & Beobachten | run.* | Starten, pausieren, fortsetzen, abbrechen — und Status und Metriken eines laufenden Runs lesen, während sie eintreffen. |
| Modelle | model.* | Layer, Gruppen und Adapter; Optimizer-, Scheduler- und Loss-Einstellungen; Inferenz-Runs. |
| Authoring & Daten | catalog.* · dataset.* | Suchen, erstellen, aktualisieren, forken; Dataset-Splits, Labels und Cards — durch dieselbe Prüfung wie die Oberfläche. |
| Gemeinsam | share.* · doc.* · pool.* · federation.* | Einladungen und Zugriff, Live-Co-Editing, gepoolte Jobs, föderierte Runden. |
| Verwalten & Veröffentlichen | workspace.* · audit.* · publish.* · provenance.* | Rollen und Richtlinien, ein abfragbares Audit-Log, Publikations-Gates, Herkunft in beide Richtungen. |
Eine Momentaufnahme, keine Obergrenze: Die Liste wächst mit dem Produkt, und ein neues Verb kommt in derselben Änderung mit seinem Bedienelement und seinem Copilot-Tool — die Paritätsprüfung akzeptiert nichts Geringeres.
Die Namespaces spannen sich über das gesamte Produkt: catalog, program, run und model für die Arbeit selbst; workspace und audit für Governance; share, doc und presence fürs gemeinsame Arbeiten; pool, job und federation fürs gepoolte Rechnen; marketplace, purchase und billing für Commerce; connector und credential für Daten. Jedes Verb ist als read, write oder destructive klassifiziert — keines bleibt unklassifiziert; was ein Aufrufer darf, ist immer eine Aussage, nie eine Vermutung.
Authoring läuft über dieselben Verben: catalog.create und catalog.update durchlaufen dieselbe Prüfung, die auch die Oberfläche freigibt — und die mitgelieferten Inhalte —, sodass was ein Agent schreibt strukturell identisch mit dem ist, was du schreibst. Selbst Undo ist ein Verb und zielt auf denselben Stack wie die Toolbar: Deshalb kann der Copilot seine eigenen Änderungen zurücknehmen — und du seine.
Automatisch geprüft, nicht in einem README versprochen
Eine neue Fähigkeit landet als vier Teile in einer Änderung — typisierte Methode, Verb, Bedienelement und Copilot-Tool — und eine automatische Prüfung weist jede Lücke ab: ein Verb, das man nirgends anklicken kann, ein Tool ohne Verb dahinter, ein Menüpunkt, der am Service vorbeigeht. Obendrauf fährt ein Browser-Test das echte Studio auf echtem WebGPU und prüft, dass dieselbe Operation — von Hand, dem Copilot gesagt oder aus Code aufgerufen — den Workspace in exakt demselben Zustand hinterlässt.
Events schließen den Kreis: Durch welche Tür eine Änderung auch kam — jedes offene Panel aktualisiert sich auf dieselbe Weise. Ein Lauf, den dein Skript gestartet hat, taucht im Studio deiner Kollegin genau so auf, als hätte sie ihn selbst gestartet. Die Befehlspalette ist dieselbe Verb-Liste, auf die Tastatur projiziert, und die Plattform zu skripten heißt, die eigene Quelle der Wahrheit des Produkts zu lesen — nicht, ein angeschraubtes SDK zu lernen.
Der Server weiß, wer aufruft — und was er darf
| Art des Aufrufs | Was es braucht | Beispiele |
|---|---|---|
| Lesen | Fließt im Rahmen dessen, was du freigegeben hast. | catalog.search · run.observe · provenance.backward |
| Schreiben | Deine Zustimmung, mit der konkret vorgeschlagenen Änderung vor Augen — nie ein bloßes „Erlauben?“. | program.patch · run.start · optimize.apply |
| Destruktiv | Eine Bestätigung, die die echte Operation rendert, plus Rate-Limit. | catalog.delete · run.cancel · publish.submit |
| Geldbewegend | Nur ein Aufrufer — du, mit einem Klick in der App — plus ein Einmal-Token, das der Server genau einmal annimmt. Jeder maschinelle Aufrufer wird abgewiesen. | purchase.* · payout · refund_request |
| Zugangsdaten | Nur von dir, nur in der App — nie an den Copilot oder einen externen Agenten weitergereicht; die Geheimnisse bleiben auf deinem Gerät. | credential.* |
Die Stufe ist Teil des Verb-Vertrags — kein Verb ist unklassifiziert, und die Klassifikation wird auf dem Server durchgesetzt, nicht in der Tool-Liste eines Clients.
Jedes Verb trägt eine Zustimmungsstufe. Lesen fließt im Rahmen dessen, was du freigegeben hast; ein Schreibzugriff zeigt dir die konkret vorgeschlagene Operation — die tatsächliche Änderung, nie ein bloßes „Erlauben?“ — und ein destruktiver Aufruf rendert die echte Operation und ist rate-limitiert. Und wer aufruft — du in der App, der Copilot, ein Skript, ein API-Key, ein externer Agent — ermittelt der Server aus dem Credential selbst, nie aus dem, was die Anfrage über sich behauptet. Ein Client kann sich nicht als dich ausgeben.
Geld ist die harte Linie: Kauf- und Abrechnungs-Verben akzeptieren genau einen Aufrufer — dich, mit einem Klick in der App —, jeweils gebunden an ein frisches Token, das der Server ausstellt und genau einmal annimmt. Ein prompt-injizierter Copilot, ein geleakter API-Key, ein verbundener externer Agent: Keiner von ihnen kann kaufen, denn die Ablehnung ist eine Liste im Server, keine Regel in einem Prompt. Zugangsdaten ziehen dieselbe Linie eine Schicht tiefer — sie werden nie zu einem Agenten-Werkzeug. Das gehört zur Sicherheitshaltung der Plattform, es ist keine Einstellung.
Bring deinen eigenen Agenten mit — auf einer Oberfläche, die mitwächst
Claude Code, Claude Desktop, claude.ai — jeder MCP-kompatible Client ist als dritter Aufrufer derselben Oberfläche eingeplant. Early Access: Ende-zu-Ende spezifiziert, gerade in Entwicklung.
Das Werkzeug-Set, das ein externer Agent sieht, wird generiert — aus derselben Verb-Liste, die Oberfläche und Copilot benutzen. Null handgeschriebene Tools: Die Sicht eines Agenten auf Scellis kann dem Scellis, das du benutzt, also nicht hinterherhinken. Sobald die Oberfläche ausgeliefert ist, erscheint eine morgen ergänzte Fähigkeit bei der nächsten Regeneration, ohne dass jemand ein Tool dafür schreibt. Das Projektionsformat ist im permissiv lizenzierten Interchange-Ring veröffentlicht, und der Guide geht die ganze Oberfläche durch — wie die Tools generiert werden, was ein Agent anfassen darf und was nicht: die Agenten-Oberfläche.
Das Sicherheitsmodell ist die bewusste Hälfte des Entwurfs. Der Zugang läuft über OAuth 2.1 mit kurzlebigen Tokens an einer Freigabe, die du jederzeit widerrufen kannst — dein Client, dein Scope, dein Ablaufdatum — und ein Scope deckelt, was ein Namespace darf; die Scope-Grammatik kann einen Commerce-Scope nicht einmal ausdrücken. Einen Agenten mit deinem Tab zu koppeln ist eine ausdrückliche Geste, und solange er gekoppelt ist, zeigt der Tab einen dauerhaften „Agent verbunden“-Hinweis, einen Live-Feed jedes einzelnen Aufrufs und Widerruf mit einem Klick.
In diesem Entwurf beantwortet die Plattform Lesezugriffe auf synchronisierten Zustand direkt; alles, was schreibt oder dein Gerät berührt, verlangt deinen live gekoppelten Tab — kein Tab, nichts über Lesen hinaus. Zwei ehrliche Notizen überleben bis ins Datenblatt: Dies ist die eine Oberfläche, die nicht offline-fähig ist, weil sie über das Plattform-Relay läuft (das Studio selbst bleibt vollständig lokal), und Prompt-Injection ist begrenzt, nicht eliminiert — was bleibt, steht in den ehrlichen Grenzen.
Arbeit, die du abgeben kannst — und prüfen
Dein Agent macht die Analyse — und hinterlässt einen Nachweis, den du prüfen kannst.
Delegation zählt nur, wenn du die Arbeit prüfen kannst. Jede Änderung eines Agenten ist ihm zugeschrieben und landet als explizite, wiederholbare Operation — im Diff sichtbar, einzeln rückgängig zu machen, nie ein mysteriöser Schreibzugriff. Jeder Aufruf eines externen Agenten ist so entworfen, dass er einen Audit-Eintrag hinterlässt — welche Freigabe, welcher Client, welches Verb, welche Argumente, was passiert ist — nachträglich abfragbar und live in deinen Aktivitäts-Feed gestreamt, solange die Session gekoppelt ist.
Die stärkste Evidenz trägt die Arbeit selbst: Ein Lauf verknüpft seinen Workflow, seine Eingaben, die Engine-Version und seine Ausgaben zu einem Herkunfts-Datensatz — was dein Agent gebaut hat, ist per URL reproduzierbar wie alles andere hier. Du prüfst eine Änderung und eine Herkunft — kein Chat-Protokoll.
Gib deinem Agenten die Analyse. Behalte die Autorität, Ja zu sagen: Die Absicht, ein Werkzeug auszulösen, kommt nur von dir, und eine destruktive Bestätigung passiert vor einem Menschen — mit der echten Operation vor Augen, nicht mit der Zusammenfassung des Agenten.