From 77f3b175ef9c7359dc70beba5ee2a80cae40e7a1 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 15 Nov 2025 21:29:19 +0200 Subject: [PATCH] Support restricted one-off uses of language models --- .local/bin/podllama | 52 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/.local/bin/podllama b/.local/bin/podllama index 947b0d0..ae723dc 100755 --- a/.local/bin/podllama +++ b/.local/bin/podllama @@ -3,7 +3,53 @@ set -euo pipefail IFS=$'\n\t' +if ! PARSED_OPTIONS=$(getopt -o "" --long "offline,volatile" --name "$0" -- "$@"); then + echo "Error parsing options." >&2 + exit 1 +fi + +eval set -- "$PARSED_OPTIONS" + +offline=false +volatile=false + +while true; do + case "$1" in + --offline) + offline=true + shift + ;; + --volatile) + volatile=true + shift + ;; + --) + shift + break + ;; + *) + echo "Internal error!" >&2 + exit 1 + ;; + esac +done + mkdir --parents ~/.local/share/ollama/ -pod_id=$(podman run --detach --rm --volume ~/.local/share/ollama/:/root/.ollama ollama:latest) -podman exec --interactive --tty "${pod_id}" ollama "$@" -podman kill "${pod_id}" > /dev/null + +if [[ "true" == "${volatile}" ]]; then + PODMAN=(podman --transient-store) + MOUNTS=() +else + PODMAN=(podman) + MOUNTS=(--volume ~/.local/share/ollama/:/root/.ollama) +fi + +if [[ "true" == "${offline}" ]]; then + NETWORK=(--network none) +else + NETWORK=() +fi + +pod_id=$("${PODMAN[@]}" run --detach --rm "${MOUNTS[@]}" "${NETWORK[@]}" ollama:latest) +"${PODMAN[@]}" exec --interactive --tty "${pod_id}" ollama "$@" +"${PODMAN[@]}" kill "${pod_id}" > /dev/null