ramalama-sandbox-pi(1)
๐ ramalama-sandbox-pi(1) โ General Commands Manual ๐
okay so this is part 1 of 2, bestie. buckle up. ๐
NAME โจ
ramalama-sandbox-pi โ run Pi in a sandbox, backed by a local AI Model ๐ฆ
SYNOPSIS ๐
ramalama sandbox pi [options] [model ...]
DESCRIPTION ๐ธ
Okay so picture this: you're running Pi in a container, and it's connected to a local model server that's also in a container. Pi uses that model for reasoning and tool calling. It's giving main character energy. ๐
When you specify a single model, the server loads that model directly. When no model and the url is given, the command gets the list of models from the model server and takes the first model or fails without a model. When multiple models are specified, the server starts in router mode using llama.cpp's --models-dir, dynamically loading and unloading models. When no models and no url, the default http://localhost:{port} is used to get the first model. If there is no server or no model then it falls back to start a model server in router mode where all GGUF models in the store are served.
Use --prompt to pass instructions for non-interactive processing. Commands may also be passed via stdin.
Two containers are started: a model server (llama-server) and the agent container. They communicate via container networking. When the agent session exits, the model server container is automatically stopped and removed.
If the url is not given then two containers are started: a model server (llama-server) and the agent container. They communicate 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 theRAMALAMA_API_KEYenvironment 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)
- AMD GPUs:
- 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
--backendare dynamically determined based on your detected GPU hardware. For example, on a system with an AMD GPU, onlyauto,vulkan, androcmare available. - Configuration: The default can be overridden in the
ramalama.conffile or via theRAMALAMA_BACKENDenvironment variable. - Examples:
# Use auto-detection (default)
ramalama sandbox pi granite
# Force Vulkan backend
ramalama sandbox pi --backend vulkan granite
# Force ROCm backend on AMD GPU
ramalama sandbox pi --backend rocm granite
--cache-reuse=BYTESโ Minimum chunk size (in bytes) to attempt reusing from the cache via KV shifting. When omitted,llama-serveruses its built-in default. ๐--ctx-size,-cโ size of the prompt context. This option is also available as--max-model-len. Applies tollama.cppandvllmregardless 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 combiningrfor read,wfor write, andmformknod(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.
- Example:
--engine-args="args"โ Add args to thepodmanordockerinvocation (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--mountflags (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.
--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). ๐--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. Version0.25.0of RamaLama pulls an image with a:0.25tag from thequay.io/ramalamaOCI repository. The--imageoption overrides this default. ๐ผ๏ธ- The default can be overridden in the
ramalama.conffile or via theRAMALAMA_IMAGEenvironment variable.export RAMALAMA_IMAGE=quay.io/ramalama/aiimage:1.2tells RamaLama to use thequay.io/ramalama/aiimage:1.2image. - Note: The
--backendoption provides a higher-level way to select the appropriate image based on GPU type. Use--backendto selectvulkan,rocm,cuda,sycl, oropenvinobackends, which will automatically choose the correct image. Use--imageonly when you need to override the image selection entirely. - Accelerated images:
- CPU, Vulkan โ
quay.io/ramalama/ramalama - ROCm (AMD) โ
quay.io/ramalama/rocm - CUDA (NVIDIA) โ
quay.io/ramalama/cuda - Intel GPU (sycl) โ
quay.io/ramalama/intel-gpu - Intel GPU (openvino) โ
quay.io/ramalama/openvino - Asahi (Apple Silicon) โ
quay.io/ramalama/asahi - CANN (Ascend) โ
quay.io/ramalama/cann - MUSA (Moore Threads) โ
quay.io/ramalama/musa
- CPU, Vulkan โ
- Upstream
llama.cpp"full" images fromghcr.io/ggml-org/llama.cppare also supported. RamaLama automatically detects the image type and adjusts the container CLI accordingly. - Example:
ramalama sandbox pi --image ghcr.io/ggml-org/llama.cpp:full-vulkan MODEL
- The default can be overridden in the
--keep-groupsโ pass--group-add keep-groupsto 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 to0for 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-argsto pass the other draft model related parameters. Make sure the sampling parameters liketop_kon the web UI are set correctly.
- Use
--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, orall. When omitted,llama-serverdefaults toauto. ๐ฎ--oci-runtimeโ bestie, this overrides the default OCI runtime that launches the container. Container engines like Podman and Docker each have their own default OCI runtime they love to use, and with this option RamaLama just goes nope, we're using mine and overrides those defaults.
On Nvidia-based GPU systems, RamaLama defaults to using the nvidia-container-runtime. Use this option to override that selection. ๐
--pi-image=IMAGEโ the Pi agent container image. Default isquay.io/ramalama/pi-agenttagged for the RamaLama minor release. โจ--port,-pโ the port for the AI Model server to listen on. It must be available, no cap. If you don't specify one, a free port in the8080-8180range gets picked, starting with8080.
You can override the default in the ramalama.conf file. ๐
--privilegedโ okay so by default, RamaLama containers are unprivileged (=false) and literally cannot, for example, modify parts of the operating system. Why? Because a container is only allowed limited access to devices by default. A "privileged" container gets the same access to devices as the user launching the container, with the exception of 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. And because of those disabled security features, 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. periodt.
--promptโ instructions for the sandbox agent to process non-interactively. iykyk. ๐ค--pull=policyโ the pull image policy. Default ismissing. Options, bestie:always: always pull the image and throw an error if the pull fails.missing: only pull the image when it does not exist in the local containers storage. Throw an error if no image is found and the pull fails.never: never pull the image but use the one from the 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 the local containers storage. An image is considered to be newer when the digests are different. Comparing the time stamps is prone to errors. Pull errors are suppressed if a local image was found. ๐
--runtime-args="args"โ add args to the runtime (llama.cpporvllm) invocation. go off. ๐ฅ--seed=โ specify a seed rather than using a random seed for 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.cpp explains 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. The default is to use 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, e.g. a ramalama serve container or any local OpenAI-compatible process), the agent container is wired to reach that loopback server without requiring it to be 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 to"on"(the default), the web interface is properly initialized. When set to"off", 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 Pi agent with default settings:
ramalama sandbox pi qwen3:4b
Run the Pi agent in router mode (serve all models in the store):
ramalama sandbox pi
Run the Pi agent with multiple models in router mode:
ramalama sandbox pi qwen3:4b granite-code:3b
Run the Pi agent with a custom image:
ramalama sandbox pi --pi-image myimage:v1 qwen3:4b
Turn off thinking mode in the model the agent is connecting to (may result in faster responses):
ramalama sandbox pi --thinking=off qwen3:4b
Start an interactive session with access to a local directory:
ramalama sandbox pi -w ./src qwen3:4b
Request the agent to perform actions non-interactively:
ramalama sandbox pi -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 pi qwen3:4b
๐ SEE ALSO ๐
ramalama(1), ramalama-run(1), ramalama-serve(1), ramalama-sandbox(1)
๐ HISTORY ๐
Jun 2026, originally compiled by Brian brian@ramalama โจmailto:brian@ramalamaโฉ
and that's the whole page bestie, you ate that ๐ซถ this gorgeous thing lives at ramalama-sandbox-pi(1) and it was written down in Jun 2026 โ iconic behavior, no notes, go run your sandbox ๐โจ
๐ฆ 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