From 9b9666485faa0f5e4aaa23aa5103aac58f6f730f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=A7=CE=B3=CF=86=CF=84=20Kompanion?= Date: Mon, 13 Oct 2025 03:51:18 +1300 Subject: [PATCH] feat: compose tor+ollama separation; runner uses OLLAMA_BASE; modelfiles mount --- docker/compose.override.yml | 12 ++++++++++++ docker/compose.yml | 38 ++++++++++++++++++------------------- runtime/kom_runner.py | 4 ++-- 3 files changed, 32 insertions(+), 22 deletions(-) create mode 100644 docker/compose.override.yml diff --git a/docker/compose.override.yml b/docker/compose.override.yml new file mode 100644 index 0000000..2da2f6f --- /dev/null +++ b/docker/compose.override.yml @@ -0,0 +1,12 @@ +version: "3.9" +services: + ollama: + networks: [komnet] + volumes: + - /home/kompanion/ollama:/root/.ollama + runner: + environment: + OLLAMA_BASE_URL: http://ollama:11434 +networks: + komnet: + internal: false diff --git a/docker/compose.yml b/docker/compose.yml index 221d1ec..bd41bdf 100644 --- a/docker/compose.yml +++ b/docker/compose.yml @@ -1,29 +1,27 @@ version: "3.9" name: metal-kompanion + networks: - komnet: - driver: bridge - internal: true + komnet: {} # runner ↔ tor ↔ ollama + netpub: {} # egress to internet for tor + ollama services: - # Local model host - ollama: - image: ollama/ollama:latest - restart: unless-stopped - ports: ["127.0.0.1:11434:11434"] - volumes: - - ollama:/root/.ollama - networks: [komnet] - - # TOR proxy (SOCKS5) tor: image: dperson/torproxy restart: unless-stopped command: -a 0.0.0.0 - ports: ["127.0.0.1:9050:9050"] - networks: [komnet] + ports: ["127.0.0.1:9051:9051"] # optional host exposure + networks: [komnet, netpub] + + ollama: + image: ollama/ollama:latest + restart: unless-stopped + ports: ["127.0.0.1:11435:11435"] # expose to host for tools if desired + volumes: + - ollama:/root/.ollama # persist models once + - /home/kompanion/ollama-modelfiles:/modelfiles # your custom Modelfiles/LoRA + networks: [komnet, netpub] # can reach registry.ollama.ai - # Companion runner (Python) — reads tasks.jsonl, writes journal/ledger runner: image: python:3.11-slim restart: unless-stopped @@ -32,9 +30,9 @@ services: XDG_STATE_HOME: /state XDG_CONFIG_HOME: /config XDG_CACHE_HOME: /cache - # Route all egress through TOR by default (except localhost) - ALL_PROXY: socks5h://tor:9050 - NO_PROXY: 127.0.0.1,localhost + ALL_PROXY: socks5h://tor:9051 + NO_PROXY: ollama,localhost,127.0.0.1 + OLLAMA_BASE: http://ollama:11435 # talk to container by DNS name depends_on: [ollama, tor] volumes: - /home/kompanion/.local/state/kompanion:/state/kompanion @@ -45,4 +43,4 @@ services: networks: [komnet] volumes: - ollama: + ollama: {} diff --git a/runtime/kom_runner.py b/runtime/kom_runner.py index b2ccd3c..0eb7559 100755 --- a/runtime/kom_runner.py +++ b/runtime/kom_runner.py @@ -1,3 +1,3 @@ #!/usr/bin/env python3 -import time -while True: time.sleep(3600) +base = os.environ.get("OLLAMA_BASE", "http://ollama:11434") +url = f"{base}/api/generate"