Falls back to ./build.sh from the workstation. Re-add the workflow when Gitea runners are wired up.
2.0 KiB
finrod
Tiny web translator backed by Ollama on radagast. Named for Finrod Felagund, Noldor loremaster of the tongues of Men.
Run
uv run uvicorn app:app --host 127.0.0.1 --port 8000 --reload
Then open http://127.0.0.1:8000.
Config
| Env var | Default | Notes |
|---|---|---|
OLLAMA_URL |
http://radagast.jpnadas.xyz:11434 |
Ollama base URL |
MODEL_FILTER |
gemma,aya |
Comma-separated substrings; model matches if it contains any. Empty = show all |
Models
For Pt/Nl/En translation, three worth A/B-ing:
ssh radagast 'ollama pull gemma2:9b' # already there — big-and-broad baseline
ssh radagast 'ollama pull gemma3:4b' # newer multilingual training, ~2-3× faster on Ivy Bridge
ssh radagast 'ollama pull aya-expanse:8b' # Cohere multilingual model, strong on Dutch
All three fit in radagast's 10 GB at Q4. Switching models in the dropdown forces Ollama to load the new weights — expect a 5-15 s pause on the first call after a switch while it reads from disk.
Build / push image
Built locally and pushed to Scaleway — no Gitea runners on the homelab yet, so there's no CI workflow.
One-time setup (host needs buildx + QEMU for cross-arch):
docker buildx create --name multi --use
docker run --privileged --rm tonistiigi/binfmt --install all
docker login rg.nl-ams.scw.cloud -u nologin -p <SCW_SECRET_KEY>
Then on every change:
./build.sh
That builds linux/amd64,linux/arm64 and pushes rg.nl-ams.scw.cloud/valinor/finrod:{latest, <git-short-sha>}. Take note of the short SHA it prints — that's what you pin in valinor.
Deploy
Cluster manifests live in valinor/apps/finrod/ (bjw-s app-template, internal-only ingress at finrod.jpnadas.xyz). To roll out a new build:
./build.shhere — get the SHA- Bump
tag:invalinor/apps/finrod/values.yamlto that SHA on a branch - Merge → ArgoCD syncs the new image
Using :latest works for the first deploy (the pull policy is Always) but pinning to a SHA on each rollout gives you trivial rollback via git revert.