Latents eines Versprechen: Ohne Beleg gilt nichts als sicher, und ohne Weg zurück wird nichts gelöscht.
Jedes Objekt, das Latent erfasst, trägt eines von drei Badges dafür, was beim Löschen passiert:
Drei Buchstaben, drei Bedeutungen — und sonst nichts. Es gibt keinen vierten Zustand auf dem Bildschirm. Ein Cache, von dem der Katalog glaubt, dass er zurückkommt, den aber für deinen Ordner niemand bewiesen hat, ist nicht „wahrscheinlich in Ordnung“: Er ist I, bernsteinfarben, mit Schloss — bis eine Messung oder die Dokumentation des Anbieters selbst ein R daraus macht. Der Buchstabe sagt, was passiert, wenn die Zeile geht; die Farbe wiederholt es — grün heißt, Latent darf aus eigener Evidenz handeln, bernsteinfarben heißt, die Entscheidung gehört dir, grau heißt, sie gehört niemandem.
Wo ein Buchstabe steht. Buchstaben bewerten das, was mit einer Entfernung geht — einen Cache, einen Datenordner, ein Paket, das Bundle einer App, das unter der App gelistet ist. Die Einheit, die du zum Entfernen wählst (eine App-Zeile in Apps), trägt keinen Buchstaben; ihre Teile tragen ihn. Alles, was nur ein Zustand ist — in Benutzung, von einer Abhängigkeit gehalten, in der Quarantäne wartend — steht in Grau neben dem Buchstaben, nie als vierter Buchstabe.
„Gefahrlos löschbar“ wird verdient, nie angenommen. Latent nutzt vier Arten von Belegen, die stärksten zuerst:
| Beweis | Was er bedeutet | Beispiele |
|---|---|---|
| Registry-Identität | Zum Löschzeitpunkt antwortet das exakte Artefakt noch auf seiner Registry — verglichen werden Digests, Revisionen und Dateinamen, nicht nur Namen. | Ollama-Modelle, Hugging-Face-Repos, LM-Studio-Modelle |
| Verzeichnete Herkunft | Der eigene Index des Tools hat verzeichnet, woher jeder Eintrag stammt; Bulk-Löschen besteht nur, wenn alles auf eine öffentliche Quelle zurückführt, die es noch ausliefert. | npm-Cache, Gradle-Module |
| Vendor-Vertrag | Der Anbieter liefert einen eigenen Purge-Befehl mit — das Tool selbst erklärt den Cache für entbehrlich. Latent nutzt trotzdem den Papierkorb, das Widerrufen bleibt dir. | pip (pip cache purge), uv (uv cache clean) |
| Vendor-Dokumentation | Die eigene Dokumentation oder der Quellcode des Anbieters erklärt, dass das Tool dies bei der nächsten Nutzung neu lädt oder neu baut — nachgelesen auf der Seite des Anbieters, nie in einem Blog oder aus einer Vermutung. Eine manuelle Neuinstallation zählt nicht. | Core MLs Cache kompilierter Modelle (Apple), pips gebaute Wheels, Adobes Media-Cache, Android-SDK-Pakete, die Gradle selbst lädt |
| Beobachtetes Experiment | Der Ordner wird beiseitegelegt, die App neu gestartet, und Latent beobachtet, ob er zurückkommt — dann legt es das Original Byte für Byte zurück. Die Quarantäne tut dasselbe über sieben Tage für alles, was du entsperrst. Jede Beobachtung wird zu verzeichnetem Beleg mit Datum. | Codex' Komponenten-Caches, LM Studios mitgelieferte Tools, Claude Desktops Agent-Runtime; alles, was du entsperrst |
Manche Ordner werden stückweise statt als Ganzes bewertet: Xcodes Gerätesymbole sind R für einen Build, den ein noch mit diesem Mac gekoppeltes Gerät ausführt, und I für den Rest; ein Keras-Gewichte-Ordner ist nur R, solange jede Datei darin ein Keras-Applications-Gewicht ist.
Mischt ein Store beweisbaren und unbeweisbaren Inhalt, löscht Latent nur den bewiesenen Teil und sagt dir genau, was behalten wurde und warum. Ein eigenes Fine-Tune neben geladenen Modellen bleibt liegen, immer.
Jede I-Zeile trägt ein Schloss. Es zu öffnen ist ein bewusster Akt der Zustimmung: Die Zeile wird wählbar, die Löschung wird im Protokoll als erzwungen markiert, und das Bestätigungsblatt hebt sie rot hervor. Die Zustimmung ist begrenzt — ein neuer Scan schließt jedes offene Schloss. Latent öffnet nie ein Schloss für dich, und verbundene KI-Assistenten können gar keins öffnen. P-Zeilen haben kein Schloss zum Öffnen: Latent bietet sie gar nicht erst an.
Weil sie alles zählen, was wie ein Cache aussieht. Latents Zahl ist mit Absicht kleiner: Jedes Byte darin trägt einen Beleg — eine Registry-Antwort, eine verzeichnete Herkunft, einen Vendor-Vertrag oder eine beobachtete Neuerzeugung. Die Bytes ohne Beleg werden trotzdem angezeigt; über sie entscheidest du — mit dem Schloss in deiner Hand.
Der Tab „Latent“ ist die Ein-Klick-Aktion: Das Logo selbst ist der Button, ein Fortschrittsring legt sich darum, solange es läuft, und am Ende steht der freigegebene Gesamtwert. Was gelöscht wird, nimmt zwei Hürden, nicht eine: Die Wiederherstellung muss bereits belegt sein, und das Objekt muss von der Sorte sein, deren Verlust du nicht einmal bemerken würdest — Paket-Caches, deren Anbieter einen eigenen Purge-Befehl mitliefert, Browser-HTTP-Caches, Thumbnail-Stores. Alles, was du dir neu verdienen müsstest (geladene Modelle, Toolchains, selbst installierte Plug-ins), bleibt außen vor und wartet in Space auf einen bewussten Klick. Es ist absichtlich dieselbe Allowlist, auf die ein verbundener KI-Assistent beschränkt ist — ein Klick reicht also nie weiter, als ein Assistent darf.
Optimieren fasst nie ungeprüfte Zeilen, deine eigenen Dateien oder geschützte Pfade an; es öffnet nie ein Schloss für dich; es deinstalliert keine Apps oder Pakete, entlädt keine Modelle und leert nicht den Papierkorb. Halten laufende Apps Ziele offen, fragt Optimieren zuerst — eine Checkliste der blockierenden Apps; jede wird höflich beendet (die eigenen Sichern-Dialoge der App erscheinen), aber nur, wenn du sie angehakt lässt; wählst du eine ab, werden ihre Dateien einfach übersprungen. Alles, was sich bewegt, wandert unter einem einzigen Undo-Manifest in den Papierkorb, und die Guards laufen im Moment der Löschung erneut. Das Bestätigungsblatt listet auch, was bewusst unangetastet bleibt — die Zahl, die du siehst, ist ein Boden, keine Angeberei.
Space ist eine Liste von Eigentümern — Xcode, Homebrew, Hugging Face, Chrome und so
weiter — jeder mit einem Balken, gefärbt nach dem, was er hält: grün für bewiesenes R,
bernsteinfarben für I. Klappst du einen Eigentümer auf, kommen seine Zeilen zuerst als R,
dann als I, innerhalb jeder Gruppe die größten zuerst. Jede Zeile zeigt ihren Buchstaben,
ihren Pfad (das Home als ~, der volle Pfad im Hover) und ein ↗, das
sie im Finder zeigt. Die Kopfzeile des Eigentümers trägt denselben ☐ R-Chip wie
der Kopf der Liste — er wählt die bewiesenen Zeilen dieses Eigentümers aus, und sonst
nichts — und einen Button N gesperrte darunter entsperren…, der jedes Schloss
darunter in einem bewussten Schritt öffnet. Unter den Eigentümern kommen deine eigenen
Ordner — Dokumente, Downloads, Fotos — gelistet, nie vorausgewählt.
Über Caches kann Latent Beweise führen; der Platz, der wirklich dir gehört, braucht einen anderen Vertrag. Unter den Tool-Eigentümern listet Space sechs Arten deiner eigenen Kandidaten, unter einer Trennlinie, die genau das sagt, und für jede gilt dieselbe Regel: gelistet, nie vorausgewählt, nie von Optimieren oder einem Assistenten angefasst.
.dmg/.pkg,
deren Zweck erfüllt ist, in Downloads und auf dem Schreibtisch) und liegen
gebliebene Teil-Downloads.node_modules, Rust-target,
build/dist, virtuelle Umgebungen in deinen Projektordnern.
Beansprucht nur neben ihrem Projektmarker (package.json,
Cargo.toml, …), und ein Virtualenv ohne Requirements-Datei
bleibt gesperrt — die Paketliste stürbe mit ihm. Sie tragen R, aber ein
Rebuild kostet Zeit — deshalb landen sie nie in Optimieren.Apps hat acht Quellen, jede ein Tab: Mac-Apps, Homebrew, npm -g, Python (pip), Conda, Docker · Simulatoren, .pkg-Quittungen und Überbleibsel. Jede Zeile, die für etwas Entfernbares steht, trägt R, I oder P wie eine Space-Zeile; die App-Zeile selbst nicht — sie ist die Einheit, die du wählst, und ihre Teile darunter sind das, was bewertet wird. Das Rad links zeigt die Apps nach Größe, und der Fußbalken darunter sagt, was sie alle zusammen halten: die Bundles selbst, dann das, was sie hinterlassen, nach Buchstabe.
Klick auf eine App zeigt jede Datei, die ihrer Bundle-ID gehört — Bundle, Caches, Einstellungen, Container, Launch-Agents — R zuerst, dann I, die größten zuerst. Das Bundle selbst ist eine I-Zeile (die App zurückzubekommen ist eine Neuinstallation, und die liegt bei dir). Ordner, die Space bereits als Stores führt, werden zu einer Zeile Space-Stores: mit den Store-Namen zusammengefasst, ein Haken für alle. Latent hakt nur vor, was sich mit Sicherheit zuordnen lässt; zwei Arten von Zeilen werden nie vorgehakt:
Hakst du die Box der App selbst an, wird alles darunter ausgewählt — nach einer Rückfrage, falls etwas davon deine Daten enthält; die Antwort wird für die Sitzung gemerkt. Eine Deinstallation ist ein Manifest: Ein Widerrufen stellt das Ganze wieder her. Verlangt macOS Admin-Rechte für das Bundle, übergibt Latent die Aufgabe an den Finder — du siehst den üblichen Anmeldedialog. .pkg-Quittungen listet Installer-Überbleibsel an Admin-eigenen Orten und löscht dort nichts: Es zeigt, was übrig ist, führt den Deinstaller des Anbieters aus, wenn die Quittung einen nennt, und zeigt sonst die Dateien, damit du sie im Finder entfernst. Überbleibsel listet Daten, deren App weg ist — alles I, von dir angehakt.
Docker hält Images, Container, Volumes und Build-Cache in einer
undurchsichtigen VM-Disk — ein Löschen auf Dateiebene wäre ein Werksreset. Latent
listet diese Disk als deine Daten und wählt sie nie voraus. Was die Docker-Ansicht
stattdessen anbietet, ist Dockers eigenes Entfernen einzelner Objekte: ein Image
oder den Build-Cache. Dieses Entfernen ist unumkehrbar — es landet nicht im
Papierkorb und es gibt kein Widerrufen — deshalb sagt das Bestätigungsblatt genau
das in diesen Worten, und Latent schreibt den Eintrag, bevor der Befehl
läuft: was ging, wie groß es war und die exakte
docker pull-Zeile, die es zurückholt. Images, die ein Container
benutzt, werden verweigert, und Volumes werden nie gelistet — ein Volume ist
irgendjemandes Datenbank.
iOS-Simulator-Runtimes funktionieren genauso und aus demselben Grund: Eine
Runtime ist ein signiertes Apple-Disk-Image, live gemountet und in Apples
eigener Registry geführt — nur simctl kann sie entfernen. Gleicher Vertrag —
das Blatt sagt, dass es sich nicht widerrufen lässt, der Eintrag bewahrt
xcodebuild -downloadPlatform iOS, eine Runtime mit gebootetem
Simulator wird verweigert, und die, die mit Xcode kommt, wird nie angeboten. Die
Zeilen sprechen dieselben drei Buchstaben wie überall sonst: Eine Runtime, die Apple
erneut laden kann, ist R, die, die Apple als nicht löschbar markiert, ist P, ein Image
mit Registry dahinter ist R und ein verwaistes Layer ist I. „In Benutzung“ ist ein
Zustand, in Grau neben dem Buchstaben, und der Button wartet, bis der Simulator oder
Container weg ist.
Vier der Quellen verwalten, was brew, npm -g,
pip --user und conda installiert haben — das Zeug, das sich
über Jahre still ansammelt. Die Symlinks eines Kegs und die verstreuten Dateien eines
Wheels machten einen Papierkorb-Vorgang zur Lüge — Entfernen läuft deshalb über die
eigene Deinstallation des Anbieters, und das Undo-Manifest verzeichnet stattdessen den
exakten Befehl zum Neuinstallieren. Dieselbe Beweisregel gilt: Bevor etwas entfernt
wird, prüft Latent, dass die Registry (formulae.brew.sh / npm / PyPI) diesen Namen und
diese Version noch ausliefert — keine Antwort, kein Entfernen. Jede Paket-Zeile trägt
einen Buchstaben: R, wenn der Manager es neu installieren kann; R, aber gehalten, wenn
ein anderes Paket davon abhängt (die Abhängigen werden genannt, und ein Klick auf eines
führt dich hin); I, wenn niemand es beweisen konnte oder du es selbst gepinnt hast; P,
wenn es der Körper des Managers selbst ist — pip und setuptools, node und npm, die
Conda-Installation, alles außerhalb deines Home oder im Besitz eines anderen Kontos.
Eine Python-User-Site, deren Interpreter weg ist (das klassische
~/Library/Python/3.x-Überbleibsel), wird als ein Papierkorb-Vorgang
für den ganzen Ordner angeboten, mit normalem Widerrufen.
Keine Purge-Buttons, keine Gesundheits-Scores — macOS komprimiert und lagert
untätigen Speicher ohnehin aus, „RAM freimachen“ heißt also meist: fürs Zurücklesen
bezahlen. Real ist eine vergessene App, die Gigabytes hält — die Karte „App-Speicher“
listet deine eigenen Apps nach tatsächlichem Fußabdruck, mit einem Beenden-Button,
der exakt Cmd-Q ist: Die App zeigt ihren eigenen Sichern-Dialog, und nichts wird je
zwangsbeendet. Systemprozesse werden nie gelistet. Der Tab zeigt außerdem, was der
Unified Memory tut und welche Modell-Daemons (Ollama, LM Studio, llama.cpp, ComfyUI …)
Gewichte im Speicher halten. Jeder Button führt den eigenen Befehl des
Anbieters aus — ollama stop,
lms unload --all, ComfyUIs /free, das Router-Unload von llama.cpp —
Modelle laden bei der nächsten Nutzung einfach neu. Latent zwangsbeendet nie etwas. Das
Rad zeigt nur deine Apps; der Anteil des Systems, Swap und Kompression sitzen in den
kleinen Ringen darunter. Die Live-Diagramme hier und in der Übersicht beginnen mit dem
Messen, sobald Latent startet — wer zum Tab wechselt, sieht also Verlauf, keinen leeren
Graphen.
Einigen Löschungen wird statt des Papierkorbs ein sichererer Weg angeboten — eine 7-Tage-Quarantäne — aber nur dort, wo der Verlust undurchsichtig oder schwer umkehrbar wäre: geschützte Objekte und unlesbare „deine Daten“-Stores. Alles andere (ungeprüfte Caches, deine eigenen gelisteten Dateien) wandert direkt in den Papierkorb, wo die Wiederherstellungs-Zeile das Risiko bereits benennt. Es ist eine Empfehlung, nie ein Zwang. Während des Fensters ist die Wiederherstellung ein Klick im Tab „Wiederherstellung“. Nach Ablauf wandert das Objekt weiter in den Papierkorb — und Latent protokolliert, ob das zugehörige Tool den Pfad neu erzeugt hat, und baut so den Beleg auf, den die Aussage nie hatte. Lieber der direkte Weg? Wähle im Bestätigungsblatt „Direkt in den Papierkorb“ — deine Entscheidung gewinnt.
Alles, was zurückkommen kann, steht in einer sortierbaren Tabelle, mit dem Datum der Entfernung:
Grüne Zeilen — ein verzeichneter Befehl zum Neuladen, oder ein verifizierter Store, den das zugehörige Tool selbst neu baut — lassen sich auch direkt aus der Wiederherstellung leeren — eine Zeile oder alle auf einmal, hinter einer ausdrücklichen Bestätigung ohne Widerrufen — weil ihr Weg zurück die Bytes überlebt. Zeilen, die endgültig weg wären, bekommen diesen Button nie; diese Entscheidung bleibt beim Finder.
Zeilen sind nach Stufe gruppiert — Quarantäne, Papierkorb, weg — neueste zuerst, mit dem Datum des Eintritts in jede Stufe in deren Spalte; sortiere nach Name, Quelle oder Größe, filtere nach Stufe, suche nach Name, Quelle oder Befehl. Jede Zeile trägt außerdem den Buchstaben, mit dem sie beim Entfernen bewertet wurde — R oder I —, denn der Weg zurück hängt davon ab. Die letzte Gruppe ist der Punkt: Der Eintrag überlebt den Papierkorb — ihn zu leeren kostet dich nichts, was du nicht bewusst zurückholen könntest. Befehle laufen nur in engen, validierten Formen; alles andere wird zum Kopieren angezeigt.
Andere Objekte im Papierkorb. Was der Finder in den Papierkorb gelegt hat — nicht Latent — steht unter einer eigenen Überschrift, nur lesbar, mit einem Button Zurücklegen, der es an die Stelle zurückbringt, die der Finder verzeichnet hat, sofern es eine gibt. Latent leert oder verwirft diese Objekte nie; es lässt dich sie nur neben seinen eigenen Einträgen sehen.
Latent legt Dinge in den Papierkorb und leert ihn nie hinter deinem Rücken. Es fasst nichts an, was es nicht selbst hineingelegt hat, und verwirft nichts, was keinen Rückweg hat. Die Papierkorb-Karte in der Übersicht zeigt, was drin ist, und ein Button öffnet ihn im Finder.
An zwei Stellen bietet es aber an, die Sache zu Ende zu bringen. Wiederherstellung leert Zeilen einzeln oder alle sicheren auf einmal — „sicher“ heißt: die Zeile trägt noch einen aufgezeichneten Befehl zum erneuten Holen, oder den geprüften Nachweis, dass das Werkzeug sie neu erzeugt. Und Optimieren bietet es direkt nach einem Lauf an, nur für diesen Lauf. Optimieren entfernt ausschließlich nachweislich sichere Objekte, also lädt oder baut sich jede bewegte Zeile selbst wieder auf; dich zum Zurückholen des Platzes in den Finder zu schicken, hieße, dass die App vor einer Entscheidung zurückweicht, hinter der sie längst stand. Der Button nennt Anzahl und Größe und fragt einmal.
Alles andere im Papierkorb — auch das, was du in Space selbst ausgewählt hast — bleibt deiner Entscheidung überlassen, in der Wiederherstellung oder im Finder.
Löschungen wandern in den Papierkorb, nie direkt ins Nichts, und jeder Lauf schreibt ein Undo-Manifest, das exakt wiederherstellt, was sich bewegt hat. Bevor eine Space-Bereinigung etwas bewegt, laufen vier Guards: Das zugehörige Tool läuft nicht, kein laufendes Binary liegt im Ziel, keine Datei darin ist von einem Prozess geöffnet, und in den letzten 10 Minuten hat sich nichts geändert. Die Guards prüfen im Moment der Löschung erneut, nicht nur bei der Planung. Der Apps-Deinstaller fährt sein eigenes Paar — die App darf nicht laufen, und keine Datei im Ziel darf geöffnet sein.
Latent bringt einen MCP-Server mit — jeder MCP-fähige Assistent kann dein Festplattenbild lesen und Aufräumaktionen vorschlagen. Der Server ist das App-Binary selbst:
/Applications/Latent.app/Contents/MacOS/Latent --mode mcpLatent kann sich selbst in jeden Assistenten auf diesem Mac eintragen. Füge das im Terminal ein:
/Applications/Latent.app/Contents/MacOS/Latent --mode mcp-installGeschrieben wird nur dort, wo ein Client wirklich liegt: wo es eine eigene CLI gibt, läuft deren mcp add (Claude Code, Codex, Gemini, Grok), sonst wird die JSON-Konfiguration bearbeitet (Cursor, Claude Desktop, VS Code, Windsurf). Die JSON-Konfigurationen, die es selbst bearbeitet, liegen vorher als .bak daneben (ein Client mit eigener CLI verwaltet seine selbst). Für einen Client, den du nicht hast, wird keine Konfiguration erfunden, und einer, der Latent schon kennt, bleibt unangetastet. Mit --dry-run siehst du erst, was passieren würde.
Oder trage einen Client selbst ein:
claude mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcpcodex mcp add latent -- /Applications/Latent.app/Contents/MacOS/Latent --mode mcpgemini mcp add latent /Applications/Latent.app/Contents/MacOS/Latent --mode mcpgrok mcp add latent /Applications/Latent.app/Contents/MacOS/Latent -- --mode mcpDas -- ist wichtig: Es reicht --mode mcp an Latent weiter,
statt Grok das Flag als sein eigenes lesen zu lassen. Grok kann seine Seite der
Verkabelung auch selbst für dich prüfen — grok mcp doctor meldet, ob der
Server startet, ob der Handshake gelingt und wie viele Tools es gefunden hat.
Füge das im MCP-Server-Abschnitt des Clients ein — ~/.cursor/mcp.json
für Cursor, claude_desktop_config.json für Claude Desktop,
.vscode/mcp.json für VS Code (VS Code nistet es unter
"servers" statt "mcpServers"):
{
"mcpServers": {
"latent": {
"command": "/Applications/Latent.app/Contents/MacOS/Latent",
"args": ["--mode", "mcp"]
}
}
}Der Transport ist schlichtes stdio — kein Port, kein Daemon, nichts, das laufen
müsste; der Client startet den Server bei Bedarf. Beide Generationen des Protokolls
werden bedient: die aktuelle (2026-07-28, mit server/discover und einer
Version in jeder Anfrage) und der ältere Handshake, sodass sich jeder Client ab 2024
verbindet.
Der Server bietet sechs Tools an, und du rufst sie nie beim Namen auf — du fragst in deinen eigenen Worten, und der Assistent wählt aus:
latent_overview — „Wo ist meine Festplatte hin?“
Summen nach Eigentümer und nach Stufe.latent_items — „Was könnte ich über 500 MB freimachen?“
Einzelne Objekte mit Größe, Stufe und Beleg.latent_clean — „Leere die Download-Caches von pip und
npm“. Das ist das Tool, das etwas in den Papierkorb bewegt, und es nimmt
Objektschlüssel, die der Assistent von latent_items bekommen hat —
nie einen Ordner, den du beiläufig genannt hast.latent_free — „jetzt gib mir den Platz wirklich
zurück“. Leert aus dem Papierkorb nur das, was Latent dort abgelegt hat,
damit sich die Zahl auf der Festplatte wirklich bewegt. Nur das hier lässt
sich nicht rückgängig machen, und das Panel nennt vor deiner Zustimmung, was
nicht zurückkommt.latent_duplicates — „Gibt es doppelte
Modellgewichte?“latent_memory — „Was hält gerade RAM?“ Nur lesend;
eine App zu beenden ist nie Sache des Assistenten.Das meiste, was eine Entwicklerfestplatte füllt, ist nicht gefährlich zu löschen, sondern nur teuer zurückzuholen. Wie viel von diesen Kosten du in Kauf nimmst, kann niemand außer dir beantworten. Deshalb trägt jede Zeile, die der Assistent liest, eine Stufe, und er sollte dir die vier Summen zeigen, bevor er irgendetwas vorschlägt:
Du sagst, wie weit; der Assistent gibt diese Zahl weiter, und der Plan, den er zurückbekommt, nennt zu jeder Zeile ihre Stufe, damit du vor dem Ja prüfen kannst, ob er sich an deine Wahl gehalten hat. Die Obergrenze kann er nicht selbst anheben: bei 3 ist der Server zu Ende, egal was er verlangt.
Ein Assistent sieht Pfade, Größen, Stufen und Beleg-Labels — nie Dateiinhalte. Aber ein Pfad ist Information: Läuft dein Assistent in der Cloud, wandern die Namen der Ordner unter deinem Home-Verzeichnis zu ihm — genau wie jede Datei, die du in einen Chat einfügst. Ein lokales Modell behält sie auf dem Rechner. Latent selbst sendet nichts irgendwohin; es antwortet dem Client, der es gestartet hat, über eine Pipe, und dieser Client entscheidet, wohin die Antwort geht.
Die Befugnisse des Assistenten sind strikt kleiner als deine: Standardmäßig kann er nur verifizierte R-Objekte anfassen (dieselbe Allowlist wie Optimieren mit einem Klick), und weiter geht er nur, wenn du sagst, wie weit (siehe Wie weit gehen). Eine Regel ist absolut: Ein Assistent kann nichts löschen, was er dir nicht gezeigt hat und dem du nicht zugestimmt hast. Latent bestimmt selbst, welche Objekte eine Anfrage umfasst, übergibt dem Assistenten genau diese Liste und handelt dann nur nach ihr: einmal, innerhalb von wenigen Minuten, und lehnt jedes zwischenzeitlich veränderte Objekt ab. Keine Antwort heißt: keine Löschung. Assistenten können nie ein Schloss öffnen, nie an deine eigenen Dateien und sehen nie Dateiinhalte — nur Größen, Pfade und die Beleg-Labels. Jedes Objekt, das der Assistent nicht nehmen darf, sagt in der Liste selbst, warum — unbewiesen, kostet echte Zeit zum Neubauen, deine eigenen Dateien, geschützt —, sodass er nie raten muss, und die Übersicht nennt beides: die Zahl, die er bewegen kann, und die größere Summe des bewiesenen R, die die App zeigt.
Latent ohne Lizenz ist ein Viewer in voller Stärke: Scanne, so oft du willst, erkunde Räder und Ringe, verfolge das Wachstum, lies das Protokoll. Nichts läuft ab. Eine Lizenz schaltet nur das Entfernen von Dateien frei — und Wiederherstellung (Widerrufen, Quarantäne-Restore) funktioniert immer, so oder so. Denn das eine, was diese App nie tun wird, ist, deine Dateien als Geisel zu nehmen.
Menüleiste → Latent → Lizenz eingeben…, Key einfügen, fertig. Ein Key deckt mehr als einen Mac ab (ein Beta-Key aktiviert bis zu 2). Zum Scannen war der Key nie nötig; das Entfernen schaltet sich frei, sobald der Key drin ist. Kein Konto, keine E-Mail, nichts, wo du dich anmelden müsstest. Unter der Haube wird der Key gegen ein Lizenz-Token getauscht, das der Server für diesen Mac signiert; die App prüft die Signatur selbst und erneuert das Token beim Start, sodass eine kopierte Einstellungsdatei keinen zweiten Mac freischaltet und ein Mac ohne Netz wochenlang weiterarbeitet, bevor er den Server wiedersehen will. Ohne Lizenz zeigt jedes Bestätigungsblatt trotzdem, was es tun würde, und bietet statt des Buttons Lizenz holen… an.
Ein gekaufter Key aktiviert bis zu 3 Macs. Verkaufst du einen oder musterst ihn aus, öffne dort Latent → Lizenz eingeben… und drücke Freigeben — der Platz geht sofort an deinen Key zurück, und du kannst ihn woanders nutzen. Auf diesem Mac wird nichts gelöscht, und du kannst ihn jederzeit wieder aktivieren.
Wird ein Kauf erstattet oder zurückgebucht, hört der Key beim nächsten Start der App auf, fürs Löschen zu gelten. Die Wiederherstellung hört nie auf zu funktionieren. Widerrufen, Quarantäne-Restore und Zurücklegen liegen ganz außerhalb der Lizenz — eine Rückerstattung kann das Produkt nehmen, aber sie kann deine Dateien nie stranden lassen.
Latent ist mit einer Developer ID signiert und von Apple notarisiert; das Ticket ist an das Disk-Image geheftet — macOS prüft es beim ersten Öffnen, auch offline. Wäre die Datei zwischen unserem Build und Ihrem Mac verändert worden, ließe sie sich gar nicht öffnen.
Zum Selbstprüfen, nachdem Sie die App nach „Programme“ bewegt haben:
spctl -a -vv /Applications/Latent.appaccepted
source=Notarized Developer ID
origin=Developer ID Application: FatTail Labs (BUS4S7XFQV)
Die Team-Kennung BUS4S7XFQV ist unsere und lässt sich nicht fälschen; das kann Ihnen eine Prüfsumme auf dieser Seite nicht geben, denn wer den Download austauschen könnte, tauschte auch die Prüfsumme daneben aus.
Updates durchlaufen dieselbe Prüfung. Bevor etwas ersetzt wird, verifiziert Latent die Signatur, prüft die Team-Kennung und fragt Gatekeeper. Scheitert eines davon, endet das Update und Ihre Kopie bleibt.
Latent ist ein App-Bundle und ein Ordner. Zum Entfernen Latent beenden (das Menüleisten-Symbol geht mit) und Latent.app in den Papierkorb ziehen. Es installiert keinen Helfer, kein Anmeldeobjekt und keine Kernel-Erweiterung und behält kein Passwort.
Ihre Einträge liegen in ~/.latent: Widerrufs-Einträge, der Quarantäneordner (Objekte noch im Beobachtungsfenster), die Ausschlussliste und das Aktivitätsprotokoll. Lassen Sie ihn stehen, falls Sie neu installieren könnten — das sind die Rückwege. Löschen Sie ihn nur, wenn Sie endgültig fertig sind: Was noch in Quarantäne ist, geht mit, also vorher im Tab Wiederherstellung zurückholen oder leeren.
Latent führt sich selbst unter Apps als P — es entfernt sich nie von innen.
In der App: Hilfe → Feedback senden…. Das sendet deine Nachricht plus App- und macOS-Version; das Aktivitätsprotokoll geht nur mit, wenn du sein Kästchen anhakst — dein Benutzerordnername wird vorher entfernt. Nichts wird je im Hintergrund gesendet — nur dieser Button sendet. Oder schreib an fattaillabs.ceo@gmail.com — wir lesen alles.