OSVauco/docs/HANDOFF-LOCAL-LLM-GITEA-MCP.md
chris de22ae642a
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-25 06:18:02 +00:00

234 lines
9.3 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-25 08:15 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
### ✅ FASE 6.5 VM-oppgradering + modellarkitektur — VERIFISERT 2026-07-22
### ✅ DEV-SNAP UAVHENGIGHET Verifisert 2026-07-22 19:30 CEST
### ✅ OSVauco arbeidskopi klonet til Gitea-VM — FERDIG 2026-07-22 19:25 CEST
### ✅ git.vauco.no HTTPS — FERDIG 2026-07-25
### ✅ GITEA_TOKEN rotert — FERDIG 2026-07-25
### ✅ Google OAuth2 innlogging Gitea — FERDIG 2026-07-25
### ✅ SIKKERHETSHERDING Uautoriserte brukere ryddet — FERDIG 2026-07-25
### ✅ VM Access Scopes cloud-platform satt — FERDIG 2026-07-25
### 🟡 FASE 7 14B-validering utført, arkitektur justeres — PÅGÅR
### ⏳ GPG-SIGNERING Commits verified — PÅGÅR
### ⏳ FASE 8 Backup / snapshot-strategi — PLANLAGT
---
## SIKKERHETSHERDING (2026-07-25)
- ✅ Offentlig brukerregistrering i Gitea deaktivert (`DISABLE_REGISTRATION = true`, `ALLOW_ONLY_EXTERNAL_REGISTRATION = true`, `SHOW_REGISTRATION_BUTTON = false`)
- ✅ To uautoriserte brukere (`dev433f2c`, `dev1ba0ac`) deaktivert og deres tokens slettet
- ✅ Eksponert GITEA_TOKEN rotert — nytt token i Secret Manager, opax-mcp redeployet
- ✅ VM Access Scopes oppdatert til `cloud-platform` (VM stoppet/startet 2026-07-25)
---
## DEV-SNAP UAVHENGIGHET VERIFISERT 2026-07-22
Alle 6 tester grønne:
| Test | Status | Bevis |
|------|--------|-------|
| A — Gitea API | ✅ | list_commits svarer fra localhost:3000 |
| B — Repo-innhold | ✅ | Klon hentet 3545 objekter direkte |
| C — OPAX health | ✅ | opax_mcp_status: live |
| D — MCP tools/list | ✅ | 37 verktøy live |
| E — Git-sync | ✅ | nothing to commit, working tree clean |
| F — Ollama | ✅ | 5 modeller bekreftet |
**Viktig:** Bruk alltid `localhost:3000` (ikke `34.67.252.59:3000`) når du jobber fra Gitea-VM selv. GCP NAT-er ikke loopback-trafikk.
---
## git.vauco.no FULLFØRT 2026-07-25
- ✅ DNS: `git.vauco.no` A-record → `34.67.252.59`
- ✅ nginx installert og konfigurert som proxy til `localhost:3000`
- ✅ Firewall-regel `allow-gitea-web` (prioritet 500) opprettet
- ✅ certbot fullført — HTTPS aktivt
- ✅ Google OAuth2 konfigurert og testet
---
## SIKKERHET ÅPNE PUNKTER
- ✅ GITEA_TOKEN rotert og fjernet fra eksponering — FERDIG 2026-07-25
---
### Rollen "automation" og sikkerhets-sentinel for Gitea
Status per 2026-07-25:
- Gitea kjører på https://git.vauco.no med HTTPS og riktig ROOTURL.
- Offentlig registrering er stengt (DISABLE_REGISTRATION = true, ALLOW_ONLY_EXTERNAL_REGISTRATION = true, SHOW_REGISTRATION_BUTTON = false).
- To uautoriserte brukere (dev433f2c, dev1ba0ac) er deaktivert, deres tokens er slettet.
- Ingen av stegene under er gjennomført ennå de beskriver målbildet for neste iterasjon.
#### 1. Teknisk Gitea-bruker: `automation`
Mål:
- Skille menneskelig admin (`chris`) fra automatiserte operasjoner.
- Sørge for at alle automatiske commits / API-kall identifiseres som `automation`, ikke `chris`.
Plan:
- Opprett Gitea-bruker `automation` (ikke admin).
- Gi `automation` kun tilgang til de repoene automasjon skal jobbe med (f.eks. OSVauco).
- Bruk CLI/API fra Gitea-VM til:
- Generere ett personal access token for `automation` med begrenset scope.
- Skrive tokenet direkte til Google Cloud Secret Manager (secret `gitea-automation-token`).
- Konfigurere Cloud Run / OPAX MCP til å lese tokenet via miljøvariabel (`GITEA_TOKEN`).
- Konfigurer git på Gitea-VM til å bruke `automation` for push/pull.
Viktig:
- `automation` skal ikke være admin.
- `chris` skal ikke dele token med automasjon.
- Token-verdier lagres kun i Secret Manager og miljøvariabler, ikke i repo eller logs.
#### 2. Sentinel-rolle for lokale LLM-modeller (Gitea Security Sentinel)
Mål:
- Ha en lettvekts, lokal LLM-modell som periodisk opptrer som "cyber security sentinel" for Gitea og infrastruktur.
- Fange opp mønstre som ligner hendelsen 2026-07-11 (uautoriserte brukere, tokens laget rett etter signup, ukjente repo osv.).
Rolle: `sentinel` (kun lesing + rapport)
Input:
- Gitea-API: brukerliste, tokens, repo-oversikt
- Logger: gitea-app-logg, nginx-logg, journald
- Konfig: app.ini, firewall-regler, Secret Manager metadata
Oppførsel:
- Kjør periodisk (hver time eller natt) fra Gitea-VM.
- Produser rapport i `protocols/security/SENTINEL-REPORT-YYYY-MM-DD.md`.
- Foreta ingen direkte mutasjoner uten eksplisitt godkjenning.
Alarmsignaler:
- Nye lokale brukere som ikke matcher forventede mønstre.
- Tokens opprettet for ukjente brukere.
- Nye repo opprettet av ukjente brukere.
- app.ini endret slik at registrering åpnes igjen.
#### 3. Samspill mellom `automation`, `sentinel` og `chris`
- `chris`: Eneste Gitea-admin. Godkjenner større endringer.
- `automation`: Utfører godkjente tekniske endringer via CLI/API.
- `sentinel`: Kjører periodiske analyser, skriver rapporter, kun lesetilgang.
---
## FASE 6.5 — OPPDATERT LOKAL LLM-STACK (2026-07-22)
### Bekreftet drift
- `gitea-cpu-vm` er oppe i `us-central1-b`
- VM kjører på `e2-highmem-4` (4 vCPU / 32 GB RAM)
- Statisk IP: `34.170.51.84`
- Gitea svarer på port `3000`
- Ollama svarer på port `11434`
### Faktisk modeller lokalt per 2026-07-25
- `gemma3:4b`
- `qwen2.5:3b`
- `qwen2.5:7b`
- `qwen2.5-coder:7b`
- `qwen2.5-coder:14b`
### Revidert anbefalt modellarkitektur
- **Frontmodell:** `gemma3:4b` — raske svar, enkel resonnering
- **Lett tool-modell:** `qwen2.5:3b` — tool calling, responsivt
- **Standard mellomlag:** `qwen2.5:7b` — kvalitet + brukbar latency
- **Kode-modell:** `qwen2.5-coder:7b` — standard for repo/kodearbeid
- **Backup coder:** `qwen2.5-coder:14b` — batch/asynkrone kodeoppgaver
---
## 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
| 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 |
---
## ÅPNE PUNKTER
1. GPG-signering — få commits verified
2. `automation`-bruker opprett i Gitea
3. Sentinel-implementering (lokal LLM periodisk sjekk)
4. Test `qwen2.5-coder:7b` på konkret kode-/repo-oppgave
5. Mål RAM/swap under modell-last
6. Emma derivat-dokument (tilsvarende GEMINI.md)
7. Fase 8: Snapshot-policy aktiveres
8. `opax.vauco.no` domain mapping (Cloud Run → custom domain)
## FASTE SANNHETER
- Gitea er source of truth
- Lokale modeller er hovedretning
- Gitea-VM (`34.67.252.59`) er permanent målmaskin — alltid-på, STANDARD (ikke preemptible)
- Bruk `localhost:3000` fra Gitea-VM, aldri ekstern IP mot seg selv
- Dev-snap er ikke lenger nødvendig for kjerneflyten
- CPU er primær flaskehals for tyngre lokale modeller
## DEFINITION OF DONE
- ✅ Lokale modeller lever og kan brukes lokalt
- ✅ OPAX-MCP bruker lokal modellbackend korrekt
- ✅ Gitea read/write tools er grønne
- ✅ GCP/Workspace-kjernen er fortsatt grønn
- ✅ Smoke-test alle 37 tools — FERDIG
- ✅ VM oppgradert til e2-highmem-4 (32 GB RAM) — FERDIG
- ✅ Dev-snap uavhengighet verifisert — FERDIG
- ✅ OSVauco arbeidskopi på Gitea-VM — FERDIG
- ✅ git.vauco.no live med HTTPS — FERDIG
- ✅ Google OAuth2 innlogging Gitea — FERDIG
- ✅ GITEA_TOKEN rotert — FERDIG
- ✅ Sikkerhetsherding — FERDIG
- ✅ VM Access Scopes — FERDIG
- ⏳ GPG-signering verified — pågår
- ⏳ automation-bruker i Gitea — neste
- ⏳ Fase 7: lokal hjerne verifisert — pågår
- ⏳ 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:25 | Smoke-test fullført — alle kategorier grønne |
| 2026-07-22 03:55 | Handoff oppdatert etter 14B-validering |
| 2026-07-22 19:25 | OSVauco klonet til Gitea-VM via localhost:3000 |
| 2026-07-22 19:30 | Dev-snap uavhengighet bekreftet — alle 6 tester grønne |
| 2026-07-22 19:45 | nginx installert, git.vauco.no konfig opprettet, certbot blokkert av firewall |
| 2026-07-23 22:14 | Handoff oppdatert med full status, neste steg og sikkerhetsnotis om token |
| 2026-07-25 08:15 | Full synkronisering: HTTPS ferdig, token rotert, OAuth2 fikset, sikkerhetsherding dokumentert, VM scopes fikset |