Wo deine Daten liegen

Der genaue Ordner, in den Pulsaria schreibt, was in welcher Datei steht, wie du ihn verlegst und wovor die App dich schützt.

Pulsaria hat keine Datenbank und keinen Server. Alles, was du erfasst, liegt als lesbare JSON-Datei in einem Ordner auf deinem Mac, geschrieben mit zwei Leerzeichen Einrückung, damit du sie in jedem Texteditor öffnen kannst. Diese Seite sagt dir genau, welcher Ordner das ist, was darin liegt und was passiert, wenn du ihn verlegst.

Der Standard-Ordner

Solange du nichts änderst, schreibt Pulsaria in seinen eigenen Application-Support-Ordner:

~/Library/Application Support/com.onepixelahead.pulsaria/pulsaria/

Im Finder kommst du über Gehe zu → Gehe zum Ordner… dorthin, indem du den Pfad einfügst.

Welcher Ordner gerade benutzt wird, siehst du unter App-Einstellungen in der Karte Datenverzeichnis. Das Feld Aktueller Pfad zeigt den Ordner. Ist es leer, steht dort der Platzhalter Standard (AppData) — das ist genau der Pfad oben. Die Karte gibt es nur in der Desktop-App.

Was im Ordner liegt

Datei oder OrdnerInhalt
projects.jsonAlle Projekte: Name, Beschreibung, Status, Anlagedatum
kpi-definitions.jsonAlle KPI-Definitionen: Name, Einheit, Ziel, Richtung, Zeitraum, Metrik-Art, Datenquelle samt Konfiguration, optionaler Cron-Zeitplan, Freigabe-Stempel
entries/Eine Datei pro erfasstem Messwert — siehe unten
alerts.jsonStatuswechsel-Warnungen, neueste zuerst, gedeckelt auf die letzten 100
fetch-log.jsonDas Fetch-Log, neueste zuerst, ein Ringpuffer mit maximal 500 Einträgen
reminder-settings.jsonDie tägliche Erinnerung: an/aus, Uhrzeit, „nur wenn ein Wert fehlt“. Fehlt die Datei, nimmt Pulsaria aus, 18:00 und nur-wenn-fehlt an

Diese sechs Einträge sind das, was die Einstellung Datenverzeichnis steuert. Sie ziehen mit um, wenn du Pulsaria auf einen anderen Ordner zeigst.

Was zurückbleibt

Das Folgende bleibt im Application-Support-Ordner liegen, egal welches Datenverzeichnis du einstellst:

OrtInhalt
…/com.onepixelahead.pulsaria/pulsaria/config.jsonAlle App-Einstellungen: das Datenverzeichnis selbst, Design, Sprache, Einwilligung zum Crash-Reporting, weggeklickte Hinweise, Onboarding- und Tour-Flags, eingeklappte Dashboard-Gruppen sowie Einstellungen und Status des täglichen Auto-Exports
…/com.onepixelahead.pulsaria/pulsaria/connections.jsonDeine Connector-Verbindungen — welcher Connector, Name der Verbindung, Parameter und der Name des Schlüsselbund-Eintrags mit dem Geheimnis
…/com.onepixelahead.pulsaria/pulsaria/license.jsonDein Lizenzschlüssel, die Aktivierung für diesen Mac und das Ergebnis der letzten Prüfung
…/com.onepixelahead.pulsaria/pulsaria/daily-export/Standard-Ziel des täglichen Auto-Exports
~/.pulsaria-trialEine einzeilige versteckte Datei, die den Start der Testphase festhält

Connector-Zugangsdaten liegen in überhaupt keiner Datei. API-Keys, Tokens und Service-Account-JSONs gehen in den macOS-Schlüsselbund, unter dem Dienst com.onepixelahead.pulsaria, mit einem Eintrag pro Verbindung namens connection.<verbindungs-id>. Mehr dazu unter Datenschutz: Was den Mac verlässt.

Nichts, was Pulsaria schreibt, ist verschlüsselt. Die JSON-Dateien sind Klartext und für alles lesbar, was unter deinem macOS-Benutzer läuft. Die einzige Ausnahme sind die Connector-Geheimnisse, die der Schlüsselbund schützt.

Eine Datei pro Messwert

Jeder Wert, den du erfasst — von Hand getippt oder automatisch abgerufen — wird zu einer eigenen kleinen Datei in entries/:

2026-07-25_kR7fQ2mXa1_1784970824812_3.json

Die Teile sind das lokale Datum, die KPI-ID, die Epoch-Millisekunden des Schreibvorgangs und ein Zähler, der zwei Schreibvorgänge in derselben Millisekunde auseinanderhält. Jedes Zeichen der KPI-ID, das nicht A–Z, a–z, 0–9, _ oder - ist, wird zu _. Der Inhalt sind exakt drei Felder:

{
  "kpiId": "kR7fQ2mXa1",
  "value": 12400,
  "createdAt": "2026-07-25T09:13:44.812Z"
}

Dateien kommen nur hinzu, sie werden nie überschrieben. Genau darum geht es bei diesem Aufbau: Korrigierst du einen KPI an einem Tag, an dem schon ein Wert steht, wird die alte Datei nicht ersetzt, sondern eine neue daneben gelegt. Zwei Macs, die am selben Tag in einen geteilten Ordner schreiben, erzeugen zwei verschiedene Dateien statt sich gegenseitig zu überschreiben.

Was du in der App siehst, folgt daraus:

  • Dashboard und Verlauf nehmen für einen KPI an einem Tag den Eintrag mit dem jüngsten createdAt.
  • Die früheren Dateien bleiben auf der Platte. Sie tauchen in der Liste der heutigen Einträge auf der KPI-Detailseite und in jedem Export auf.
  • Löschst du den Wert eines Tages oder einen ganzen KPI, werden die passenden Eintragsdateien wirklich gelöscht.

Eins solltest du wissen, bevor du alte Zahlen suchst: Diagramme und Verlauf entstehen aus den 90 jüngsten Datumstagen, an denen überhaupt ein Eintrag existiert, über alle KPIs zusammengezählt. Alles Ältere liegt weiter auf der Platte und steckt in jedem Export — es wird nur nicht gezeichnet.

Wie Werte dort landen, steht unter Werte erfassen.

Migration vom alten Tages-Format

Ältere Installationen speicherten eine Datei pro Tag, 2026-07-25.json, mit einem Array aller Einträge dieses Tages. Pulsaria wandelt dieses Format beim ersten Lesen der Einträge nach dem Start um, einmal pro Sitzung: Jeder Eintrag aus dem Array wird zu einer eigenen Datei namens <datum>_<kpiId>_<epoch-ms>.json (ohne Zähler am Ende — daran erkennst du migrierte Dateien), danach wird die alte Tagesdatei entfernt.

Eine alte Datei, die sich nicht lesen oder nicht parsen lässt, bleibt genau dort liegen und wird übersprungen. Sie wird nie in der Annahme gelöscht, sie sei leer gewesen. Die Migration insgesamt ist ein Best-Effort-Vorgang: Scheitert sie, läuft die App mit dem weiter, was sie lesen konnte.

Absturzsichere Schreibvorgänge und Quarantäne für kaputte Dateien

Schreibvorgänge auf die Dateien aus der ersten Tabelle laufen durch zwei Sicherheitsnetze.

Atomares Schreiben. Der neue Inhalt geht zuerst in eine eindeutig benannte temporäre Datei — <datei>.<epoch-ms>.<zähler>.tmp —, die dann über die Zieldatei umbenannt wird. Ein Absturz oder Stromausfall zwischen beiden Schritten lässt die vorherige Datei vollständig intakt, statt eine halb geschriebene zu hinterlassen. Scheitert der Schreibvorgang, wird die temporäre Datei wieder entfernt.

Quarantäne. Vor dem Überschreiben prüft Pulsaria, ob sich die vorhandene Datei als JSON parsen lässt. Wenn nicht, werden die beschädigten Bytes zuerst zur Seite gelegt:

projects.json.corrupt-2026-07-25T09-13-44-812Z

Die App arbeitet währenddessen mit leeren Daten für genau diese eine Datei weiter — eine kaputte alerts.json hindert dich also nicht am Arbeiten. Die Quarantäne-Kopie liegt im Finder neben dem Original: öffnen, retten, was zu retten ist, und zurückbenennen, falls du sie reparieren kannst.

Die Sicherheitsnetze gelten für projects.json, kpi-definitions.json, alerts.json, fetch-log.json, reminder-settings.json und die Eintragsdateien. Sie gelten nicht für config.json, connections.json und license.json: Diese werden schlicht überschrieben, und eine connections.json, die sich nicht parsen lässt, wird als „keine Verbindungen“ gelesen und danach ohne Kopie überschrieben. Passiert das, sind die Connector-Verbindungen weg und müssen neu eingerichtet werden. Der Schutz dagegen sind regelmäßige Exporte — siehe Backup, Export & Umzug.

Den Datenordner verlegen

  1. Öffne App-Einstellungen und geh zur Karte Datenverzeichnis.
  2. Klick den Ordner-Button rechts neben Aktueller Pfad und wähl den Ordner im macOS-Dialog mit dem Titel Datenverzeichnis wählen.
  3. Klick Speichern. Der Button zeigt kurz ein Häkchen und Gespeichert, und die App liest ihre Daten sofort vom neuen Ort.

Standard verwenden leert das Feld; nach Speichern bist du zurück im eingebauten Application-Support-Ordner. Der neue Ordner und sein Unterordner entries/ werden beim ersten Schreiben angelegt.

Nimm den Ordner-Dialog, nicht das Textfeld

Das Feld Aktueller Pfad ist beschreibbar, und einen Pfad hineinzutippen funktioniert nicht. Die eingebauten Dateisystem-Rechte von Pulsaria decken nur den eigenen Application-Support-Ordner ab. Zugriff auf irgendetwas anderes wird zur Laufzeit vom macOS-Ordner-Dialog vergeben, und zwar nur für den Ordner, den du dort tatsächlich ausgewählt hast — diese Freigabe bleibt dann über Neustarts hinweg erhalten. Ein von Hand getippter oder eingefügter Pfad bekommt keine solche Freigabe: Schreibvorgänge scheitern, und die App wirkt leer, obwohl deine alten Daten am alten Ort unversehrt liegen.

Hast du schon etwas getippt und gespeichert, öffne die Karte erneut, klick den Ordner-Button, wähl denselben Ordner richtig aus und speichere noch einmal.

Verlegen verschiebt nichts

Ein neues Datenverzeichnis zu speichern richtet die App neu aus, mehr nicht. Pulsaria kopiert deine Dateien nicht, verschiebt sie nicht, führt sie nicht zusammen und bietet das auch nicht an. Direkt nach dem Wechsel ist der neue Ordner leer und das Dashboard sieht aus wie eine frische Installation; der alte Ordner bleibt unangetastet.

Um deine Daten mitzunehmen, hast du zwei Wege:

  • Pulsaria beenden, die sechs Einträge im Finder vom alten in den neuen Ordner kopieren, dann die App starten und auf den neuen Ordner zeigen.
  • Oder vor dem Wechsel Als JSON exportieren und danach JSON importieren — beschrieben in Backup, Export & Umzug.

In beiden Fällen bleiben config.json, connections.json und license.json, wo sie sind. Deine Einstellungen und Connector-Verbindungen sind vom Umzug nicht betroffen — kommen aber auch nicht mit.

Zum Button „iCloud verwenden“

Die Karte hat einen Button iCloud verwenden. Er füllt das Textfeld Aktueller Pfad mit einem Pfadvorschlag in einen privaten iCloud-Container, sonst nichts. Er öffnet keinen Ordner-Dialog, vergibt also keinen Dateisystem-Zugriff — womit er genau in die eben beschriebene Kategorie fällt: ein Pfad im Textfeld, in den Pulsaria nicht schreiben darf.

Nimm für iCloud den Ordner-Button, nicht die Abkürzung iCloud verwenden. Wähl einen normalen Ordner unter ~/Library/Mobile Documents/com~apple~CloudDocs/ — zum Beispiel einen, den du im Finder unter iCloud Drive angelegt hast. Dieser Weg läuft über den Dialog, die Freigabe ist also echt und übersteht Neustarts.

Einen Ordner auf zwei Macs teilen

Zwei Macs auf denselben synchronisierten Ordner zeigen zu lassen funktioniert — in Grenzen, die du kennen solltest, bevor du dich darauf verlässt.

Was hält. Messwerte werden nur angehängt, eine Datei pro Eintrag. Beide Rechner können also am selben Tag Werte erfassen, ohne sich zu überschreiben. Löschungen von Dateien wandern wie jede andere Änderung mit.

Was nicht hält. projects.json, kpi-definitions.json, alerts.json und fetch-log.json sind Einzeldateien: Der letzte Schreiber gewinnt. Benennst du auf einem Mac einen KPI um, während der andere ebenfalls schreibt, ist eine der beiden Änderungen weg. Pulsaria hat keine Merge-Logik und ignoriert Konfliktkopien — eine Datei, die iCloud zu projects 2.json umbenennt, wird schlicht nicht gelesen.

Keine Live-Aktualisierung. Es gibt keinen File-Watcher. Pulsaria liest von der Platte, wenn ein Bildschirm geöffnet wird und wenn sich innerhalb der App Daten ändern — nicht, wenn ein anderer Rechner in den Ordner schreibt. Wechsel den Bildschirm oder starte die App neu, um Änderungen von außen zu sehen; auch der Button Aktualisieren im Dashboard-Header führt zu einem erneuten Lesen, auch wenn seine eigentliche Aufgabe das Abrufen der Auto-KPIs ist. Es gibt keine Lock-Datei, keine Sync-Anzeige und nirgends in der App eine Zeile „zuletzt synchronisiert“.

Gar nicht geteilt. Einstellungen, Connector-Verbindungen und die Lizenz bleiben im Application-Support-Ordner des jeweiligen Macs. Connector-Zugangsdaten liegen im Schlüsselbund des jeweiligen Macs, eine auf einem Rechner eingerichtete Verbindung braucht ihren Key auf dem anderen also erneut.

Wenn es dir vor allem darum geht, deine Zahlen auf einem zweiten Mac zu haben, und nicht um dauerhafte Zwei-Wege-Synchronisation, ist Exportieren und Importieren der berechenbarere Weg.

Was du sichern solltest

Kurzfassung: Sichere den kompletten Datenordner und exportiere regelmäßig.

  • Time Machine oder ein beliebiges Backup-Tool auf ~/Library/Application Support/com.onepixelahead.pulsaria/ erfasst alles, was Pulsaria schreibt, inklusive config.json, connections.json und license.json. Hast du das Datenverzeichnis verlegt, sichere diesen Ordner zusätzlich.
  • Als JSON exportieren unter App-Einstellungen → Daten exportieren gibt dir eine einzelne wiederherstellbare Datei. Aktivier im selben Bildschirm den Täglichen Auto-Export, dann wird sie dir jeden Tag geschrieben.
  • Der Export ist nicht lizenzpflichtig. Als JSON exportieren und Als CSV exportieren bleiben auch nach Ablauf der Testphase anklickbar — du kommst also immer an deine Daten.

Was ein Export nicht enthält: Connector-Zugangsdaten (nur im Schlüsselbund), alles aus config.json, die Erinnerungs-Einstellungen und die Lizenzdatei. Details in Backup, Export & Umzug.

Wie es weitergeht

Nicht gefunden?

Schreib uns — jede Mail liest ein Mensch, meistens der, der das Feature gebaut hat.

admin@one-pixel-ahead.com