Commit graph

5725 commits

Author SHA1 Message Date
Auto-Sync
2c31cdb753 Auto-Sync: 2026-06-23 01:15 2026-06-23 01:15:09 +02:00
Auto-Sync
78fd005456 Auto-Sync: 2026-06-23 01:00 2026-06-23 01:00:09 +02:00
Auto-Sync
aa0bb53be7 Auto-Sync: 2026-06-23 00:45 2026-06-23 00:45:09 +02:00
Auto-Sync
df70e3c534 Auto-Sync: 2026-06-23 00:30 2026-06-23 00:30:09 +02:00
Auto-Sync
ad095d53e9 Auto-Sync: 2026-06-23 00:15 2026-06-23 00:15:09 +02:00
Auto-Sync
90fc3ad561 Auto-Sync: 2026-06-23 00:00 2026-06-23 00:00:10 +02:00
Auto-Sync
49ff8c34e2 Auto-Sync: 2026-06-22 23:45 2026-06-22 23:45:09 +02:00
Auto-Sync
a2f3ba827f Auto-Sync: 2026-06-22 23:30 2026-06-22 23:30:10 +02:00
Auto-Sync
ec9fcb8e19 Auto-Sync: 2026-06-22 23:15 2026-06-22 23:15:10 +02:00
Auto-Sync
5125e51297 Auto-Sync: 2026-06-22 23:00 2026-06-22 23:00:10 +02:00
Auto-Sync
9becbc8ee8 Auto-Sync: 2026-06-22 22:45 2026-06-22 22:45:09 +02:00
Auto-Sync
1d70e6f424 Auto-Sync: 2026-06-22 22:30 2026-06-22 22:30:09 +02:00
Auto-Sync
556691a413 Auto-Sync: 2026-06-22 22:15 2026-06-22 22:15:09 +02:00
Auto-Sync
12ae3369d8 Auto-Sync: 2026-06-22 22:00 2026-06-22 22:00:10 +02:00
Auto-Sync
8231ca7195 Auto-Sync: 2026-06-22 21:45 2026-06-22 21:45:09 +02:00
Auto-Sync
205105382a Auto-Sync: 2026-06-22 21:30 2026-06-22 21:30:10 +02:00
Auto-Sync
8a9110c1b7 Auto-Sync: 2026-06-22 21:15 2026-06-22 21:15:09 +02:00
Auto-Sync
9590a538b6 Auto-Sync: 2026-06-22 21:00 2026-06-22 21:00:09 +02:00
Auto-Sync
a2ad55801f Auto-Sync: 2026-06-22 20:45 2026-06-22 20:45:09 +02:00
Auto-Sync
eb7450677f Auto-Sync: 2026-06-22 20:39 2026-06-22 20:39:25 +02:00
Homelab Cursor
4f61172468 fix(sync): Guard gegen Datenverlust — reset --hard nur bei sauberem Baum
sync_state.py bricht den git-Sync ab + alarmiert per Telegram, wenn der
Live-Arbeitsbaum uncommittete Aenderungen oder ungepushte Commits hat,
statt sie per reset --hard FETCH_HEAD zu vernichten. Watchdog laeuft
unabhaengig weiter. Behebt die Ursache von Issue #123.
2026-06-22 20:38:35 +02:00
Homelab Cursor
38b91136c2 chore: getrackte .pyc entfernen + .bak-Muster ignorieren (Ref #123) 2026-06-22 20:11:43 +02:00
Homelab Cursor
1cbc5df1ad fix(bot): Live-Stand CT116 uebernehmen (Grok-4.3, Hermes-Monitoring, Loki-Filter, Antwort-Timeout)
- llm.py: Text-Modell auf x-ai/grok-4.3
- telegram_bot.py: Fortschritts-Logik auf asyncio.wait_for + shield (15s Timeout)
- monitor.py: Hermes-Healthchecks (CT151), Alert-Dedup, EXPECTED_STOPPED erweitert
- core/loki_client.py: zentrale ERROR_EXCLUDE_RE fuer transiente cloudflared/QUIC-Flaps
- Doku: JELLYFIN.md, infrastructure/STATE.md, hardware-ai-local-coding.md, sessions/

Bis 21.06. uncommittete Live-Edits, gesichert in backup/live-state-20260621. Ref #123.
2026-06-22 20:11:30 +02:00
Homelab Cursor
169ea0c71f fix(bot): Systemvorhersage bei OpenRouter-404 nicht als Erfolg senden
Fallback auf gpt-4o-mini wenn grok fehlschlaegt; klare Fehlermeldung
statt rohem LLM-Fehler-String in Telegram.
2026-06-22 20:10:03 +02:00
Homelab Cursor
6506f99447 fix(savetv): keine Aufnahme wenn Film bereits in Jellyfin
Der Jellyfin-Abgleich galt nur der Web-UI-Anzeige. Auto- und
manuelle Aufnahmen prüfen jetzt die normalisierte Mediathek.
2026-06-22 20:10:03 +02:00
Homelab Cursor
cacf40526c fix(savetv): Batch-Umbenennung für Raw-Backlog und NAS-Skript
Rename lief nur beim Download-Abschluss; POST /api/rename_pending
benennt alle Titel_ID.mp4 auf Hetzner um. savetv_rename_nas.py für
bereits kopierte NAS-Dateien. __ wird zu Bindestrich im Titel.
2026-06-22 20:10:03 +02:00
6b034c53e2 infra(telegraf): README mit Architektur, Routing, Schema und Deploy 2026-06-21 18:05:07 +00:00
48164e59a8 infra(telegraf): openwb.conf versioniert (Ingest -> DB iobroker, namedrop temperature/io_state) 2026-06-21 18:04:48 +00:00
5f5a405278 infra(telegraf): satellites.conf versioniert (Ingest -> DB sensors) 2026-06-21 18:04:32 +00:00
7155a1af78 docs(index): TROUBLESHOOTING im MASTER_INDEX verlinkt 2026-06-01 09:14:07 +00:00
feb2a723ac docs(infra): Troubleshooting-Runbook (pve-mu-2 Tailscale-Key + Systemvorhersage-Fehlalarme) 2026-06-01 09:13:53 +00:00
8ee72a2ec7 docs(index): MASTER_INDEX um OpenMemory-Infra-Doku ergaenzt 2026-05-31 13:56:21 +00:00
2c5c8b40f3 docs(infra): OpenMemory deployment + 2026-05-31 hotfix (list_memories crash + add truncation) 2026-05-31 13:55:28 +00:00
Homelab Cursor
4c39f51ec3 fix(savetv): Wikidata-Timeout 8s -> 25s fuer Rename/Metadaten 2026-05-21 14:52:55 +02:00
Homelab Cursor
8f491ff36e fix(savetv): NAS-Sync nutzt /api/filelist statt veraltete downloads-IDs 2026-05-21 14:52:49 +02:00
Homelab Cursor
9e4cb33b08 fix: OpenRouter grok-4.1-fast -> grok-4.3 (deprecated 404) 2026-05-21 14:45:08 +02:00
8652744954 tmp: Cleanup Setup-Script (nicht mehr benoetigt) 2026-05-13 10:40:35 +00:00
f7ed0918fd tmp: Cleanup SSH-Key-File (nicht mehr benoetigt) 2026-05-13 10:40:32 +00:00
675fe62a42 tmp: Setup-Script fuer Cursor-SSH-Zugang 2026-05-13 10:37:52 +00:00
ac11f1649d tmp: SSH-Key fuer KI-Server Setup 2026-05-13 10:32:54 +00:00
25c58b0147 Arakava: MU-Plugin blockiert Kommentare mit shorturl.fm (Spam, Filter erweiterbar). 2026-05-03 16:30:15 +00:00
Homelab Cursor
97c2dae082 chatlog_mcp: sharper tool descriptions to stop Gemini halting after list_chats
- list_chats output now ends with an explicit instruction to call
  chatlog_recent / chatlog_since next (Gemini 2.5 Flash tends to answer
  after a single tool call otherwise)
- list_chats description: clarify it only returns metadata, never content
- recent description: marked as PREFERRED for reading actual messages
2026-05-01 12:58:12 +02:00
Homelab Cursor
2fa011fa2a chatlogger: add tailscale-only HTTP API + Hermes MCP wrapper
- chatlogger/api.py — read-only HTTP API (stdlib http.server, bearer-token
  auth, bound to 100.123.47.7:8770) with /list_chats, /recent, /search,
  /since, /stats, /healthz
- chatlogger/chatlogger-api.service — hardened systemd unit
- chatlogger/api.env.example — env template (token + bind + db)
- mac-clients/chatlog_mcp.py — stdio MCP wrapper for Hermes Agent on the
  Mac (4 tools: chatlog_list_chats / recent / search / since), uses only
  Python stdlib, talks to the REST API via Tailscale.

Hermes registers as 4th MCP server (chatlog) — verified live with
76 tool(s) from 4 server(s) in gateway.log.
2026-05-01 12:55:38 +02:00
Homelab Cursor
2c8eeb9e8d fix(chatlog): remove 'pink elephant' negative example from prompt
The earlier prompt explicitly named 'mychatarchive' / 'search_brain' as
forbidden, which planted the term in the LLM's memory. Now only the four
real tool names are mentioned positively, plus an instruction to ignore
old session-history that may contain hallucinated tool names.
2026-05-01 12:27:15 +02:00
Homelab Cursor
83fe700bac fix(chatlog): aggressive anti-hallucination prompts and tool descriptions
Live-test showed Grok 4.1 Fast inventing 'mcp_mychatarchive_search_brain'
when asked about Telegram chat history. Fix:
- Tool descriptions explicitly say 'TELEGRAM' and 'NICHT ChatGPT/Memory/RAG'
- SYSTEM_PROMPT_EXTRA lists all 4 exact tool names and forbids inventing
  alternatives like 'mychatarchive' or 'search_brain'
- Forbids using rag_search/openmemory_search/web_search for Telegram-
  related queries
- Demands honest 'no data' over hallucination
2026-05-01 12:24:12 +02:00
Homelab Cursor
d0cda4691d fix(llm): add chatlogger triggers to _LOCAL_OVERRIDES
Prevents 'aktueller Stand zur G2010B-Vermietung?' from being routed to
perplexity/sonar (which can't tool-call) just because 'aktuelle' is in
_WEB_TRIGGERS. New triggers: concierge, listing, vermietung, kaution,
G2010B/D1603 apartment codes, etc.
2026-05-01 12:20:40 +02:00
Homelab Cursor
bd771a5213 fix(chatlog): explicit routing hints for ARAKAWA apartment codes
Grok 4.1 Fast was eskaliereing 'Stand zur G2010B-Vermietung?' to
perplexity/sonar instead of using chatlog_*. Strengthened
SYSTEM_PROMPT_EXTRA with explicit triggers (G2010B, D1603, ARAKAWA,
Concierge, Bnb, Kaution, Mieter) and a 'NO web search for this' rule.
2026-05-01 12:18:35 +02:00
Homelab Cursor
d82b6f97ef feat(chatlogger): multi-tenant + Jarvis tool integration
Phase 2 of the chatlogger feature.

Multi-tenant:
- chatlogger-bot.service -> chatlogger-bot@.service (systemd template)
- /opt/chatlogger/<instance>.env per bot, all share /opt/chatlogger/chats.db
- existing bot migrated: chatlogger-bot@arakawa.service
- adding a second group bot is now: cp arakawa.env <name>.env, edit token+chats,
  systemctl enable --now chatlogger-bot@<name>

Jarvis (hausmeister-bot) tool:
- homelab-ai-bot/tools/chatlog.py (autodiscovered by tool_loader.py)
- 4 tools: chatlog_list_chats, chatlog_recent, chatlog_search, chatlog_since
- Reads SQLite directly via sys.path += /opt/homelab-brain/chatlogger
- SYSTEM_PROMPT_EXTRA tells the LLM when to use these (Concierge, Airbnb,
  Listing, 'aktueller Stand', 'wer hat zugesagt', 'muss ich reagieren').

Tested live: hausmeister-bot loads 48 tools (44 + 4 new), all chatlog
handlers callable, returns real messages from the @arakawa_concierge_bot
recording of -1003924901022.
2026-05-01 12:13:00 +02:00
Homelab Cursor
e1be45399e feat(chatlogger): Arakawa Concierge — passive Telegram group chat logger
Standalone bot @arakawa_concierge_bot that silently records configured
group chats into SQLite (FTS5). Phase 1 — capture only, no LLM, no
auto-replies. Reads token + chat allowlist from /opt/chatlogger/env
(NOT in git). Runs as systemd unit chatlogger-bot.service on CT 116
sharing /opt/bot-venv with the hausmeister-bot.

- chatlogger_bot.py: telegram polling, message/edit handlers, admin cmds
  (/whichchat, /log_status, /recent, /search) — silent in groups
- store.py: SQLite schema + FTS5 search + edit audit
- query.py: CLI (recent, search, stats, chats, since, export JSONL)
- chatlogger-bot.service: systemd unit, hardened (ProtectSystem=strict)
- env.example, README.md

Tested live: message 'hallo' from -1003924901022 stored, retrieved
via CLI within seconds. Group privacy must be off in BotFather.
2026-05-01 12:03:22 +02:00
root
74c2dbfa88 docs(hardware): M5 Max als lokale KI-Maschine, Lehre aus Beratungsfehler 2026-04-26 19:53:23 +02:00