Repository navigation
Expand file tree
/
Copy pathsetup-config.example.json
More file actions
118 lines (118 loc) · 8.39 KB
/
Copy pathsetup-config.example.json
File metadata and controls
118 lines (118 loc) · 8.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
{
"_comment": "Generisches Starter-Template. Wird von /setup-config ausgeliefert, wenn keine eigene setup-config.json vorhanden ist. Eine eigene setup-config.json (gitignored) ueberschreibt dieses Template komplett. Frei anpassen.",
"ssh_host": "your-server",
"_comment_ssh": "ssh_user/ssh_hostname werden nur fuer die SSH-Anleitung auf der /install-Seite verwendet (Host-Block fuer ~/.ssh/config). Der Secret-Pull selbst nutzt 'ssh <ssh_host>' und damit die lokale SSH-Config.",
"ssh_user": "your-user",
"ssh_hostname": "your-server.lan",
"_comment_tls": "Optional: TLS-Basis-URL fuer den /mcp-Kanal (z.B. hinter Caddy 'tls internal'). Das Setup nutzt sie nur, wenn <url>/health auf der Maschine erreichbar UND vertraut ist (curl ohne -k), sonst Fallback auf den http-KG_URL. Bootstrap-Fetch laeuft weiter ueber http.",
"ai_rem_https_url": "https://your-server",
"_comment_ollama": "LLM-Basis-URL (OpenAI-kompatibel, /v1 wird intern angehaengt) fuer Transcript-Extraktion + Nightly-Cleanup-Urteile. Zeigt idealerweise auf einen Router (LiteLLM o.ae.), nicht direkt auf einen GPU-Host: der Router faengt schlafende Backends per Fallback ab. Wird ins settings-template.json (ollama_url) geschrieben und vom Server gelesen. Env AI_REM_LLAMA_URL/AI_REM_OLLAMA_URL hat Vorrang. Modell via AI_REM_LLM_MODEL bzw. CLEANUP_LLM_MODEL (Default qwen). Beispiel: http://<ai-rem-host>:11437 (<ai-rem-host> = der Host, auf dem ai-rem laeuft — hier eintragen).",
"ollama_url": "http://your-server:11434",
"_comment_llm_api_key": "Optional. Nur noetig, wenn ollama_url auf einen Router mit Auth zeigt. Wird NICHT auf Clients geschrieben: Clients holen den Key pro Lauf authentifiziert ueber GET /api/client-config; die oeffentliche /setup-config filtert ihn (wie alle *_key/*_token/*_secret/*_password-Felder) heraus. Bevorzugt stattdessen als Server-Env AI_REM_LLM_API_KEY setzen -- Env hat Vorrang vor diesem Feld. Bitte KEINEN Master-/Admin-Key eintragen, sondern einen Virtual Key mit Budget.",
"llm_api_key": "",
"_comment_git_accounts": "Kontext-Regeln fuer die Session-Herkunft (ai-rem origin / Auto-Extraktion): Remote-Owner des Repos (case-insensitiv) -> context, sonst die im Repo wirksame git user.email gegen 'emails' (fuer Org-Repos wie github.com/<org>/<repo>). Passt keine Regel, gilt eine per 'ai-rem map-dir' gespeicherte Verzeichnis-Zuordnung, sonst fragt der SessionStart-Hook einmal nach. Ausgeliefert ueber /api/client-config als context_rules. Fehlt der Key, gelten markusth-bi -> work, markus7h und kaiguard -> private.",
"git_accounts": [
{"owner": "your-work-account", "emails": ["you@company.example"], "context": "work"},
{"owner": "your-private-account", "emails": ["you@private.example"], "context": "private"}
],
"_comment_mcp_register": "Optional. Der ai-rem-Token kommt per Geraete-Kopplung (Browser) oder SSH-Pull von ssh_host und landet im OS-Keychain -- das einzige Secret auf dem Client. mykeyvault wird bevorzugt als lokaler stdio-MCP registriert: 'stdio.repo' wird nach 'stdio.install_dir' geklont + im 'stdio.subdir'-Ordner gebaut (npm) und als stdio-Server ueber den Wrapper 'ai-rem vault-mcp' eingetragen, der VAULT_API_URL/VAULT_API_TOKEN beim Start von /api/client-config holt (Server-Env AI_REM_PAIR_VAULT_TOKEN + 'vault_url') -- kein Vault-Token in ~/.claude.json, exec/file-Tools frei (Secrets bleiben lokal). Fehlt node/npm/git oder schlaegt der Build fehl, faellt das Setup auf den HTTP-MCP zurueck (ueber 'ai-rem mcp-proxy --endpoint'): URL-Kandidaten (erst 'https_url' wenn ai-rem ueber https laeuft, dann 'http.url') werden vor der Registrierung auf Erreichbarkeit geprobt (DNS + TLS-Trust) -- nur ein erreichbarer wird eingetragen, dann aber ohne exec/file-Tools. tools wird analog aus 'stdio.repo' geklont + gebaut und als stdio-MCP mit TOOLS_REGISTRY_URL=stdio.registry_url registriert.",
"mcp_register": {
"mykeyvault": {
"stdio": {
"repo": "https://github.com/markus7h/mykeyvault.git",
"install_dir": "~/Code/mykeyvault",
"subdir": "mcp",
"entry": "mcp/dist/index.js"
},
"http": {
"url": "http://your-server:3458/mcp",
"https_url": "https://mykeyvault.your-domain/mcp"
},
"vault_url": "http://your-server:8223"
},
"tools": {
"stdio": {
"repo": "https://github.com/markus7h/tools-registry.git",
"install_dir": "~/Code/tools-registry",
"entry": "dist/index.js",
"registry_url": "http://your-server:3457"
}
}
},
"permissions_allow_portable": [
"Bash",
"Skill(update-config)",
"Skill(update-config:*)",
"mcp__ai-rem__memory_status",
"mcp__ai-rem__memory_get_context",
"mcp__ai-rem__memory_search",
"mcp__ai-rem__memory_add",
"mcp__ai-rem__memory_list",
"mcp__ai-rem__memory_get_relations",
"mcp__ai-rem__memory_relate",
"mcp__ai-rem__memory_delete"
],
"permissions_deny": [
"Read(**/.env)",
"Read(**/*.pem)",
"Read(**/*secret*)",
"Read(**/id_rsa)",
"Read(**/id_ed25519)",
"DesignSync",
"Workflow",
"NotebookEdit",
"RemoteTrigger",
"ScheduleWakeup",
"CronCreate",
"CronDelete",
"CronList",
"EnterWorktree",
"ExitWorktree",
"Monitor",
"PushNotification",
"ListMcpResourcesTool",
"ReadMcpResourceTool"
],
"entities": [
{
"name": "Plan-first bei nicht-trivialen Aufgaben",
"type": "Preference",
"description": "Regel: Bei jeder Aufgabe, die mehr als eine triviale Aenderung umfasst, zuerst einen Plan erstellen und ihn vom User bestaetigen lassen, bevor Code geaendert wird. Why: Verhindert Fehlrichtungen und unnoetige Token-/Zeitkosten durch Nacharbeit. How to apply: Bei mehrstufigen oder mehrdateiigen Aenderungen den Planmodus nutzen; bei Einzeiler/Tippfehler direkt umsetzen."
},
{
"name": "Knapp antworten, Token sparen",
"type": "Preference",
"description": "Regel: Kurze, praezise Antworten ohne Wiederholungen, Mehrfachfassungen oder Fuellsaetze. Why: Spart Token und Lesezeit, haelt den Fokus. How to apply: Direkt zur Sache, Aufzaehlungen statt Prosa, keine Zusammenfassung des gerade Gesagten."
},
{
"name": "ai-rem vor Rueckfragen pruefen",
"type": "Preference",
"description": "Regel: Wenn eine Information fehlt, erst in ai-rem nachsehen (memory_get_context, memory_search), bevor der User gefragt wird. Why: Die Info ist oft schon gespeichert; unnoetige Rueckfragen nerven und kosten Zeit. How to apply: Bei jeder offenen Frage zuerst memory_search mit passenden Keywords; nur wenn nichts gefunden, den User fragen."
},
{
"name": "ai-rem Recall-Vorgehen",
"type": "Preference",
"description": "Regel: Kontext in dieser Reihenfolge holen: zuerst memory_get_context (offene Tasks/Projekte/letzte Eintraege), dann memory_search fuer gezielte Themen. Why: get_context liefert den breiten Ueberblick, search die Tiefe. How to apply: Zu Sitzungsbeginn bzw. bei neuem Thema get_context; fuer ein konkretes Detail anschliessend search."
},
{
"name": "Halluzinationen vermeiden",
"type": "Preference",
"description": "Regel: Datei-Pfade, Funktionsnamen und Fakten aus dem Gedaechtnis vor jeder Empfehlung am echten Code/System verifizieren statt zu raten. Why: Memory ist eine Behauptung ueber damals, nicht ueber jetzt; Geraten erzeugt falsche Empfehlungen. How to apply: Vor Empfehlung Pfad/Funktion pruefen (existiert noch?); bei Konflikt dem Code vertrauen und das Memory-Entity updaten."
},
{
"name": "Wissen proaktiv in ai-rem speichern",
"type": "Preference",
"description": "Regel: Sobald im Verlauf einer Aufgabe etwas Ueberraschendes oder Nicht-Offensichtliches gelernt wird (Infrastruktur, Entscheidungen, Loesungen), sofort via memory_add sichern und mit memory_relate verknuepfen. Why: Persistenter Kontext geht sonst beim Sitzungsende verloren. How to apply: Vor dem Anlegen pruefen ob die Entity schon existiert (updaten statt duplizieren); kein aus Code/git ableitbares Wissen speichern."
},
{
"name": "skill_setup_ai_rem",
"type": "Tool",
"description": "Slash-Command /setup-ai-rem: ai-rem MCP-Server auf einer neuen Maschine einrichten (MCP registrieren, Hooks/Settings deployen, Starter-Preferences seeden)."
},
{
"name": "skill_ai_rem_prefedit",
"type": "Tool",
"description": "Slash-Command /ai-rem:prefedit: interaktiver Preferences-Manager — pin/unpin, Context aendern, sort_order setzen, loeschen."
}
]
}