ramalama-sandbox-goose(1)
๐ ramalama-sandbox-goose ๐
okay bestie, welcome to ramalama-sandbox-goose(1) from the General Commands Manual ๐
this is the one where we run Goose in a lil sandbox, and it's lowkey iconic. sit down, hydrate, let's go โจ
๐ธ NAME ๐ธ
ramalama-sandbox-goose โ run Goose in a sandbox, backed by a local AI Model ๐ฆ
๐ซ SYNOPSIS ๐ซ
ramalama sandbox goose [options] [model ...]
๐ DESCRIPTION ๐
So basically: we run Goose inside a container, and we hook it up to a local model server that's also running in a container. Goose uses that model for reasoning and for tool calling. cute, efficient, no notes ๐ซถ
Now here's the model-resolution tea, and it's important so pay attention bestie:
- One model specified? The server just loads that model directly. easy.
- No model, but a url is given? The command grabs the list of models from the model server and takes the first one โ or fails without a model. no model, no vibe check, we fail.
- Multiple models specified? The server starts up in router mode, using llama.cpp's
--models-dir, dynamically loading and unloading models. main character energy, models in and out ๐ฅ - No models and no url? The default
http://localhost:{port}is used to get the first model. - And if there's no server or no model at all? It falls back to starting a model server in router mode where all the GGUF models in the store get served. periodt.
Use --prompt to pass instructions for non-interactive processing. Commands may also be passed via stdin. ๐
And here's the container situation: if the url is not given, then two containers get started โ a model server (llama-server) and the agent container. They talk to each other via container networking. When the agent session exits, the model server container is automatically stopped and removed ๐งนโจ Otherwise, only the agent container starts, using the given url for the openai compatible model server.
โจ OPTIONS โจ
๐ --api-key
OpenAI-compatible API key. Can also be set via the RAMALAMA_API_KEY environment variable.
๐ --authfile=path
Path to the authentication file for OCI registries.
๐ฎ --backend=auto | vulkan | rocm | cuda | sycl | openvino | cann | musa
GPU backend to use for inference (default: auto).
Available backends depend on the detected GPU hardware. ๐
auto (default): automatically selects the preferred backend based on your GPU:
- AMD GPUs:
vulkan(Linux/macOS) orrocm(WSL2) - NVIDIA GPUs:
cuda;vulkanavailable as explicit option - Intel GPUs:
vulkan(Linux/macOS) orsycl(WSL2);openvinoavailable as explicit option - Ascend NPUs:
cann - MUSA GPUs:
musa - No GPU:
vulkan(CPU fallback)
Platform-specific behavior:
- On Linux/macOS, Vulkan provides broad compatibility and is preferred for AMD and Intel GPUs
- On WSL2, Vulkan is a poor default, so vendor-specific backends (
rocm,sycl) are preferred. It remains available, and--backend=vulkanstill selects it. This covers both Windows, where containers run in the WSL2-backed machine, and ramalama running inside a WSL2 distro, which otherwise looks like Linux
Explicit backend selection:
vulkan: Use Vulkan-based inference (compatible with AMD, NVIDIA, Intel, and CPU)rocm: Use AMD ROCm backend (AMD GPUs only)cuda: Use NVIDIA CUDA backend (NVIDIA GPUs only)sycl: Use Intel SYCL/oneAPI backend (Intel GPUs only)openvino: Use Intel OpenVINO backend (Intel GPUs only); usesquay.io/ramalama/openvinocann: Use Huawei CANN backend (Ascend NPUs only); usesquay.io/ramalama/cannmusa: Use Moore Threads MUSA backend (MUSA GPUs only); usesquay.io/ramalama/musa
Available choices: the allowed values for --backend are dynamically determined based on your detected GPU hardware. For example, on a system with an AMD GPU, only auto, vulkan, and rocm are available. no inventing options that aren't there, bestie ๐
Configuration: the default can be overridden in the ramalama.conf file or via the RAMALAMA_BACKEND environment variable.
Examples:
# Use auto-detection (default)
ramalama sandbox goose granite
# Force Vulkan backend
ramalama sandbox goose --backend vulkan granite
# Force ROCm backend on AMD GPU
ramalama sandbox goose --backend rocm granite
โป๏ธ --cache-reuse=BYTES
Minimum chunk size (in bytes) to attempt reusing from the cache via KV shifting. When omitted, llama-server uses its built-in default.
๐ง --ctx-size, -c
Size of the prompt context. This option is also available as --max-model-len. Applies to llama.cpp and vllm regardless of alias (default: 0, 0 = loaded from model).
๐ --device
Add a host device to the container. Optional permissions parameter can be used to specify device permissions by combining r for read, w for write, and m for mknod(2).
Example: --device=/dev/dri/renderD128:/dev/xvdc:rwm
The device specification is passed directly to the underlying container engine. See documentation of the supported container engine for more information.
Pass --device=none to explicitly add no device to the container, e.g., for running a CPU-only performance comparison. ๐
๐ ๏ธ --engine-args="args"
Add args to the podman or docker invocation (before the container image), after RamaLama-generated options and model bind mounts. The option may be specified multiple times; each value is shell-split and all tokens are passed to the engine in order. Use for extra --mount flags (for example multimodal projector files) or other engine-specific options. Shell-quoting rules match --runtime-args.
๐ --env=
Set environment variables inside the container.
This option allows arbitrary environment variables that are available for the process to be launched inside the container. If an environment variable is specified without a value, the container engine checks the host environment for a value and sets the variable only if it is set on the host. iykyk.
๐ชฟ --goose-image=IMAGE
Goose container image.
โ --help, -h
Show this help message and exit.
๐ --host="127.0.0.1"
IP address for the model server to listen on. Defaults to "127.0.0.1", so the served model is only reachable from the local machine. To expose it on the network, set this to a wildcard address such as "0.0.0.0" (IPv4) or "::" (dual-stack). ๐
bestie, "only reachable from the local machine" is the safe default for a reason. if you go wildcard, that's on you ๐
๐ผ๏ธ --image=IMAGE
OCI container image to run with specified AI model. RamaLama defaults to using images based on the accelerator it discovers and the selected --backend. For example: quay.io/ramalama/ramalama. See the table below for all default images. The default image tag is based on the minor version of the RamaLama package. Version 0.25.0 of RamaLama pulls an image with a :0.25 tag from the quay.io/ramalama OCI repository. The --image option overrides this default.
The default can be overridden in the ramalama.conf file or via the RAMALAMA_IMAGE environment variable. export RAMALAMA_IMAGE=quay.io/ramalama/aiimage:1.2 tells RamaLama to use the quay.io/ramalama/aiimage:1.2 image.
Note: The --backend option provides a higher-level way to select the appropriate image based on GPU type. Use --backend to select vulkan, rocm, cuda, sycl, or openvino backends, which will automatically choose the correct image. Use --image only when you need to override the image selection entirely.
Accelerated images:
- Backend / Accelerator
CPU, Vulkanโ Imagequay.io/ramalama/ramalama - Backend / Accelerator
ROCm (AMD)โ Imagequay.io/ramalama/rocm - Backend / Accelerator
CUDA (NVIDIA)โ Imagequay.io/ramalama/cuda - Backend / Accelerator
Intel GPU (sycl)โ Imagequay.io/ramalama/intel-gpu - Backend / Accelerator
Intel GPU (openvino)โ Imagequay.io/ramalama/openvino - Backend / Accelerator
Asahi (Apple Silicon)โ Imagequay.io/ramalama/asahi - Backend / Accelerator
CANN (Ascend)โ Imagequay.io/ramalama/cann - Backend / Accelerator
MUSA (Moore Threads)โ Imagequay.io/ramalama/musa
Upstream llama.cpp "full" images from ghcr.io/ggml-org/llama.cpp are also supported. RamaLama automatically detects the image type and adjusts the container CLI accordingly. ๐ค
ramalama sandbox goose --image ghcr.io/ggml-org/llama.cpp:full-vulkan MODEL
๐ฏ --keep-groups
pass --group-add keep-groups to podman (default: False) If GPU device on host system is accessible to user via group access, this option leaks the groups into the container.
๐ --logfile=path
Log output to a file.
๐ข --max-tokens=integer
Maximum number of tokens to generate. Set to 0 for unlimited output (default: 0). This parameter is mapped to the appropriate runtime-specific parameter:
- llama.cpp:
-nparameter - MLX:
--max-tokensparameter - vLLM:
--max-model-lenparameter (mapped viactx_size)
๐งช --model-draft
A draft model is a smaller, faster model that helps accelerate the decoding process of larger, more complex models, like Large Language Models (LLMs). It works by generating candidate sequences of tokens that the larger model then verifies and refines. This approach, often referred to as speculative decoding, can significantly improve the speed of inferencing by reducing the number of times the larger model needs to be invoked. ๐๏ธ๐จ
Use --runtime-args to pass the other draft model related parameters. Make sure the sampling parameters like top_k on the web UI are set correctly.
๐๏ธ --models-max=integer
Maximum number of models to load concurrently in router mode (default: 4). Only used when invoked in router mode (zero or multiple models).
๐ท๏ธ --name, -n
Name of the container to run the Model in.
๐งฎ --ncmoe
Keep the Mixture of Experts (MoE) weights of the first N layers in the CPU.
๐ --network=none
set the network mode for the container.
๐ --ngl
Number of layers to store in VRAM: a number, auto, or all. When omitted, llama-server defaults to auto.
more coming bestie, don't go anywhere ๐
--oci-runtimeโ override the default OCI runtime that launches the container. Container engines like Podman and Docker each have their own default OCI runtime, and this option makes RamaLama say "not today, bestie" and use yours instead. ๐ On Nvidia-based GPU systems, RamaLama defaults to using thenvidia-container-runtimeโ use this option to override that pick.--port,-pโ the port the AI Model server listens on. It must be available, no cap. If you don't specify one, a free port in the 8080-8180 range gets picked for you, starting with8080. The default can be overridden in theramalama.conffile. ๐--privilegedโ by default, RamaLama containers are unprivileged (=false) and literally cannot, like, modify parts of the operating system. That's because by default a container only gets limited access to devices. A "privileged" container is given the same device access as the user launching the container, except for virtual consoles (/dev/tty\d+) when running in systemd mode (--systemd=always).
A privileged container turns off the security features that isolate the container from the host. Dropped Capabilities, limited devices, read-only mount points, Apparmor/SELinux separation, and Seccomp filters are all disabled. Because of that, the privileged field should almost never be set โ containers can easily break out of confinement. ๐ญ
Containers running in a user namespace (e.g. rootless containers) cannot have more privileges than the user that launched them.
--promptโ instructions for the sandbox agent to process non-interactively.--pull=policyโ the pull image policy. Default ismissing.always: always pull the image and throw an error if the pull fails.missing: only pull the image when it doesn't exist in the local containers storage. Throw an error if no image is found and the pull fails.never: never pull the image, just use the one in local containers storage. Throw an error when no image is found.newer: pull if the image on the registry is newer than the one in local containers storage. An image counts as newer when the digests are different โ comparing time stamps is prone to errors, fr fr. Pull errors are suppressed if a local image was found.
--runtime-args="args"โ add args to the runtime (llama.cpporvllm) invocation.--seed=โ specify a seed instead of letting a random seed handle model interaction. ๐--selinux=trueโ enable SELinux container separation (default:true).--spec-draft-n-max=Nโ maximum number of tokens to draft per speculative decoding step (default:3).--spec-draft-n-min=Nโ minimum number of draft tokens to use for speculative decoding (default:0).--spec-draft-p-min=Pโ minimum speculative decoding probability, greedy threshold (default:0.0).--spec-type=TYPESโ comma-separated list of speculative decoding types to enable. Available types:draft-simple,draft-eagle3,draft-mtp,ngram-simple,ngram-map-k,ngram-map-k4v,ngram-mod,ngram-cache. When omitted, speculative decoding is disabled.--temp="0.8"โ temperature of the response from the AI Model.llama.cppexplains it like this:
The lower the number is, the more deterministic the response. The higher the number is the more creative the response is, but more likely to hallucinate when set too high. Usage: Lower numbers are good for virtual assistants where we need deterministic responses. Higher numbers are good for roleplay or creative tasks like editing stories.
--thinking=BOOLโ enable or disable thinking mode in reasoning models. Maps to--reasoning onor--reasoning offinllama-server. When omitted,llama-serverdefaults toauto.--threads,-tโ maximum number of cpu threads to use. Default is half the cores when more than 4 cores are available; otherwise the default is 4 threads. ๐--tls-verify=trueโ require HTTPS and verify certificates when contacting OCI registries.--url=URLโ the host to send requests to (default:http://localhost:8080).
When the URL points at localhost (the host's loopback, like a ramalama serve container or any local OpenAI-compatible process), the agent container is wired to reach that loopback server without needing it exposed on a container-reachable interface. On native Linux the agent shares the host network namespace and reaches the server directly as localhost. On VM-backed engines (podman machine / Docker Desktop on macOS and Windows) the localhost host is rewritten to host.containers.internal / host.docker.internal, which the VM's proxy forwards to the host's loopback. โจ
--webui=on | offโ enable or disable the web UI for the served model (enabled by default). When set toon(the default), the web interface is properly initialized. When set tooff, the--no-webuioption is passed to thellama-servercommand to disable the web interface.--workdir,-wโ local directory to mount into the sandbox container at/work.
๐ EXAMPLES ๐
Run the Goose agent with default settings:
ramalama sandbox goose qwen3:4b
Run the Goose agent with a custom image:
ramalama sandbox goose --goose-image ghcr.io/aaif-goose/goose:1.27.1 qwen3:4b
Turn off thinking mode in the model the agent is connecting to (may result in faster responses):
ramalama sandbox goose --thinking=off qwen3:4b
Start an interactive session with access to a local directory:
ramalama sandbox goose -w ./src qwen3:4b
Request the agent to perform actions non-interactively:
ramalama sandbox goose -w ./src qwen3:4b --prompt "Please analyze the source code in the current directory"
Send instructions to the agent via stdin:
echo "What is the speed of light in meters per second?" | ramalama sandbox goose qwen3:4b
๐ SEE ALSO ๐
ramalama(1), ramalama-run(1), ramalama-serve(1), ramalama-sandbox(1)
๐ฆ HISTORY ๐ฆ
Mar 2026, Originally compiled by Mike Bonnet <mikeb@redhat.com>
and that's the whole page, bestie!! ๐ this one is ramalama-sandbox-goose(1) โ compiled Mar 2026, original author Mike Bonnet โ and you read it all the way to the bottom, which is genuinely main character energy. go forth and sandbox responsibly, periodt. ๐โจ
๐ฆ where this page comes from
- fedora 43: ramalama 0.25.0-1.fc43 ยท MIT
- fedora 44: ramalama 0.25.0-1.fc44 ยท MIT
- nixpkgs unstable: ramalama 0.25.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms