Files
ubuntu-bare-metal/coding-agent/HANDOFF.md
T
tomasz-syn-grzegorza 359afb3a59 Initial import: bare-metal stacks, Server UI, GPU fan, tutorials.
Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI,
control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-05 12:02:04 +00:00

5.2 KiB

Handoff — sesja ubuntu-bare-metal

Dokument dla agenta kontynuującego pracę. Ostatni znany stan po sesji konfiguracji serwera LLM na GMKtec K11.

Kontekst projektu

Element Wartość
Repo /home/tomasz-syn-grzegorza/cursor/ubuntu-bare-metal
Urządzenie GMKtec K11
OS Ubuntu 26.04 LTS minimized (resolute)
GPU NVIDIA GeForce RTX 3090 Ti, 24 GB VRAM (CUDA_VISIBLE_DEVICES=0)
RAM ~29 GiB
Dysk systemowy nvme1n1 128 GB → /
Dysk danych nvme0n1 1 TB → /data
Docker data-root /data/docker
Użytkownik tomasz-syn-grzegorza (sudo)

Workflow: tutorial krok po kroku w manual-tutorial/. Użytkownik czyta markdown i wykonuje komendy ręcznie. Agent nie może wpisać hasła sudo interaktywnie — skrypty wymagające sudo użytkownik uruchamia w swoim terminalu SSH.

Ukończone (infrastruktura + repo)

Rozdział / obszar Status
01 — Docker CE ~29.x Ukończony przez użytkownika
02 — NVIDIA driver 595 open Ukończony
03 — NVIDIA Container Toolkit 1.19 Ukończony
03b — narzędzia minimized Dokumentacja gotowa
04A — dysk 1 TB, fstab, migracja Docker Ukończony (scripts/setup-data-disk.sh)
04B — stack vLLM Repo gotowe; obraz Docker pobrany; kontener nie uruchomiony (brak modelu)
Katalog modeli vLLM stacks/vllm/models.catalog.yaml + skrypty list/download/switch
Placeholder llama.cpp stacks/llamacpp/README.md
05 — stack LocalAI Repo gotowe; kontener uruchomiony przez użytkownika
LocalAI API key Użytkownik dodał LOCALAI_API_KEY do stacks/localai/.envwartość nie dokumentowana tutaj

Stan runtime (faktyczny na serwerze)

Serwis Stan
vLLM Obraz vllm/vllm-openai:latest na dysku; kontener nie działa (VLLM_MODEL puste w .env)
LocalAI Kontener localai running; obraz localai/localai:v4.4.3-gpu-nvidia-cuda-13
Model LocalAI Użytkownik w trakcie pobierania modelu (prawdopodobnie przez UI / galerię)
API key Ustawiony w .envwymaga przekazania do kontenera w docker-compose.yml + restart (patrz BACKLOG P0)

Porty

Serwis Port w dokumentacji Port faktyczny (.env użytkownika)
vLLM API 8000 8000 (nieaktywny)
LocalAI UI + API 8080 8070
llama.cpp (plan) 8001 nie wdrożony

Wewnątrz kontenera LocalAI zawsze nasłuchuje na 8080; mapowanie hosta ustawia LOCALAI_PORT w .env.

Decyzje techniczne (nie zmieniać bez uzgodnienia)

  1. GGUF z lmstudio-community nie działa w standardowym vllm/vllm-openai — użycie przez LocalAI (llama.cpp backend) lub przyszły host llama.cpp.
  2. vLLM interim dla Q4-odpowiednika: AWQ Qwen/Qwen3.6-27B-Instruct-AWQ, profil qwen3.6-27b-awq-128k, kontekst 128K (MAX_MODEL_LEN=131072), KV fp8.
  3. LocalAI: oficjalny obraz Docker (nie build ze źródeł); bez command: phi-2 (brak auto-pobierania modelu przy starcie).
  4. Jeden duży model w VRAM naraz na 24 GB — nie uruchamiać vLLM + LocalAI z dużymi modelami równolegle.
  5. Modele docelowe (katalog): Qwen3.6-27B Q4_K_M GGUF, Gemma 4 12B Q4_0 GGUF (lmstudio-community).
  6. Brak domyślnego modelu przy instalacji stacków — pobieranie on-demand.

Co zrobiono w repo (implementacja agenta)

vLLM (stacks/vllm/)

  • models.catalog.yaml — GGUF (llamacpp) + AWQ (vllm)
  • Elastyczny docker-compose.yml + vllm-entrypoint.sh (QUANTIZATION, VLLM_EXTRA_ARGS)
  • Skrypty: list-models.sh, download-model.sh, switch-model.sh, start.sh
  • Profile: qwen3.6-27b-awq-128k.env, _template.env
  • Tutorial część B w manual-tutorial/04-vllm-stack.md

LocalAI (stacks/localai/)

  • docker-compose.yml, .env.example, skrypty pull.sh, start.sh, clone-upstream.sh
  • Bind mounty na /data/apps/localai/{models,backends,configuration,images,data}
  • Tutorial manual-tutorial/05-localai-stack.md
  • Roadmapa root README: 05 LocalAI, 06 ComfyUI, 07 firewall

Inne

  • scripts/setup-data-disk.sh — rozszerzony o katalogi gguf/ i localai/

Ostatnia rozmowa (advisory — nie wdrożone w repo)

Użytkownik pytał o:

  1. Wystawienie endpointu przez domenę — reverse proxy (Caddy/nginx) + DNS + HTTPS; LocalAI za proxy na 127.0.0.1:PORT.
  2. API token — opcja A: LOCALAI_API_KEY (legacy, pełny admin); opcja B: LOCALAI_AUTH=true + LOCALAI_BASE_URL (konta użytkowników).

Brak w repo: Caddyfile, rozdział proxy/TLS, wpis LOCALAI_API_KEY w docker-compose.yml.

Następny agent — zacznij od

  1. Przeczytaj BACKLOG.md — sekcja P0.
  2. Napraw przekazanie LOCALAI_API_KEY do kontenera i zweryfikuj auth po restarcie.
  3. Uzgodnij z użytkownikiem port 8070 vs 8080 w dokumentacji.
  4. Po zakończeniu pobierania modelu — test chat w UI i curl /v1/chat/completions.

Transkrypt sesji

Pełna historia rozmowy (Cursor):
/home/tomasz-syn-grzegorza/.cursor/projects/home-tomasz-syn-grzegorza/agent-transcripts/f1d1befe-e1e0-44e8-8a40-1f175e6df09c/f1d1befe-e1e0-44e8-8a40-1f175e6df09c.jsonl