In Entwicklung· Meilenstein M1 in Arbeit

Deine Daten, in der Form, die sie schon haben.

Selbst gehostet und Open Source, für Dashboards und Analysen. Tabellen bleiben Tabellen, Dokumente bleiben Dokumente, Graphen bleiben Graphen.

Konzeptvorschau der geplanten Oberfläche, mit Beispieldaten. Kein Screenshot: Kalzit ist in Entwicklung.

Funktioniert mit

  • PostgreSQL
  • MySQL
  • MariaDB
  • SQL Server
  • SQLite
  • MongoDB
  • Neo4j
  • Memgraph
  • Prometheus
  • Elasticsearch
Antwort zeigen als

Eine Frage, drei Antworten

Was hat Kunde C-1042 bestellt?

Abfrage · SQLPostgreSQL
SELECT id, created_at, items, total
FROM orders
WHERE customer_id = 'C-1042'
ORDER BY created_at;
Ergebnis · frame
idtextcreated_attimestamptzitemsint4totalnumeric
O-772026-09-02 10:143129,90
O-842026-09-15 18:02124,00
O-902026-10-03 08:47289,50

Zeilen und typisierte Spalten

  • Spalten behalten ihre Datenbanktypen.
  • Zeitreihen und Metriken sind ebenfalls Frames, mit einem Zeitfeld.
  • Die ersten Frame-Quellen kommen mit M1.
Abfrage · MQLMongoDB
db.orders.find({ customerId: "C-1042" })

Dokument · documents

  • _id66f5a1c2e4b0…ObjectId
  • customerId"C-1042"string
  • createdAt2026-09-02T10:14:00ZDate
  • itemsArray(2)
    • 0{ 3 }
      • sku"P-20"string
      • qty1int32
      • price49.90Decimal128
    • 1{ 3 }
      • sku"P-31"string
      • qty2int32
      • price40.00Decimal128
  • shipping{ 1 }
    • address{ 1 }
      • city"Leipzig"string
Schema-Ansicht
PfadTypenIn Dokumenten
_idObjectId100 %
customerIdstring100 %
createdAtDate100 %
itemsarray 1–4100 %
items[].skustring100 %
items[].priceDecimal128 92 %double 8 %100 %
shipping.address.citystring97 %
giftNotestring3 %

Der Dokumentbaum und sein Schema

  • Verschachtelte Arrays bleiben Arrays, in die du hineinklicken kannst.
  • ObjectId, Date und Decimal128 behalten ihren Typ, statt zu Strings zu werden.
  • Die Schema-Ansicht zeigt jeden Feldpfad mit seinen Typen und dem Anteil der Dokumente, die ihn haben.
  • MongoDB kommt mit M2.
Abfrage · CypherNeo4j
MATCH p = (:Customer {id: "C-1042"})-[:ORDERED]->(:Order)
      -[:CONTAINS]->(:Product)<-[:CONTAINS]-(:Order)
      <-[:ORDERED]-(:Customer)
RETURN p LIMIT 25
Graph aus Kunden, Bestellungen und ProduktenKunde C-1042 hat O-77 bestellt, darin ist Produkt P-20. Bestellung O-63 von Kunde C-2210 enthält dasselbe Produkt. Dieser Pfad ist kräftig gezeichnet, die übrigen Knoten sind gedimmt.ORDEREDCONTAINSCONTAINSORDEREDC-1042CustomerO-77OrderP-20ProductO-63OrderC-2210CustomerO-84P-31O-90P-44C-3175

Pfad · graph

  1. CustomerC-1042
  2. ORDERED
  3. OrderO-77
  4. CONTAINS
  5. ProductP-20
  6. CONTAINS
  7. OrderO-63
  8. ORDERED
  9. CustomerC-2210

Knoten, Kanten und der Pfad dazwischen

  • Pfade kommen als Pfade zurück, Knoten für Knoten lesbar.
  • Der Rest des Graphen wird gedimmt; der Pfad behält seine Beschriftung.
  • Du erkundest den Graphen, indem du Nachbarn aufklappst, jeder Schritt rückgängig zu machen.
  • Neo4j und Memgraph kommen mit M3.

Illustration mit Beispieldaten, kein Screenshot.

01Die Idee

Nichts wird heimlich flachgeklopft.

Viele Werkzeuge machen aus jedem Ergebnis eine Tabelle. Verschachtelte Dokumente werden zu Spalten, Graphen zu einer Liste von Knoten und einer Liste von Kanten, und die Struktur, wegen der du gekommen bist, ist weg. In Kalzit behält jedes Abfrageergebnis genau eine native Form: frame, documents oder graph. Panels geben an, welche Formen sie verstehen.

02Projektionen

Umwandlungen sind Schritte, die du siehst.

Manchmal willst du aus Dokumenten doch eine Zeitreihe. Dann legst du in der Abfrage einen Schritt „Projektion“ an, zum Beispiel $.metrics.cpu über $.ts. Der Schritt steht in der Abfrage, du kannst ihn rückgängig machen, und die ursprünglichen Dokumente bleiben verfügbar. Das Backend wandelt nie von selbst um.

  1. documentsorders
  2. Projektion$.metrics.cpu über $.ts
  3. frameZeitreihe
  • Sichtbar in der Abfrage
  • Rückgängig zu machen
  • Original bleibt verfügbar

Auch Transformationen folgen der Form: Feld auswählen, Array entfalten oder nach Feldpfad gruppieren für Dokumente; Nachbarschaft erweitern, Subgraph filtern oder Knoten zusammenfassen für Graphen.

03Datenquellen

Übliche Quellen, jede in ihrer eigenen Form.

Relationale und Zeitreihen-Quellen antworten in Frames, MongoDB in Dokumenten, Neo4j und Memgraph in Graphen. Jede Quelle ist standardmäßig nur lesend: Der Server lehnt schreibende Abfragen ab, und Abfragen laufen immer über den Server, nie direkt vom Browser zur Datenbank.

Noch ist keine Datenquelle verfügbar. Die ersten kommen mit M1.

Geplante Datenquellen nach Meilenstein, aus dem Projektplan
MeilensteinQuelleForm
M1PostgreSQL, TimescaleDBframe
MySQL, MariaDBframe
Microsoft SQL Serverframe
SQLiteframe
Prometheus, Mimir, Thanos, VictoriaMetricsframe
M2MongoDBdocuments
Elasticsearch, OpenSearchdocumentsframe
CSV, JSON, HTTP JSONframedocuments
M3Neo4j, Memgraphgraph
M5InfluxDBframe
Lokiframe
ClickHouseframe
M6Graphiteframe
Redisframedocuments
Oracleframe
Tempo, Jaegergraph

04Organisationen, Teams, Rollen

Über Zugriff entscheidet der Server, jedes Mal.

Eine Installation trägt mehrere Organisationen. Jede hat ihre eigenen Teams, Ordner, Dashboards und Datenquellen.

Rollen auf zwei Ebenen
Server-Admins betreiben die Installation. In einer Organisation sind Eigentümer, Admin, Bearbeiter und Betrachter feste Rollen, und du kannst eigene Rollen aus feingranularen Rechten bauen.
Kein Recht ohne Grundlage
Effektive Rechte sind die Vereinigung aus Rolle, Team-Rollen und direkten Freigaben. Ein Dialog „Warum darf ich das?“ zeigt, woher jedes Recht kommt. Standard ist „kein Zugriff“, und der letzte Eigentümer und der letzte Server-Admin lassen sich nicht entfernen.
Bei jeder Anfrage geprüft
Die Rechteprüfung läuft auf dem Server, für jede Anfrage und jede Ressource, nie nur in der Oberfläche.
Server-Einstellungen in Schichten
Umgebungsvariablen gehen vor der Konfigurationsdatei, die vor Einstellungen aus der Oberfläche geht. Netzwerk und TLS stehen nur in Datei oder Umgebung, damit dich ein Tippfehler in der Oberfläche nicht aussperrt.
Anmeldung
Lokale Konten mit Argon2id gehören zu M0. OIDC, LDAP und Active Directory sowie Zwei-Faktor-Anmeldung mit TOTP und Passkeys folgen mit M5.

05Windows und Linux

Ein Binary, zwei gleichwertige Plattformen.

Kalzit ist ein einzelnes Rust-Binary mit eingebetteter Weboberfläche. Windows und Linux sind gleichberechtigt: Die CI baut und testet alles auf beiden. Geplante Release-Ziele sind Windows x64, Linux x64 und Linux arm64.

Windows

  • Konfiguration in %ProgramData%\Kalzit\kalzit.toml
  • Windows-Dienst und MSI-Installer mit M5
  • SQL Server mit M1, Anmeldung über Active Directory mit M5

Linux

  • Konfiguration in /etc/kalzit/kalzit.toml
  • deb- und rpm-Pakete mit systemd-Unit mit M5
  • Docker-Image mit M5

HTTPS eingebaut

TLS über rustls: derselbe Code auf beiden Systemen, kein OpenSSL zu installieren. Erneuerte Zertifikatsdateien werden ohne Neustart übernommen. ACME mit Let’s Encrypt folgt mit M5.

Kein Datenbankserver zum Start

Kalzit speichert seine eigenen Daten standardmäßig in SQLite. Größere Installationen nutzen PostgreSQL.

06Open Source

AGPL-3.0, selbst gehostet, keine Telemetrie.

Der vollständige Quellcode ist öffentlich, unter der GNU Affero General Public License 3.0. Kalzit läuft nur auf deinen eigenen Servern; eine Cloud-Variante gibt es nicht. Die Suche nach Updates ist aus, bis du sie einschaltest, und Telemetrie gibt es keine.

  • Von Grund auf neu geschrieben, als Clean-Room-Implementierung.
  • Eingebaute Datenquellen nutzen dieselbe Plugin-Schnittstelle wie externe Plugins (M4).
  • Plugins sind mit Ed25519 signiert; unsignierte Plugins brauchen die Freigabe eines Admins.
  • Plugin-SDK zuerst in Rust, danach in TypeScript und Go.

07Stand

Früh dran, und ehrlich damit.

Kalzit entsteht öffentlich, Meilenstein für Meilenstein. Jeder Meilenstein endet mit grüner CI auf Windows und Linux und Doku zu jeder neuen Funktion.

  1. M0FundamentAbgeschlossen
  2. M1KernIn Arbeit
  3. M2MongoDB nativGeplant
  4. M3Graph nativGeplant
  5. M4PluginsGeplant
  6. M5BetriebGeplant
  7. M6AusbauGeplant

Ganze Roadmap

08Der Name

Warum Kalzit

Kalzit ist das Mineral, das im Englischen „calcite“ heißt. Seine klarste Form, der Isländische Doppelspat, teilt jeden Lichtstrahl in zwei, sodass alles dahinter doppelt erscheint. Vielleicht haben die Wikinger ihn als Sonnenstein genutzt, um die Sonne hinter Wolken zu finden. Genau das soll Kalzit mit Daten tun: verborgene Struktur sichtbar machen.

Das Wort Kalzit, durch einen Kalzitkristall gesehenHinter dem Kristall erscheint das Wort zweimal, leicht versetzt, so wie es die Doppelbrechung zeigt.KalzitKalzitKalzit

Verfolge die Arbeit von Anfang an.

Beobachte das Repository für Releases, lies den Plan oder eröffne ein Issue zu den Daten, die du erkunden willst.