OSVauco/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md
chris 0f786c781b
Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
chore: update docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md via opax-mcp
2026-07-21 22:56:25 +00:00

250 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HANDOFF-LOKAL-LLM-GITEA-MCP.md
# EGEN HANDOFF UFRAVIKELIG STYRINGSDOKUMENT
# GJELDER FRA NÅ OG FREM TIL 100 % FERDIGSTILLELSE
## 0. STATUS OG KOMMANDO
Denne handoffen er det eneste autoritative arbeidsdokumentet for sporet "lokal LLM-fabrikk + OPAX-MCP + Gitea stabilisering + blueprinting til Gitea-VM".
---
## FREMDRIFT OPPDATERT 2026-07-22 00:55 CEST
### ✅ FASE 05 — FERDIG
### ✅ FASE 6 CPU-optimalisering — FERDIG
### ✅ FASE 6-TILLEGG Boot-warming — FERDIG
### ✅ DNS NS-bytte utført — FERDIG 2026-07-21 23:44 CEST
### ✅ OPAX-MCP GITEA_URL permanent + deploy — FERDIG 2026-07-21 23:53 CEST
### ✅ SMOKE-TEST Alle 37 tools — FERDIG 2026-07-22 00:25 CEST
### ⏳ GPG-SIGNERING Commits verified — PÅGÅR
### ⏳ FASE 7 Lokal hjerne / derivat-modell — PLANLAGT
### ⏳ FASE 8 Backup / snapshot-strategi — PLANLAGT
---
## LÅST SYSTEMKONFIGURASJON GITEA-CPU-VM (komplett)
### Systemd-dropins
```
override.conf — OLLAMA_HOST=0.0.0.0:11434
max-models.conf — MAX_LOADED_MODELS=2 + KEEP_ALIVE=-1
warmup.conf — ExecStartPost=/usr/local/bin/ollama-warmup.sh
```
### Operative parametere for Emma-kall
```
num_ctx = 2048
num_batch = 256
OLLAMA_NUM_THREADS = ikke satt (autodetect)
```
### Ytelsesbudsjett per Emma-turn (varm)
```
3-kall turn: ~23.5s
5-kall turn: ~42.5s
Boot-penalty: ~0s (warmup-skript)
Tok/s: 4.95.0 (gemma3:4b)
```
### Gitea-dataplassering
```
/opt/gitea/data/repositories/chris/OSVauco.git/ ← Bare repo
/opt/gitea/data/gitea.db ← SQLite metadata
/opt/gitea/data/custom/conf/app.ini ← Konfig
```
---
## OPAX-MCP KONFIGURASJON LÅST
| Variabel | Verdi |
|---|---|
| `GITEA_URL` | `http://34.67.252.59:3000` |
| `OLLAMA_BASE_URL` | `http://34.67.252.59:11434` |
| `EMMA_MODEL` | `gemma3:4b` |
| `EMMA_FAST_MODEL` | `gemma3:4b` |
| `EMMA_LIGHT_MODEL` | `qwen2.5:3b` |
| `OSVAUCO_AGENT_URL` | `https://osvauco-agent-357036551735.us-central1.run.app` |
Deploy verifisert: `get_connector_status``live`, `gitea: online`, `tool_count: 37`
---
## DNS FULLFØRT 2026-07-21
NS-bytte: Proisp → Google Cloud DNS **23:44 CEST**
| Record | Type | Verdi |
|---|---|---|
| `vauco.no.` | A | `34.98.77.173` (LB) |
| `www.vauco.no.` | A | `34.98.77.173` (LB) |
| `opax.vauco.no.` | A | `34.98.77.173` (LB) |
| `git.vauco.no.` | A | `34.67.252.59` |
| MX / SPF / DKIM / DMARC | TXT/MX | Google Workspace komplett |
---
## SMOKE-TEST FULLFØRT 2026-07-22 00:25 CEST
| Kategori | Status | Merknad |
|---|---|---|
| ✅ Ollama / Emma | Grønn | gemma3:4b varm, 14s respons |
| ✅ Connector | Grønn | live, 37 tools |
| ✅ Gitea read + write | Grønn | Commits og push OK |
| ✅ GCP / Cloud Run | Grønn | osvauco-agent Ready, rev 00695 |
| ✅ Workspace / Gmail | Grønn | 3 brukere, kalender, e-post OK |
| ✅ Terminal / Billing | Grønn | Billing dramatisk ned fra 5. juli |
| 🟡 Jason | Grønn m/merknad | Kjører gemini-2.5-flash (ikke Pro) |
### Smoke-test observasjoner
- `qwen2.5:3b` har tool-calling capabilities — `gemma3:4b` har det ikke
- GCE `list_instances` tom — ikke kritisk, Cloud Console på mobil
- Jason `mode`-parameter gir 400 — bruk kun `prompt`
- GPG-signering pågår — commits fortsatt unverified
---
## FASE 7 LOKAL HJERNE / DERIVAT-MODELL (planlagt)
### Mål
Erstatte stor API-modell (Gemini/Claude/Perplexity) med lokal modell som hjerne i OPAX-arkitekturen. Redusere API-avhengighet på sikt.
### Arkitektur (nå vs mål)
```
NÅ:
Perplexity/Gemini ← Hjerne (stor API-modell)
↓ tool calls
OPAX-MCP
Emma gemma3:4b ← Lokal inferens (svak)
MÅL:
Lokal stor modell ← Hjerne (lokal, gratis)
↓ tool calls
OPAX-MCP
Emma gemma3:4b ← Lokal inferens (rask)
```
### Kandidatmodeller for CPU-VM (15 GB RAM)
| Modell | RAM | Tok/s CPU | Agentevne | Vurdering |
|---|---|---|---|---|
| `gemma3:4b` (nå) | 2.9 GB | ~5 | Svak | For svak som hjerne |
| `gemma3:12b` | ~8 GB | ~1.52 | God | **Test dette først** |
| `qwen2.5:14b` | ~9 GB | ~1.5 | Sterk | Alternativ |
| `gemma3:27b` | ~17 GB | <1 | Tilnærmet god | Krever GPU |
### Exit-kriterier Fase 7
- [ ] `gemma3:12b` installert og testet CPU-VM
- [ ] Ytelsesmåling: tok/s, RAM-bruk, swap=0
- [ ] Kvalitetstest: kan modellen planlegge og bruke tools?
- [ ] GEMINI.md-lignende systemd-prompt/konfig for Emma laget
- [ ] Beslutning: erstatter eller komplementerer?
### Derivat-strategi
Emma skal eget identitetsdokument (tilsvarende GEMINI.md for Jason) med:
- Personlighet og tone
- Arbeidsregler og prioriteringer
- Tool-bruksprinsipper
- Vauco OS-kontekst
---
## FASE 8 BACKUP / SNAPSHOT-STRATEGI (planlagt)
### Mål
Sikre at Gitea-CPU-VM (`34.67.252.59`) aldri er single point of failure for source of truth.
### Strategi: Daglig GCP Disk Snapshot
```
Kilde: Gitea-CPU-VM persistent disk
Frekvens: Daglig (02:00 CEST)
Bevaring: 7 snapshots (rullerende — siste 7 dager)
Kostnad: ~$0.026/GB/mnd — 50 GB disk = ~$1.30/mnd
```
### Implementasjon
```bash
# Opprett snapshot-policy
gcloud compute resource-policies create snapshot-schedule gitea-daily-backup \
--region=us-central1 \
--max-retention-days=7 \
--on-source-disk-delete=keep-auto-snapshots \
--daily-schedule \
--start-time=00:00 \
--storage-location=us-central1
# Koble policy til disk
gcloud compute disks add-resource-policies gitea-cpu-vm \
--resource-policies=gitea-daily-backup \
--zone=us-central1-b
```
### Hva snapshots dekker
- `/opt/gitea/data/repositories/` alle git-objekter
- `/opt/gitea/data/gitea.db` brukere, tokens, metadata
- `/opt/gitea/data/custom/conf/app.ini` konfig
- Ollama-modeller (`/usr/share/ollama/`)
- Systemd-dropins og warmup-skript
### Restore-prosedyre (ved VM-tap)
```bash
# 1. Opprett ny disk fra snapshot
gcloud compute disks create gitea-restore \
--source-snapshot=<snapshot-name> \
--zone=us-central1-b
# 2. Koble til ny VM eller eksisterende
# 3. Gitea starter automatisk — alt er intakt
```
### Exit-kriterier Fase 8
- [ ] Snapshot-policy opprettet og koblet til disk
- [ ] Første snapshot verifisert i GCP Console
- [ ] Restore-prosedyre testet (restore til tmp-disk)
- [ ] Kostnad bekreftet (~$1.30/mnd)
---
## ÅPNE PUNKTER
1. GPG-signering commits verified (pågår)
2. `git.vauco.no` verifiser propagering
3. Fase 7: `gemma3:12b` test CPU-VM
4. Emma derivat-dokument (tilsvarende GEMINI.md)
5. Fase 8: Snapshot-policy aktiveres
6. Gitea passord byttes (eksponert i chat)
## FASTE SANNHETER
- Gitea er source of truth
- Lokale modeller er hovedretning mål er å fase ut API-avhengighet
- Gitea-VM (34.67.252.59) er permanent målmaskin
- Dev-snap (34.170.51.84) er Jason sin arbeidsstasjon kan ikke stenges før lokal hjerne er verifisert
- Denne handoffen overstyrer alt annet
## DEFINITION OF DONE
- Lokale modeller lever og kan brukes lokalt
- OPAX-MCP bruker lokal modellbackend korrekt
- `list_emma_models` er grønn
- Gitea read-only tools er grønne
- GCP/Workspace-kjernen er fortsatt grønn
- Konfigurasjon konsolidert GITEA_URL permanent + deployed
- Boot-warming verifisert
- DNS migrert til Google Cloud DNS
- Smoke-test alle 37 tools FERDIG
- `git.vauco.no` live propagering pågår
- GPG-signering verified pågår
- Fase 7: lokal hjerne verifisert planlagt
- Fase 8: daglig snapshot-backup planlagt
## OPPDATERINGSLOGG
| Dato | Handling |
|---|---|
| 2026-07-21 | FASE 46: CPU-optimalisering, boot-warming fullført |
| 2026-07-21 23:44 | DNS: NS-bytte utført hos Proisp |
| 2026-07-21 23:53 | OPAX-MCP: GITEA_URL + OLLAMA_BASE_URL 34.67.252.59, deployed |
| 2026-07-22 00:05 | Smoke-test plan klar, Fase 7 (lokal hjerne) lagt inn |
| 2026-07-22 00:25 | Smoke-test fullført alle kategorier grønne |
| 2026-07-22 00:55 | Fase 8 (backup/snapshot) lagt inn, GPG-signering pågår |