Some checks are pending
Check Python Version Consistency / Check Python Version (push) Waiting to run
13 KiB
13 KiB
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 03:55 CEST
✅ FASE 0–5 — 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
✅ FASE 6.5 – VM-oppgradering + modellarkitektur — VERIFISERT 2026-07-22
🟡 FASE 7 – 14B-validering utført, arkitektur justeres — PÅGÅR
⏳ GPG-SIGNERING – Commits verified — PÅGÅR
⏳ FASE 8 – Backup / snapshot-strategi — PLANLAGT
FASE 6.5 — OPPDATERT LOKAL LLM-STACK (2026-07-22)
Bekreftet drift
gitea-cpu-vmer oppe ius-central1-b- VM kjører nå på
e2-highmem-4(4 vCPU / 32 GB RAM) - Statisk IP beholdt:
34.170.51.84 - Gitea svarer på port
3000 - Ollama svarer på port
11434
Bekreftet ressursstatus
- Disk: ca. 99 GB total
- Ny modellstack etter 14B-nedlasting: ca. 29 GB modeller totalt
- Systemet har fortsatt god diskmargin, men CPU er nå den reelle begrensningen
Faktisk modeller lokalt per 2026-07-22
gemma3:4bgemma3:12bqwen2.5:3bqwen2.5:14bqwen2.5-coder:14b
Verifisert ytelsesfunn
gemma3:4bholder ca.4.9–5.0 tok/svarm og fungerer interaktivtqwen2.5:14bmålte ca.1.4 tok/svarm på faktisk VM- Kort prompt ga ca.
249seval-duration på varm modell vedstream: false - Konklusjon:
qwen2.5:14ber for treg som standard interaktiv agent på nåværende CPU-VM
Revidert anbefalt modellarkitektur
- Frontmodell:
gemma3:4b- Brukes for raske svar, enkel resonnering og billig default
- Lett tool-/agentmodell:
qwen2.5:3b- Brukes for tool calling som må være responsivt nok i praksis
- Neste kandidat for mellomlag:
qwen2.5:7b- Skal testes som mulig erstatning for
qwen2.5:14bsom standard Qwen-lag
- Skal testes som mulig erstatning for
- Kode-/repo batch-modell:
qwen2.5-coder:14b- Beholdes for repo-forståelse, patching, refaktorering og tyngre asynkrone kodeoppgaver
- Ikke anbefalt nå:
qwen2.5:14bsom interaktiv standardmodell- For treg på CPU til primær bruk
- Ikke anbefalt nå:
gemma3:27b- Uaktuell før videre CPU-/ytelsesløft; forventes tregere enn 14B-laget
Operativ ruting
- Start med
gemma3:4b - Eskaler til
qwen2.5:3bnår oppgaven trenger tools og respons fortsatt må være praktisk - Bruk
qwen2.5-coder:14bkun når oppgaven er tydelig kode-/repo-orientert og kan tåle høy latency - Test
qwen2.5:7bsom mulig nytt mellomlag før eventuell fjerning avqwen2.5:14b - Ikke last ned
gemma3:27bnå
Viktige vurderinger
- CPU, ikke RAM eller disk, er nå flaskehalsen
qwen2.5:14bga svak praktisk interaktiv ytelse til tross for vellykket installasjonqwen2.5-coder:14bbeholdes foreløpig fordi use casen er batch/dev-assistanse, ikke chat-latencyqwen2.5:7ber neste rasjonelle kandidat for bedre balanse mellom kvalitet og fartqwen2.5-coder:32boggemma3:27butsettes
Neste konkrete steg
- Test / vurder:
ollama rm qwen2.5:14bollama pull qwen2.5:7b
- Test deretter:
- enkel chat-latency
- tool calling
- RAM- og diskpåvirkning
- om
qwen2.5:7bkan overta rollen som standard Qwen-lag
# Foreslått neste endring
ollama rm qwen2.5:14b
ollama pull qwen2.5:7b
# Bekreft etterpå
curl http://localhost:11434/api/tags
free -h
du -sh /usr/share/ollama/.ollama/models
LÅST SYSTEMKONFIGURASJON – GITEA-CPU-VM (komplett)
VM-spesifikasjon (oppdatert 2026-07-22)
- Maskintype:
e2-highmem-4(4 vCPU / 32 GB RAM) - Zone:
us-central1-b - Statisk IP:
34.170.51.84
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.9–5.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:3bhar tool-calling capabilities —gemma3:4bhar det ikke- GCE
list_instancestom — ikke kritisk, Cloud Console på mobil - Jason
mode-parameter gir 400 — bruk kunprompt - GPG-signering pågår — commits fortsatt unverified
FASE 7 – LOKAL HJERNE / DERIVAT-MODELL (pågår)
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 e2-highmem-4 (32 GB RAM) — oppdatert 2026-07-22 03:55
| Modell | RAM | Tok/s CPU | Agentevne | Vurdering |
|---|---|---|---|---|
gemma3:4b (nå) |
2.9 GB | ~5 | Svak | Front/hurtig default |
qwen2.5:3b |
~2.0–2.5 GB | ~3–4 | God | Beste raske tool-kandidat nå |
gemma3:12b |
~8 GB | ~1.5–2 | God | Allsidig, men ikke tool-modell |
qwen2.5:7b |
~5.5–6 GB | forventet ~2.5–3 | God | Neste kandidat som mellomlag |
qwen2.5:14b |
~9 GB | målt ~1.4 | Sterk | For treg som interaktiv agent |
qwen2.5-coder:14b |
~9 GB | forventet ~1.4 | Kode-sterk | Batch / async kodebruk |
gemma3:27b |
~17 GB | forventet <1 | Tilnærmet god | Ikke aktuell nå |
qwen2.5-coder:32b |
~20 GB | <1 | Svært sterk | Utsatt — for tung |
Validerte funn
qwen2.5:14binstallert og verifisert- Varm enkel chat-test ga ca.
249.3seval-duration og1.4 tok/s - Resultatet vurderes som for tregt for interaktiv standardbruk
- Dette flytter
qwen2.5:14bfra planlagt standardmodell til mulig batch-/asynkronmodell qwen2.5:7ber neste kandidat som må testes før modellstack fryses
Exit-kriterier Fase 7
qwen2.5:14binstallert og testetqwen2.5:7binstallert og testet- Beslutning tatt: fjern eller behold
qwen2.5:14b qwen2.5-coder:14btestet på konkret kode-/repo-oppgave- Ytelsesmåling: RAM-bruk, swap=0
- Endelig ruting besluttet for fast / light / coder / batch
- GEMINI.md-lignende systemd-prompt/konfig for Emma laget
Derivat-strategi
Emma skal få 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
# 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)
# 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
- GPG-signering — få commits verified (pågår)
git.vauco.no— verifiser propagering- Test
qwen2.5:7bsom nytt mellomlag - Beslutt om
qwen2.5:14bskal fjernes etter 7B-test - Test
qwen2.5-coder:14bpå konkret kode-/repo-oppgave - Mål RAM/swap under modell-last
- Emma derivat-dokument (tilsvarende GEMINI.md)
- Fase 8: Snapshot-policy aktiveres
- 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
- CPU er nå primær flaskehals for tyngre lokale modeller på denne VM-en
DEFINITION OF DONE
- ✅ Lokale modeller lever og kan brukes lokalt
- ✅ OPAX-MCP bruker lokal modellbackend korrekt
- ✅
list_emma_modelser 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
- ✅ VM oppgradert til e2-highmem-4 (32 GB RAM) — FERDIG
- ✅
qwen2.5:14binstallert og ytelsestestet — FERDIG - ⏳
git.vauco.nolive — propagering pågår - ⏳ GPG-signering verified — pågår
- ⏳
qwen2.5:7btestet og vurdert — planlagt - ⏳ Endelig mellomlag valgt (
qwen2.5:7bvs beholdqwen2.5:14b) — planlagt - ⏳
qwen2.5-coder:14bverifisert i konkret kodeflyt — planlagt - ⏳ Fase 7: lokal hjerne verifisert — pågår
- ⏳ Fase 8: daglig snapshot-backup — planlagt
OPPDATERINGSLOGG
| Dato | Handling |
|---|---|
| 2026-07-21 | FASE 4–6: 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 |
| 2026-07-22 03:29 | FASE 6.5 lagt inn: e2-highmem-4 verifisert, ny modellarkitektur (Gemma4b → Qwen14b → Qwen-coder-14b → Gemma27b), neste steg: pull qwen2.5:14b + qwen2.5-coder:14b |
| 2026-07-22 03:55 | Handoff oppdatert etter 14B-validering: qwen2.5:14b målt til ~1.4 tok/s varm og vurdert for treg som interaktiv standardmodell; qwen2.5:7b satt som neste kandidat; gemma3:27b og coder32b utsatt |