11---
22title : " Mach dein bestehendes Geschäftssystem KI-nativ — ohne Migration"
3- description : " Verbinde ObjectOS mit der Datenbank, die du bereits betreibst, modelliere die Tabellen als Objekte und lass KI echte Daten abfragen und bearbeiten — unter deinen Berechtigungen, auf deinen Servern."
3+ description : " Verbinde ObjectOS mit der Datenbank, die du bereits betreibst, lass einen Coding-Agenten die Tabellen als Objekte modellieren und setze KI auf echte Daten — unter deinen Berechtigungen, auf deinen Servern, ohne das Ursprungssystem anzufassen ."
44author : ObjectStack Team
55date : 2026-05-30
66tags :
@@ -9,116 +9,246 @@ tags:
99 - Architecture
1010---
1111
12- Die meisten „Bring KI in dein Geschäft"-Versprechen setzen stillschweigend
13- einen Neuaufbau voraus: die Daten in eine neue Plattform heben, die
14- Workflows neu implementieren, das Team neu schulen. Genau das will niemand .
15- Das System of Record — das CRM, das ERP, das Ticketing-Tool , das
16- selbstgebaute Back Office — funktioniert bereits, und genau dort liegen die
17- Daten schon .
12+ Die meisten „Bring KI in dein Business"-Pitches setzen heimlich einen
13+ Neuaufbau voraus: Daten auf eine neue Plattform heben, Workflows neu
14+ implementieren, das Team umschulen und beten, dass die Migration gelingt .
15+ Genau das will niemand. Das System of Record — das CRM, das ERP, das
16+ Ticketing-Tool, das selbstgebaute Backoffice — funktioniert bereits, und
17+ die Daten liegen längst dort .
1818
19- ObjectOS vertritt die gegenteilige Haltung . ** Du migrierst nicht. Du verbindest.**
19+ ObjectOS nimmt die Gegenposition ein . ** Du migrierst nicht. Du verbindest.**
2020
2121## Die Idee in einem Satz
2222
23- Richte ObjectOS auf deine bestehende Datenbank, beschreibe die Tabellen, die
24- dich interessieren, als Objekte, und jeder KI-Agent, jeder Flow und jedes
25- Dashboard arbeitet sofort mit diesen Daten — automatisch an das richtige
26- System geroutet, geregelt durch dieselben Berechtigungen, die deine Nutzer
27- bereits haben.
23+ Richte ObjectOS auf deine bestehende Datenbank, beschreibe die Tabellen,
24+ die dich interessieren, als Objekte — und jeder KI-Agent, jeder Flow, jede
25+ API und jedes Dashboard arbeitet sofort auf diesen Daten, automatisch an
26+ das richtige System geroutet und durch dieselben Berechtigungen geregelt,
27+ die deine Nutzer bereits haben.
2828
29- Die ursprüngliche Anwendung ändert sich nicht. Die Zeilen wandern nicht.
30- ObjectOS wird zur KI-nativen, berechtigungsbewussten Oberfläche über dem,
31- was du bereits betreibst.
29+ Die ursprüngliche Anwendung ändert sich nicht. Die Zeilen bewegen sich
30+ nicht. ObjectOS wird zur KI-nativen, berechtigungsbewussten Oberfläche auf
31+ dem, was du ohnehin betreibst.
32+
33+ ## Ein konkretes Bild
34+
35+ Angenommen, dein Vertriebsteam läuft auf einem Postgres-CRM mit 40
36+ Tabellen. Accounts, Kontakte, Opportunities, Positionen, Aktivitäten —
37+ jahrelange echte Daten, eine Produktivanwendung, die deine Reps täglich
38+ nutzen. Die Führung will zwei Dinge: Leute sollen diese Daten * in
39+ natürlicher Sprache befragen* können („Welche Enterprise-Deals sind aus Q2
40+ gerutscht, und wer verantwortet sie?"), und Automatisierungen sollen
41+ sicher darauf agieren.
42+
43+ Die Neuaufbau-Antwort ist ein Sechs-Monats-Projekt. Die ObjectOS-Antwort
44+ ist ein Nachmittag:
45+
46+ 1 . Die CRM-Datenbank als ** schreibgeschützte** Datenquelle verbinden.
47+ 2 . Einen Coding-Agenten das Dutzend Tabellen, die dich wirklich
48+ interessieren, als Objekte modellieren lassen.
49+ 3 . Deine Daten befragen und die erste Automatisierung verdrahten.
50+
51+ Niemand fasst das CRM an. Die Reps merken nichts. Du bekommst eine
52+ KI-native Schicht auf exakt denselben Zeilen.
3253
3354## Wie es heute funktioniert
3455
35- Es gibt vier Schritte, und keiner davon lautet „bau deine App neu":
36-
37- 1 . ** Verbinde die Datenbank als Datasource.** Eine Datasource ist eine
38- benannte Verbindung — Postgres, MySQL, MongoDB, SQLite. Die
39- Zugangsdaten stammen aus der Umgebung, und die Verbindung kann
40- schreibgeschützt sein, wenn du zunächst nur analysieren möchtest.
41-
42- ``` ts
43- import type { Datasource } from ' @objectstack/spec' ;
44-
45- export const BusinessDb: Datasource = {
46- name: ' business_primary' ,
47- label: ' Business System (Postgres)' ,
48- driver: ' postgres' ,
49- config: {
50- connection: {
51- host: process .env .BIZ_DB_HOST ,
52- user: process .env .BIZ_DB_USER ,
53- password: process .env .BIZ_DB_PASSWORD ,
54- database: process .env .BIZ_DB_NAME ,
55- },
56- },
57- active: true ,
58- };
59- ```
60-
61- 2 . ** Modelliere die Tabellen als Objekte** — und du musst sie nicht von
62- Hand eintippen. Richte einen Coding-Agenten wie Claude Code auf das
63- verbundene Schema und bitte ihn, pro Tabelle eine Objektdatei auf
64- Quellebene zu generieren. Unsere
65- [ ` hotcrm ` ] ( https://github.com/objectstack-ai/hotcrm ) -Referenz-App
66- zeigt die genaue Form dieser Ausgabe: ein ` ObjectSchema.create({ … }) `
67- mit typisierten ` Field.* ` -Definitionen und ` Field.lookup(...) ` für
68- Fremdschlüssel. Du prüfst und verfeinerst; das Ergebnis gehört dir.
69-
70- 3 . ** Binde Objekte an die Datasource** — pro Objekt oder mit einer
71- Routing-Regel für einen ganzen Namespace:
72-
73- ``` ts
74- datasourceMapping : [
75- { namespace: ' biz' , datasource: ' business_primary' },
76- { default: true , datasource: ' default' },
77- ]
78- ```
79-
80- 4 . ** Lass die KI arbeiten.** Sobald eine Tabelle ein Objekt ist, arbeitet
81- die KI-Schicht kostenlos damit. Agenten fragen über ObjectQL ab, das
82- jedes Objekt zu seiner Datenbank routet — und jede Abfrage läuft als der
83- ** angemeldete Nutzer** und befolgt Berechtigungen auf Objekt-, Datensatz-
84- und Feldebene.
56+ Vier Schritte, und keiner davon heißt „bau deine App neu".
57+
58+ ### 1. Die Datenbank als Datenquelle verbinden
59+
60+ Eine Datenquelle ist eine benannte Verbindung — Postgres, MySQL, MongoDB,
61+ SQLite. Zugangsdaten kommen aus der Umgebung, niemals inline im Code. Wenn
62+ du zuerst nur analysieren willst, richte sie auf eine Read-Replica oder
63+ einen schreibgeschützten DB-Nutzer — Schreibzugriffe sind dann schlicht
64+ unmöglich.
65+
66+ ``` ts
67+ import type { Datasource } from ' @objectstack/spec' ;
68+
69+ export const BusinessDb: Datasource = {
70+ name: ' business_primary' ,
71+ label: ' Business System (Postgres)' ,
72+ driver: ' postgres' ,
73+ config: {
74+ connection: {
75+ host: process .env .BIZ_DB_HOST ,
76+ user: process .env .BIZ_DB_USER ,
77+ password: process .env .BIZ_DB_PASSWORD ,
78+ database: process .env .BIZ_DB_NAME ,
79+ },
80+ },
81+ pool: { min: 1 , max: 10 },
82+ active: true ,
83+ };
84+ ```
85+
86+ ### 2. Die Tabellen als Objekte modellieren — mit einem Coding-Agenten
87+
88+ Diesen Schritt erwarten alle als langsam, und das ist er nicht. Du tippst
89+ kein Objekt pro Tabelle von Hand. Du richtest einen Coding-Agenten wie
90+ ** Claude Code** auf das verbundene Schema und lässt ihn Introspektion und
91+ ersten Entwurf erledigen. Ein Prompt so schlicht wie:
92+
93+ > „Verbinde dich mit der Datenquelle ` business_primary ` . Erzeuge für jede
94+ > dieser Tabellen — ` accounts ` , ` contacts ` , ` opportunities ` , ` line_items ` —
95+ > eine Datei ` src/objects/<name>.object.ts ` mit ` ObjectSchema.create ` .
96+ > Mappe SQL-Spalten auf die passenden ` Field.* ` -Typen, mach aus
97+ > Fremdschlüsseln ` Field.lookup(...) ` und setze auf jedem Objekt
98+ > ` datasource: 'business_primary' ` ."
99+
100+ Der Agent liest die echten Spalten, Typen und Fremdschlüssel und schreibt
101+ Objektdateien auf Quellcode-Ebene. Unsere
102+ [ ` hotcrm ` ] ( https://github.com/objectstack-ai/hotcrm ) -Referenz-App zeigt die
103+ exakte Form dieser Ausgabe:
104+
105+ ``` ts
106+ import { ObjectSchema , Field } from ' @objectstack/spec/data' ;
107+
108+ export const Opportunity = ObjectSchema .create ({
109+ name: ' biz_opportunity' ,
110+ label: ' Opportunity' ,
111+ datasource: ' business_primary' ,
112+ fields: {
113+ name: Field .text ({ label: ' Name' , required: true }),
114+ account: Field .lookup ({ label: ' Account' , reference_to: ' biz_account' }),
115+ amount: Field .currency ({ label: ' Amount' }),
116+ stage: Field .select ({ label: ' Stage' , options: [/* … */ ] }),
117+ close_date: Field .date ({ label: ' Close Date' }),
118+ },
119+ });
120+ ```
121+
122+ Weil die Ausgabe ** gewöhnlicher Quellcode ist, den du besitzt und
123+ commitest** , behältst du die Kontrolle: Spalten, die zählen, behalten;
124+ solche, die du nicht offenlegen willst, weglassen; Labels, Validierungen
125+ und Berechtigungen darüberlegen. Der Agent bringt dich in Minuten zu einem
126+ prüfbaren Entwurf; du machst ihn produktionsreif.
127+
128+ ### 3. Objekte an die Datenquelle binden
129+
130+ Jedes Objekt trägt ein ` datasource ` . Setze es pro Objekt oder deklariere
131+ einmal eine Routing-Regel für einen ganzen Namensraum und lass jedes Objekt
132+ darunter erben:
133+
134+ ``` ts
135+ datasourceMapping : [
136+ { namespace: ' biz' , datasource: ' business_primary' },
137+ { default: true , datasource: ' default' },
138+ ]
139+ ```
140+
141+ Regeln matchen nach Namensraum, Paket oder Objektnamen-Glob; der erste
142+ Treffer gewinnt. Entscheidungen zur Datenresidenz liegen an einer Stelle
143+ statt über Dateien verstreut.
144+
145+ ### 4. Die KI arbeiten lassen
146+
147+ Sobald eine Tabelle ein Objekt ist, arbeitet die KI-Schicht gratis darauf.
148+ Die Agenten und Tools von ObjectOS — ` list_objects ` , ` describe_object ` ,
149+ ` query_records ` , ` aggregate_data ` und der Data-Chat-Agent — laufen alle
150+ durch ** ObjectQL** , das jedes Objekt an seine gebundene Datenquelle routet
151+ und Filter, Sortierung und Aggregationen * in die Datenbank pushed* , wenn
152+ der Treiber das unterstützt.
153+
154+ Wenn ein Nutzer also fragt:
155+
156+ > „Welche Enterprise-Opportunities sind aus Q2 gerutscht, und wer
157+ > verantwortet sie?"
158+
159+ schaufelt der Agent nicht die ganze Tabelle in den Prompt. Er kompiliert
160+ das zu einer ObjectQL-Abfrage gegen ` biz_opportunity ` — ein ` WHERE ` auf
161+ Stage und Abschlussdatum, ein Join auf den Owner — führt es als
162+ ` SELECT … WHERE … ` auf deinem Postgres aus und antwortet aus den echten,
163+ aktuellen Zeilen. Und entscheidend: Es führt diese Abfrage ** als der
164+ angemeldete Nutzer** aus — wenn ein Rep im CRM die Deals einer anderen
165+ Region nicht sehen darf, kann es der Agent auch nicht.
85166
86167## Warum das sicher ist
87168
88169Der Einwand gegen „KI auf unseren Geschäftsdaten" lautet immer Governance,
89170und genau dort leistet die Runtime die Arbeit:
90171
91- - ** KI handelt als der Nutzer, nie über ihm.** Ein Agent sieht genau das,
92- was die Person dahinter sehen darf — durchgesetzt in der Runtime, nicht
93- im Prompt.
94- - ** Standardmäßig schreibgeschützt, wenn du es möchtest .** Binde Objekte an
95- eine schreibgeschützte Verbindung oder einen schreibgeschützten DB-Nutzer.
96- Analysiere die Produktion sicher; aktiviere Schreibzugriffe bewusst.
97- - ** Alles auditiert.** Jeder Lese-, Schreib- und Eskalationsvorgang — ob
98- Mensch oder Agent — wird mit Wer, Was, Wann und Warum aufgezeichnet .
172+ - ** KI agiert als der Nutzer, nie über ihm.** Ein Agent sieht genau das,
173+ was die Person dahinter sehen darf — Berechtigungen auf Objekt-,
174+ Datensatz- und Feldebene, erzwungen in der Runtime, nicht im Prompt.
175+ - ** Standardmäßig schreibgeschützt, wenn du willst .** Binde Objekte an eine
176+ schreibgeschützte Verbindung oder einen DB-Nutzer. Analysiere die
177+ Produktion sicher; aktiviere Schreibzugriffe bewusst, Objekt für Objekt .
178+ - ** Alles auditiert.** Jeder Lese- und Schreibvorgang und jede Eskalation —
179+ ob Mensch oder Agent — wird mit Wer, Was, Wann und Warum protokolliert .
99180- ** Deine Daten bleiben in deinem Netzwerk.** ObjectOS läuft in deiner
100- Umgebung. Geschäftsdaten und Prompts verlassen deinen Perimeter nie.
181+ Umgebung. Geschäftsdaten und Prompts verlassen deine Grenze nie.
182+
183+ ## Neuaufbau vs. verbinden
184+
185+ | | Neuaufbau auf neuer Plattform | Verbinden mit ObjectOS |
186+ | ---| ---| ---|
187+ | ** Zeit bis zum ersten Nutzen** | Monate | Ein Nachmittag |
188+ | ** Risiko für das System of Record** | Hoch — Migration, Dual-Writes, Cutover | Keins — die Quell-App bleibt unberührt |
189+ | ** Wo die Daten liegen** | Verschoben | Bleiben genau, wo sie sind |
190+ | ** Modellierungsaufwand** | Jede Entität von Hand neu bauen | Agent entwirft Objekte aus dem Live-Schema |
191+ | ** Berechtigungen** | Neu gebaut und neu auditiert | Geerbt; KI folgt demselben Modell |
192+ | ** Umkehrbarkeit** | Schwer rückgängig zu machen | Datenquelle trennen — nichts hat sich geändert |
193+
194+ ## Was du am ersten Tag bekommst
195+
196+ Sobald eine Handvoll Tabellen modelliert und gebunden ist:
197+
198+ - ** Analyse in natürlicher Sprache** über Live-Datensätze, berechnet durch
199+ ObjectQL — kein veralteter Export.
200+ - ** Gesteuerte Automatisierung.** Flows und Aktionen lesen und (wo erlaubt)
201+ schreiben dieselben Daten, jeder Schritt auditiert.
202+ - ** Eine generierte API und Konsole.** REST/GraphQL-Endpunkte und
203+ Admin-Screens stammen aus denselben Metadaten — keine zusätzliche
204+ Integrationsschicht.
205+ - ** Ein Berechtigungsmodell.** Die Grenze für Menschen gilt identisch für
206+ KI-Traffic.
207+
208+ ## Ausgeliefert vs. kommend
209+
210+ Der obige Ablauf funktioniert ** heute** mit ausgelieferten Bausteinen:
211+ Datenquellen, Routing pro Objekt, fähigkeitsbewusstes ObjectQL-Pushdown und
212+ die KI-Agenten-Schicht. Die Objektmodellierung erfolgt mit einem
213+ Coding-Agenten gegen dein verbundenes Schema — genauso, wie die
214+ ` hotcrm ` -Objekte verfasst wurden.
215+
216+ Eine reichhaltigere, ** schlüsselfertige Föderation** — Schema-Import in
217+ einem Schritt, Bindung an extern besessene Schemas und eingebaute
218+ Schreib-Sicherheitsgates — ist unter
219+ [ ADR-0015] ( https://github.com/objectstack-ai/framework/blob/main/docs/adr/0015-external-datasource-federation.md )
220+ (Status: * Proposed* ) in aktiver Ausgestaltung. Wir schreiben mehr, sobald
221+ es landet. Bis dahin ist der dokumentierte Weg — verbinden, modellieren,
222+ binden, abfragen — der unterstützte.
101223
102- ## Was ausgeliefert ist vs. was kommt
224+ ## Häufige Fragen
103225
104- Der oben beschriebene Ablauf funktioniert ** heute** mit ausgelieferten
105- Bausteinen: Datasources, Routing pro Objekt, capability-bewusster
106- ObjectQL-Pushdown und die KI-Agenten-Schicht. Die Objektgenerierung erfolgt
107- mit einem Coding-Agenten gegen dein verbundenes Schema — auf dieselbe Weise,
108- wie die ` hotcrm ` -Objekte erstellt wurden.
226+ ** Muss ich jede Tabelle modellieren?** Nein. Modelliere nur die Tabellen,
227+ die KI und Automatisierung anfassen sollen. Der Rest der Datenbank wird
228+ ignoriert.
109229
110- Eine reichhaltigere, ** schlüsselfertige Föderation** — einstufiger
111- Schema-Import, Bindung an extern verwaltete Schemata und eingebaute
112- Schreibsicherheits-Gates — befindet sich in aktiver Konzeption unter
113- [ ADR-0015] ( https://github.com/objectstack-ai/framework/blob/main/docs/adr/0015-external-datasource-federation.md )
114- (Status: * Proposed* ). Wir schreiben mehr dazu, sobald es verfügbar ist. Bis
115- dahin ist der dokumentierte Weg der unterstützte.
230+ ** Schreibt das in meine Produktionsdatenbank?** Nur, wenn du es zulässt.
231+ Bind an eine schreibgeschützte Verbindung oder einen DB-Nutzer, und
232+ Schreiben ist unmöglich; aktiviere es bewusst, pro Objekt, wenn du bereit
233+ bist.
234+
235+ ** Gehen meine Daten an einen Modellanbieter?** ObjectOS läuft in deiner
236+ Umgebung, und Abfragen laufen gegen deine Datenbank. Du steuerst, welcher
237+ KI-Anbieter konfiguriert ist und was er sehen darf.
238+
239+ ** Was, wenn sich mein Schema ändert?** Lass den Coding-Agenten erneut gegen
240+ das aktualisierte Schema laufen, um die betroffenen Objekte neu zu
241+ generieren oder zu diffen — es sind nur Quelldateien in deinem Repo.
116242
117243## Probier es aus
118244
119- - [ Data Sources] ( /docs/configure/data-sources ) — der vollständige Authoring-Leitfaden
120- - [ Bestehende Systeme erweitern] ( /docs/extend-existing-systems ) — das Szenario, von Anfang bis Ende
121- - [ KI-Agenten] ( /docs/build/agents ) — deklarative Agenten über deinen Objekten
245+ - [ Datenquellen] ( /docs/configure/data-sources ) — der vollständige
246+ Autorenleitfaden
247+ - [ Bestehende Systeme erweitern] ( /docs/extend-existing-systems ) — das
248+ Szenario, von Anfang bis Ende
249+ - [ KI-Agenten] ( /docs/build/agents ) — deklarative Agenten über deinen
250+ Objekten
122251
123- Wenn du bereits eine Geschäftsdatenbank hast, bist du fast am Ziel. Verbinde
124- sie, modelliere ein paar Tabellen und stell deinen Daten eine Frage.
252+ Wenn du bereits eine Geschäftsdatenbank hast, bist du fast am Ziel.
253+ Verbinde sie, modelliere ein paar Tabellen und stell deinen Daten eine
254+ Frage.
0 commit comments