- .gitea/workflows/ci.yml: gitea-Actions-Workflow - Job 1 (test): npm ci + build + test auf Node 22 - Job 2 (webapp): webapp-Build + Artifact-Verifikation - Trigger: push + pull_request auf main - README.md komplett neu strukturiert: - Architektur-Diagramm (ASCII) mit allen 5 Bausteinen - 5-Bausteine-Tabelle mit Spalte 'Wo' (Tool/Vault/QMD) - Installations-Anleitung (Tool, Vault, QMD, Webapp) - Beispiel-Session end-to-end - Erweiterte CLI-Referenz mit allen Optionen - Test-Anleitung
7.3 KiB
7.3 KiB
Mind-o-Mat
Lokales Second-Brain-System für Obsidian-kompatible Markdown-Vaults. Besteht aus zwei Repos:
- Dieses Repo (
Mind-o-Mat) — die Code-Basis (Tool). Wird gebaut und über npm publiziert. - Vault-Repo (z. B.
Mind-o-Mat-Vault) — die Notizen. Wird mit dem Tool initialisiert und via gitea synchronisiert.
Status: v2.0 — alle 5 Phasen komplett. 50/50 Tests grün. Webapp-Build 1.05 MB. PWA-Editor + TWA-Konfig vorhanden. Siehe
10_Wiki/SPEC.mdfür Details.
Architektur
┌─────────────────────────────────────────────────────────────┐
│ Mind-o-Mat (Tool) │
│ C:\GitHub\Mind-o-Mat (dieses Repo) │
│ │
│ ┌───────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ │
│ │ CLI │ │ Indexer │ │ Ingest │ │ Webapp │ │
│ │ init- │ │ scan + │ │ LLM + │ │ React + │ │
│ │ vault, │ │ parse │ │ Konfl. │ │ Cytosc. │ │
│ │ index, │ │ + Veral.│ │ + Vera. │ │ + Tiptap │ │
│ │ ingest, │ │ + Dupl. │ │ + Jacc. │ │ + PWA │ │
│ │ sync │ │ │ │ │ │ Manifest │ │
│ └─────┬─────┘ └─────┬────┘ └────┬─────┘ └──────┬─────┘ │
│ │ │ │ │ │
└────────┼──────────────┼───────────┼──────────────┼─────────┘
│ │ │ │
│ ▼ │ ▼
│ landkarte.json │ Browser / PWA
│ │ │ │
│ └─────┬─────┘ │
│ ▼ │
│ 00_Inbox/*.md │
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────┐
│ Mind-o-Mat-Vault (Daten) │
│ C:\GitHub\Mind-o-Mat-Vault (Repo) │
│ gitea: git.orfel.de/Jannik/Mind-o-Mat-Vault.git │
│ │
│ 00_Inbox/ 01_Daily/ 10_Wiki/ 20_Projekte/ ... │
│ 99_System/Konfig.md (Schwellen, KI-Config) │
└─────────────────────────────────────────────────────┘
│
▼ git push
┌────────────┐
│ gitea │
│ Remote │
└────────────┘
5 Bausteine
| # | Baustein | Zweck | KI drin? | Wo |
|---|---|---|---|---|
| 1 | Vault | Markdown-Dateien, Single Source of Truth | nein | Vault-Repo |
| 2 | Indexer | Deterministisch: liest Vault, parst Frontmatter, extrahiert Wikilinks, erkennt Veraltet + Duplikate | nein | Tool-Repo |
| 3 | QMD | Lokale Hybridsuche (BM25 + Vektor + Re-Ranking) | nein (lokal) | im Vault installiert |
| 4 | Wiki (Ingest) | Pflegt Wiki-Seiten via LLM, deterministische Konflikt-Vorprüfung | ja (Minimax-API) | Tool-Repo |
| 5 | Webapp / PWA | 3 Tabs (Graph, Cluster-Karte, Radial), Tiptap-Editor, installierbar auf Android | nein | Tool-Repo |
Installation
Tool global installieren
# Aus dem Repo (lokal):
cd C:\GitHub\Mind-o-Mat
npm install
npm run build
npm link # macht 'mindomat' global verfügbar
# Später (sobald auf npm):
# npm install -g mindomat
Vault initialisieren
# Erstellt komplette Vault-Struktur (12 Ordner + Konfig + 2 Demo-Notizen + git init)
mindomat init-vault C:\GitHub\Mein-Vault
# Konfiguriere gitea-Remote
cd C:\GitHub\Mein-Vault
git remote add origin https://git.example.com/Dein-Name/Mein-Vault.git
git push -u origin main
QMD einrichten (einmalig)
# QMD installieren
npm install -g @tobilu/qmd
# Collections anlegen
cd C:\GitHub\Mein-Vault
qmd collection add 00_Inbox --name inbox
qmd collection add 01_Daily --name daily
qmd collection add 10_Wiki --name wiki
qmd collection add 20_Projekte --name projekte
# Embeddings generieren (~2 GB Download beim ersten Mal)
qmd embed
Vault-Index erstellen
# Erzeugt landkarte.json + 99_System/Index.md + 10_Wiki/Index.md
mindomat index
PWA-Editor starten
# Im Tool-Repo:
cd C:\GitHub\Mind-o-Mat\webapp
npm install
npm run dev
# Browser öffnet http://localhost:5173
# Setze MINDOMAT_VAULT_PATH für die Notes-API
$env:MINDOMAT_VAULT_PATH = "C:\GitHub\Mein-Vault"
npm run dev
Beispiel-Session
# 1. Notiz in Inbox anlegen
notepad C:\GitHub\Mein-Vault\00_Inbox\2026-09-05_Telefonat_Max.md
# Inhalt: "[[Kaffee]] schmeckt gut."
# Speichern.
# 2. Ingest: Notiz -> Wiki
mindomat ingest --vault C:\GitHub\Mein-Vault
# Output: Wiki-Seite Kaffee.md wird erstellt (oder aktualisiert)
# 3. Index aktualisieren
mindomat index
# Output: landkarte.json mit neuem Knoten
# 4. Webapp: Graph ansehen
cd C:\GitHub\Mind-o-Mat\webapp
npm run dev
# Browser: http://localhost:5173 zeigt Graph mit Notiz + Wikilinks
# 5. Sync zu gitea
mindomat sync
# Output: git push zu gitea, andere Geräte sehen die Änderung
CLI-Referenz
mindomat --version # Version
mindomat --help # Hilfe
mindomat init-vault <pfad> # Vault initialisieren
# --remote <url> gitea-URL setzen
# --no-commit nur Struktur, kein Git-Init
# --no-interactive ohne Rückfragen
# --force existierenden Vault überschreiben
mindomat index --vault <pfad> # Index erstellen (deterministisch)
# oder MINDOMAT_VAULT_PATH setzen
mindomat ingest --vault <pfad> # Inbox -> Wiki
# --mock ohne API-Key, simulierte LLM-Antwort
# --note <pfad> nur eine bestimmte Notiz
# --dry-run nicht schreiben
mindomat sync --vault <pfad> # git pull + push zu gitea
# --message <msg> custom commit-message
# --force Lockfile ignorieren
Tests
npm test # 50 Unit-Tests (Vitest)
npm run build # TypeScript kompilieren
cd webapp && npm run build # Vite-Build
Lizenz
MIT