-
-
Notifications
You must be signed in to change notification settings - Fork 7
Vault Map
An interactive, local-only map of your vault, served by the daemon at http://127.0.0.1:6723/ui. Off by default — enable and open it with one command:
bastra map # offers to enable ui.enabled, then opens the browser(Equivalent: bastra config set ui.enabled true, or the step in the install wizard. The setting is read per request — no daemon restart needed. bastra status shows the URL once enabled.)
The map renders from the same open JSON any viewer can use (see API below) — the web UI is not privileged.
| View | What it shows |
|---|---|
| Mindspace (default) | Your vault as a real universe: volume-spread galaxies per area, subgalaxies, solar systems, dwarfs, nebulae, background stars and the occasional shooting star. Fully mouse-navigable; recenter via button or hotkey C. |
| Clouds | A force layout along your folder structure: one cloud per cluster (projects/<name> counts as its own cluster). Drag a cloud's label to rearrange — neighbors evade, and anything pushed too far drifts gently back into a comfort band around the dragged cloud. Arrangements persist locally; Reset layout discards them. |
| Ring | A drill-down wheel over the six memory building blocks — projects, people, self, knowledge, rules, artifacts — topped by a meta ring for taxonomy conventions and declared skills (bastra skills). Click an area's name in the band to fan it open; project areas with many entries get an instance switcher in the sidebar. The hub shows your vault image (click the center to upload/frame one; projects can carry their own emblem). |
| Semantic | Notes arranged by meaning: a PCA projection of the embedding vectors. Dashed strands are connections you never wrote — pairs that are semantically close but share no explicit link. Cluster colors stay, so folder-vs-meaning disagreements show at a glance. Needs the embedding index (returns 503 while it warms up). |
Nodes carry two extra signals everywhere: an emotion-colored valence glow (from the optional emotion/salience frontmatter) and a usage-heat core — the more a memory is actually recalled, the hotter its center.
The structure toggle (clusters ↔ blocks) recolors and regroups every view; each view opens in the structure it reads best in (clouds fine-grained, ring/semantic in blocks).
The search box combines three sources, labelled in the dropdown: instant title matches, AI recall (the daemon's hybrid BM25 + vector search — full sentences welcome), and the search copilot: a small chat docked beside the results. Ask it to dig deeper — it fans your question out into several recall queries (fixing typos, translating angles), answers grounded in the actual note bodies, and pins its finds highlighted on top of the result list. The copilot runs on the same local Ollama generation model as doc2query; without one, the chat reports itself unavailable. Nothing ever leaves your machine.
Clicking any result selects the memory on the map: inspector with the full note, camera flight to its neighborhood, strands lit with a quiet light animation, and a sonar beacon on the picked node.
- Clusters (sidebar): hover = preview highlight, click = persistent filter (click again or select a node to release).
- Signals: memories / unwritten notes / bridge nodes / care flags are clickable filters.
- Updated within: 7/30/90-day time filter.
- All filters combine with AND. Ghosts (dashed nodes) are wikilink targets that don't exist yet; bridge halos mark nodes whose links span foreign clusters.
An opt-in live mode (topbar toggle, persisted) turns the map into a monitor: a new memory lands as a supernova with a preview card and seconds counter, reads/changes/deletes appear as typed live notices with anti-spam rules, nodes flash per notice kind, and newborn nodes join the running simulation — clickable, and they stay after the supernova fades. The session history panel (topbar button) lists everything that happened while you watched.
Create, rename and delete top-level areas right in the browser: scopes are rewritten across the affected memories, dokumentationen/<scope> follows along, and deletion moves to the vault trash — never a hard delete.
From a node's inspector you can flag a memory — delete, edit, write (for ghosts), or note. Flags land as checkbox lines in vault-care.md at the vault root (an open format). Your next AI session sees the open flags via the session hook and offers to work the list off with you.
On a fresh vault the map auto-opens the onboarding interview — a short persona-aware wizard whose answers become profile memories immediately (see Importing Memories). The ↓ button in the topbar opens the import dialog — the visual sibling of bastra import: paste a memory list from ChatGPT, Claude or Gemini (or pick a file) and stage it for review; full conversations.json exports go through the CLI's mining path instead (see Importing Memories). The sidebar links report a bug and suggest an idea — prefilled GitHub issue forms; the bug form carries a sanitized diagnostics block (version, OS, embedding mode, vault size — never paths, never vault content), same as bastra feedback bug.
The map is a viewer over three token-gated read endpoints — any other tool can render the same data:
GET /api/v1/graph # nodes/edges/clusters/ghosts/bridges
GET /api/v1/graph/node?id=… # one note's full body (private → 404)
GET /api/v1/graph/semantic # PCA positions + unwritten connections
Memories with sensitivity: private never appear — not as nodes, not as ghosts, not in search or copilot answers.
Eine interaktive, rein lokale Karte deines Vaults, ausgeliefert vom Daemon unter http://127.0.0.1:6723/ui. Standardmäßig aus — aktivieren und öffnen mit einem Befehl:
bastra map # bietet an, ui.enabled zu setzen, und öffnet den Browser(Gleichwertig: bastra config set ui.enabled true, oder der Schritt im Install-Wizard. Das Setting wird pro Request gelesen — kein Daemon-Neustart nötig. bastra status zeigt die URL, sobald aktiviert.)
Die Karte rendert aus demselben offenen JSON, das jeder Viewer nutzen kann (siehe API unten) — die Web-UI ist nicht privilegiert.
| Ansicht | Was sie zeigt |
|---|---|
| Mindspace (Default) | Dein Vault als echtes Universum: volume-spread Galaxien pro Bereich, Subgalaxien, Sonnensysteme, Zwerge, Nebel, Hintergrundsterne und gelegentliche Sternschnuppen. Voll maus-navigierbar; Recenter per Button oder Hotkey C. |
| Clouds | Force-Layout entlang deiner Ordnerstruktur: eine Wolke pro Cluster (projects/<name> zählt als eigener Cluster). Wolken am Label ziehen — Nachbarn weichen aus, zu weit Weggedrücktes driftet sanft in ein Komfort-Band um die gezogene Wolke zurück. Anordnungen bleiben lokal gespeichert; Reset layout verwirft sie. |
| Ring | Ein Drill-Down-Rad über die sechs Gedächtnis-Grundbausteine — Projekte, Personen, Selbst, Wissen, Regeln, Artefakte — überlagert von einem Meta-Ring für Taxonomie-Konventionen und deklarierte Skills (bastra skills). Klick auf einen Bereichsnamen im Band fächert ihn auf; Projektbereiche mit vielen Einträgen bekommen einen Instanz-Umschalter in der Sidebar. Die Nabe zeigt dein Vault-Bild (Klick aufs Zentrum lädt/rahmt eines; Projekte können ein eigenes Emblem tragen). |
| Semantic | Notizen angeordnet nach Bedeutung: eine PCA-Projektion der Embedding-Vektoren. Gestrichelte Stränge sind Verbindungen, die du nie geschrieben hast — semantisch nahe Paare ohne expliziten Link. Die Cluster-Farben bleiben, damit Ordner-vs-Bedeutungs-Abweichungen sofort auffallen. Braucht den Embedding-Index (503, solange er aufwärmt). |
Nodes tragen überall zwei Zusatz-Signale: einen emotions-gefärbten Valence-Glow (aus dem optionalen emotion/salience-Frontmatter) und einen Nutzungs-Heat-Core — je öfter ein Memory tatsächlich abgerufen wird, desto heißer sein Zentrum.
Der Structure-Umschalter (clusters ↔ blocks) färbt und gruppiert jede Ansicht um; jede Ansicht öffnet in der Struktur, in der sie am besten lesbar ist (Clouds feingranular, Ring/Semantic in Blöcken).
Die Suchbox kombiniert drei Quellen, im Dropdown beschriftet: Sofort-Titel-Treffer, AI recall (die Hybrid-Suche des Daemons aus BM25 + Vektoren — ganze Sätze willkommen) und den Search-Copiloten: ein kleiner Chat, der neben den Ergebnissen andockt. Bitte ihn, tiefer zu graben — er fächert deine Frage in mehrere Recall-Queries auf (korrigiert Tippfehler, variiert Blickwinkel), antwortet gegroundet auf den echten Notiz-Inhalten und pinnt seine Funde hervorgehoben oben in die Ergebnisliste. Der Copilot läuft auf demselben lokalen Ollama-Generierungsmodell wie doc2query; ohne eines meldet sich der Chat als nicht verfügbar. Nichts verlässt jemals deine Maschine.
Ein Klick auf ein Ergebnis wählt das Memory auf der Karte aus: Inspector mit der vollen Notiz, Kameraflug zur Nachbarschaft, Stränge mit leiser Lichtanimation, Sonar-Beacon auf der gewählten Node.
- Clusters (Sidebar): Hover = Vorschau-Highlight, Klick = persistenter Filter (nochmal klicken oder eine Node auswählen löst ihn).
- Signals: memories / unwritten notes / bridge nodes / care flags sind klickbare Filter.
- Updated within: 7/30/90-Tage-Zeitfilter.
- Alle Filter kombinieren per UND. Ghosts (gestrichelte Nodes) sind Wikilink-Ziele, die noch nicht existieren; Bridge-Halos markieren Nodes, deren Links fremde Cluster überspannen.
Ein Opt-in-Live-Modus (Topbar-Toggle, persistiert) macht die Karte zum Monitor: Ein neues Memory landet als Supernova mit Preview-Card und Sekundenzähler, Reads/Änderungen/Löschungen erscheinen als typisierte Live-Notices mit Anti-Spam-Regeln, Nodes blitzen je nach Notice-Art auf, und neugeborene Nodes werden in die laufende Simulation aufgenommen — klickbar, und sie bleiben, wenn die Supernova verglüht. Das Session-History-Panel (Topbar-Button) listet alles, was während des Zuschauens passierte.
Überbereiche direkt im Browser anlegen, umbenennen und löschen: Scopes werden über die betroffenen Memories umgeschrieben, dokumentationen/<scope> zieht mit, und Löschen wandert in den Vault-Trash — nie ein Hard-Delete.
Aus dem Inspector einer Node heraus kannst du ein Memory markieren — delete, edit, write (für Ghosts) oder note. Die Flags landen als Checkbox-Zeilen in vault-care.md im Vault-Root (offenes Format). Deine nächste AI-Session sieht die offenen Flags über den Session-Hook und bietet an, die Liste gemeinsam abzuarbeiten.
Bei frischem Vault öffnet die Karte automatisch das Onboarding-Interview — ein kurzer persona-bewusster Wizard, dessen Antworten sofort Profil-Memories werden (siehe Importing Memories). Der ↓-Button in der Topbar öffnet den Import-Dialog — das visuelle Pendant zu bastra import: eine Memory-Liste aus ChatGPT, Claude oder Gemini einfügen (oder eine Datei wählen) und für die Review stagen; komplette conversations.json-Exporte laufen stattdessen über den Mining-Pfad der CLI (siehe Importing Memories). Die Sidebar verlinkt report a bug und suggest an idea — vorausgefüllte GitHub-Issue-Formulare; das Bug-Formular trägt einen sanitisierten Diagnose-Block (Version, OS, Embedding-Modus, Vault-Größe — nie Pfade, nie Vault-Inhalte), identisch zu bastra feedback bug.
Die Karte ist ein Viewer über drei token-geschützte Read-Endpoints — jedes andere Tool kann dieselben Daten rendern:
GET /api/v1/graph # Nodes/Edges/Clusters/Ghosts/Bridges
GET /api/v1/graph/node?id=… # voller Body einer Notiz (private → 404)
GET /api/v1/graph/semantic # PCA-Positionen + ungeschriebene Verbindungen
Memories mit sensitivity: private tauchen nie auf — nicht als Node, nicht als Ghost, nicht in Suche oder Copilot-Antworten.