Connect to llama-server and Strata
Ports on this site: llama-server 127.0.0.1:8080(/v1), Strata :8083, vLLM:8000. Model placeholderqwen — replace it with the id fromGET /v1/models. API key placeholderlocal-not-a-secret when the client refuses an empty field.
- curl /v1/models on the inference server before you debug the harness.
- Do not let a harness download a CUDA llama.cpp "for convenience" on Radeon.
- Exact command lines for our daily driver and Flash stack stay TODO in stacks.yaml.
llama-server :8080
Base for most OpenAI-compatible clients: http://127.0.0.1:8080/v1. Daily driver stack: Qwen3.6-35B-A3B on llama.cpp Vulkan.
curl -s http://127.0.0.1:8080/v1/models
curl -s http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer local-not-a-secret' \
-d '{"model":"qwen","messages":[{"role":"user","content":"Reply with the single word READY and nothing else."}],"max_tokens":8}'
llama-server default in llama.cpp docs is 8080. Exact daily-driver flags stay TODO.
Strata :8083
Base for most OpenAI-compatible clients: http://127.0.0.1:8083/v1. Fast-agent stack: Qwen 3.8 Flash on Strata.
curl -s http://127.0.0.1:8083/v1/models
curl -s http://127.0.0.1:8083/v1/chat/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer local-not-a-secret' \
-d '{"model":"qwen","messages":[{"role":"user","content":"Reply with the single word READY and nothing else."}],"max_tokens":8}'
Strata port 8083 is this site’s convention for the fast-agent stack. Exact serve flags stay TODO.
Agent harnesses
Hermes Agent
Dedicated agent CLI/desktop on top of local Qwen — not a dozen chat bridges.
hermes config (custom provider)# Hermes custom / OpenAI-compatible provider.
# Default probe is :8080. For Strata, set this URL or add detect_ports: [8080].
# Re-check field names on the live providers + local-models pages if a key 404s.
model:
default: qwen # must match llama-server --alias / GET /v1/models id
providers:
custom:
base_url: http://127.0.0.1:8080/v1
# api_key is optional on custom; OPENAI_API_KEY is only for provider openai-api
# local_runtime.backend: auto | cuda | metal | vulkan | hip | cpu
# auto prefers Vulkan on AMD. Do not take the CUDA managed download on a Radeon.
# Docs require context ≥ 65536 or Hermes rejects the model at startup.
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only. 64K context minimum is documented.
hermes config (custom provider)# Hermes custom / OpenAI-compatible provider.
# Default probe is :8080. For Strata, set this URL or add detect_ports: [8083].
# Re-check field names on the live providers + local-models pages if a key 404s.
model:
default: qwen # must match llama-server --alias / GET /v1/models id
providers:
custom:
base_url: http://127.0.0.1:8083/v1
# api_key is optional on custom; OPENAI_API_KEY is only for provider openai-api
# local_runtime.backend: auto | cuda | metal | vulkan | hip | cpu
# auto prefers Vulkan on AMD. Do not take the CUDA managed download on a Radeon.
# Docs require context ≥ 65536 or Hermes rejects the model at startup.
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only. 64K context minimum is documented.
Agent harnesses
OpenHands
Multi-step coding agent in a browser or CLI. Needs a capable instruction-tuned model.
environment# Docs: LLM_BASE_URL + openai/<id> prefix. Docker must use host.docker.internal.
export LLM_BASE_URL=http://127.0.0.1:8080/v1
export LLM_API_KEY=local-llm
export LLM_MODEL=openai/qwen
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
environment# Docs: LLM_BASE_URL + openai/<id> prefix. Docker must use host.docker.internal.
export LLM_BASE_URL=http://127.0.0.1:8083/v1
export LLM_API_KEY=local-llm
export LLM_MODEL=openai/qwen
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Agent harnesses
Aider
CLI coding in the repo you already have. Prefix the model with openai/.
# --openai-api-key must be non-empty even locally.
aider --openai-api-base http://127.0.0.1:8080/v1 \
--openai-api-key local-not-a-secret \
--model openai/qwen
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
# --openai-api-key must be non-empty even locally.
aider --openai-api-base http://127.0.0.1:8083/v1 \
--openai-api-key local-not-a-secret \
--model openai/qwen
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Agent harnesses
Cline
In-editor agent that asks before it runs commands.
Provider: OpenAI Compatible
Base URL: http://127.0.0.1:8080/v1
API Key: local-not-a-secret
Model ID: qwen
# Do not append /chat/completions to the base URL.
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
Provider: OpenAI Compatible
Base URL: http://127.0.0.1:8083/v1
API Key: local-not-a-secret
Model ID: qwen
# Do not append /chat/completions to the base URL.
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Agent harnesses
Roo Code
In-editor agent with filesystem and terminal tools.
Provider: OpenAI Compatible
Base URL: http://127.0.0.1:8080/v1
API Key: local-not-a-secret
Model ID: qwen
# Roo docs: native OpenAI tool calling is required.
# Official local-models page names Ollama and LM Studio specifically.
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
Provider: OpenAI Compatible
Base URL: http://127.0.0.1:8083/v1
API Key: local-not-a-secret
Model ID: qwen
# Roo docs: native OpenAI tool calling is required.
# Official local-models page names Ollama and LM Studio specifically.
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Agent harnesses
Continue
Chat, edit, apply, and autocomplete roles in the editor.
config.yaml# openai provider — apiBase includes /v1
name: Local llama-server
provider: openai
model: qwen
apiBase: http://127.0.0.1:8080/v1
apiKey: local-not-a-secret
# capabilities: [tool_use] # only if the server actually implements tools
# Native llama.cpp provider (docs: apiBase *without* /v1):
# provider: llama.cpp
# apiBase: http://127.0.0.1:8080
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
config.yaml# openai provider — apiBase includes /v1
name: Local Strata
provider: openai
model: qwen
apiBase: http://127.0.0.1:8083/v1
apiKey: local-not-a-secret
# capabilities: [tool_use] # only if the server actually implements tools
# Native llama.cpp provider (docs: apiBase *without* /v1):
# provider: llama.cpp
# apiBase: http://127.0.0.1:8083
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Agent harnesses
OpenCode
CLI agent that you point at llama-server via opencode.json.
opencode.json{
"provider": {
"llama": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://127.0.0.1:8080/v1"
},
"models": {
"qwen": {
"limit": { "context": 128000 }
}
}
}
}
}
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only. Docs example uses 128000 for limit.context — set yours to the server -c. Do not invent 262K here.
opencode.json{
"provider": {
"llama": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://127.0.0.1:8083/v1"
},
"models": {
"qwen": {
"limit": { "context": 128000 }
}
}
}
}
}
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only. Docs example uses 128000 for limit.context — set yours to the server -c. Do not invent 262K here.
Agent harnesses
Goose
Desktop/CLI agent with recipes. Local path is OpenAI-compatible or Ollama.
# OPENAI_HOST is the host root, not a BASE_URL. Default path is v1/chat/completions.
export OPENAI_HOST=http://127.0.0.1:8080
export OPENAI_BASE_PATH=v1/chat/completions
export OPENAI_API_KEY=not-needed
export GOOSE_MODEL=qwen
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
# OPENAI_HOST is the host root, not a BASE_URL. Default path is v1/chat/completions.
export OPENAI_HOST=http://127.0.0.1:8083
export OPENAI_BASE_PATH=v1/chat/completions
export OPENAI_API_KEY=not-needed
export GOOSE_MODEL=qwen
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Agent harnesses
Claude Code
Anthropic’s coding CLI. Local attach is “where supported”: a gateway or a server that implements /v1/messages.
# Official path is Anthropic Messages. The client appends /v1/messages — do not put /v1 on the base.
# llama.cpp documents /v1/messages. We have not measured this pair on the rig.
export ANTHROPIC_BASE_URL=http://127.0.0.1:8080
export ANTHROPIC_AUTH_TOKEN=local-not-a-secret
claude --model qwen
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only. Local attach is “where supported.” Completeness of Claude Code tools against llama.cpp Messages is not documented here.
# Official path is Anthropic Messages. The client appends /v1/messages — do not put /v1 on the base.
# llama.cpp documents /v1/messages. We have not measured this pair on the rig.
export ANTHROPIC_BASE_URL=http://127.0.0.1:8083
export ANTHROPIC_AUTH_TOKEN=local-not-a-secret
claude --model qwen
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only. Local attach is “where supported.” Completeness of Claude Code tools against llama.cpp Messages is not documented here.
Agent harnesses
Codex CLI
OpenAI’s coding CLI against a local server that implements POST /v1/responses.
~/.codex/config.tomlmodel = "qwen"
model_provider = "llama_local"
[model_providers.llama_local]
name = "llama-server"
base_url = "http://127.0.0.1:8080/v1"
wire_api = "responses"
env_key = "LOCAL_NOT_A_SECRET"
Current official wire_api is responses only. Reserved provider ids: openai, ollama, lmstudio. llama.cpp documents POST /v1/responses.
~/.codex/config.tomlmodel = "qwen"
model_provider = "llama_local"
[model_providers.llama_local]
name = "Strata"
base_url = "http://127.0.0.1:8083/v1"
wire_api = "responses"
env_key = "LOCAL_NOT_A_SECRET"
Current official wire_api is responses only. llama.cpp documents POST /v1/responses. Strata Responses support is not documented — treat as TODO.
Agent harnesses
Cursor
Chat/Agent against a custom OpenAI-compatible URL where the override is supported.
Settings → Models
OpenAI API Key: local-not-a-secret # required to save the override
Override OpenAI Base URL: https://your-reachable-host/v1
Model: qwen
# Forum staff (checked 2026-10-12): requests still go through Cursor’s backend,
# so http://127.0.0.1:8080 often fails. A public HTTPS URL is the workaround
# they describe — that is not air-gapped. Tab/autocomplete stay on Cursor models.
Not a first-class localhost attach. local_ok is false; this is hybrid-shaped even when weights are local.
Settings → Models
OpenAI API Key: local-not-a-secret # required to save the override
Override OpenAI Base URL: https://your-reachable-host/v1
Model: qwen
# Forum staff (checked 2026-10-12): requests still go through Cursor’s backend,
# so http://127.0.0.1:8083 often fails. A public HTTPS URL is the workaround
# they describe — that is not air-gapped. Tab/autocomplete stay on Cursor models.
Not a first-class localhost attach. local_ok is false; this is hybrid-shaped even when weights are local.
Agent harnesses
OpenClaw
Message the home agent from apps you already use. Already documented on this site.
~/.openclaw/openclaw.json# ~/.openclaw/openclaw.json — attach keys from our earlier notes; re-check live docs.
{
"models": {
"providers": {
"llama": {
"baseUrl": "http://127.0.0.1:8080/v1",
"apiKey": "local-not-a-secret",
"models": [{ "id": "qwen" }]
}
}
}
}
# vLLM path (different port): openai-completions at http://127.0.0.1:8000/v1
# Set VLLM_API_KEY even if dummy. Follow OpenClaw allowlists — do not bind to the internet for a first test.
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only. Exact JSON shape: re-verify attach keys on https://docs.openclaw.ai/
~/.openclaw/openclaw.json# ~/.openclaw/openclaw.json — attach keys from our earlier notes; re-check live docs.
{
"models": {
"providers": {
"llama": {
"baseUrl": "http://127.0.0.1:8083/v1",
"apiKey": "local-not-a-secret",
"models": [{ "id": "qwen" }]
}
}
}
}
# vLLM path (different port): openai-completions at http://127.0.0.1:8000/v1
# Set VLLM_API_KEY even if dummy. Follow OpenClaw allowlists — do not bind to the internet for a first test.
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only. Exact JSON shape: re-verify attach keys on https://docs.openclaw.ai/
Chat UIs
Open WebUI
Browser chat, optional RAG, multi-user. Not an agent loop unless you add tools.
Admin → Settings → Connections
URL: http://127.0.0.1:8080/v1
API Key: local-not-a-secret
# Docs show the same pattern with LM Studio at http://localhost:1234/v1.
# Docker: use host.docker.internal, not 127.0.0.1.
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
Admin → Settings → Connections
URL: http://127.0.0.1:8083/v1
API Key: local-not-a-secret
# Docs show the same pattern with LM Studio at http://localhost:1234/v1.
# Docker: use host.docker.internal, not 127.0.0.1.
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Chat UIs
LM Studio
Local chat plus a /v1 others can call. Can also be the client against llama-server — check current UI; server mode is the documented OpenAI path.
# Documented OpenAI-compat path: LM Studio *serves* on port 1234.
# Other clients call: http://127.0.0.1:1234/v1
#
# Pointing LM Studio *at* our llama-server :8080 (http://127.0.0.1:8080/v1) is a current-UI check,
# not the documented server recipe.
LM Studio’s own engine on Linux/Windows AMD is a separate stack from this site’s llama.cpp Vulkan daily driver.
# Documented OpenAI-compat path: LM Studio *serves* on port 1234.
# Other clients call: http://127.0.0.1:1234/v1
#
# Pointing LM Studio *at* our Strata :8083 (http://127.0.0.1:8083/v1) is a current-UI check,
# not the documented server recipe.
LM Studio’s own engine on Linux/Windows AMD is a separate stack from this site’s llama.cpp Vulkan daily driver.
Chat UIs
Jan
Local chat and a loopback /v1 for other tools.
# Documented desktop API server: http://127.0.0.1:1337/v1
# Prefix /v1. Optional API key in Settings.
#
# Pointing Jan *at* our llama-server :8080 (http://127.0.0.1:8080/v1) is not documented on the
# API-server page we opened — treat as check the current UI.
Jan’s llama.cpp backend on AMD / HIP gfx1201 is not documented on that page.
# Documented desktop API server: http://127.0.0.1:1337/v1
# Prefix /v1. Optional API key in Settings.
#
# Pointing Jan *at* our Strata :8083 (http://127.0.0.1:8083/v1) is not documented on the
# API-server page we opened — treat as check the current UI.
Jan’s llama.cpp backend on AMD / HIP gfx1201 is not documented on that page.
Chat UIs
SillyTavern
Roleplay / character chat, not a coding agent.
API: Chat Completion
Source: Custom / OpenAI Compatible
Server URL: http://127.0.0.1:8080/v1
API Key: local-not-a-secret
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
API: Chat Completion
Source: Custom / OpenAI Compatible
Server URL: http://127.0.0.1:8083/v1
API Key: local-not-a-secret
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Chat UIs
LibreChat
One UI for local /v1 and cloud providers.
librechat.yaml# librechat.yaml — endpoints.custom
endpoints:
custom:
- name: "llama-server"
apiKey: "${LLAMA_KEY}"
baseURL: "http://127.0.0.1:8080/v1"
models:
default: ["qwen"]
fetch: false
# Put LLAMA_KEY=local-not-a-secret in .env (placeholder locally).
# Docker: host.docker.internal, not 127.0.0.1.
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
librechat.yaml# librechat.yaml — endpoints.custom
endpoints:
custom:
- name: "Strata"
apiKey: "${LLAMA_KEY}"
baseURL: "http://127.0.0.1:8083/v1"
models:
default: ["qwen"]
fetch: false
# Put LLAMA_KEY=local-not-a-secret in .env (placeholder locally).
# Docker: host.docker.internal, not 127.0.0.1.
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Chat UIs
AnythingLLM
Docs + chat with a local /v1. RAG-shaped, not a coding agent.
.env# docker/.env.example — generic OpenAI provider
LLM_PROVIDER=generic-openai
GENERIC_OPEN_AI_BASE_PATH=http://127.0.0.1:8080/v1
GENERIC_OPEN_AI_MODEL_PREF=qwen
GENERIC_OPEN_AI_API_KEY=sk-123abc
# GENERIC_OPEN_AI_MODEL_TOKEN_LIMIT= # set to the server window; do not invent 262K
Exact llama-server flags for our daily driver stay TODO in stacks.yaml. This is the port only.
.env# docker/.env.example — generic OpenAI provider
LLM_PROVIDER=generic-openai
GENERIC_OPEN_AI_BASE_PATH=http://127.0.0.1:8083/v1
GENERIC_OPEN_AI_MODEL_PREF=qwen
GENERIC_OPEN_AI_API_KEY=sk-123abc
# GENERIC_OPEN_AI_MODEL_TOKEN_LIMIT= # set to the server window; do not invent 262K
Exact Strata flags for our rig stay TODO in stacks.yaml. This is the port only.
Chat UIs
llama.cpp built-in web UI
Fastest chat on the daily-driver server. No extra process.
# Same process as /v1. Open http://127.0.0.1:8080
# Disable with: llama-server --no-webui
# Bind 127.0.0.1 unless you mean to share.
Daily-driver context is 262144; exact flags TODO in stacks.yaml.
# not documented — Strata is a different server; do not assume it ships this UI.
# Open the llama-server UI on http://127.0.0.1:8080 instead, or use a chat harness against :8083/v1.
Strata web UI is not documented.
Image / video
ComfyUI on ROCm
Diffusion workflows on the Radeon — not an LLM harness. Does not speak llama-server /v1.
# AMD AI-ecosystem page: ROCm-enabled PyTorch, then:
python ComfyUI/main.py
# UI: http://127.0.0.1:8188
# Does not speak llama-server http://127.0.0.1:8080/v1 or Strata. Instinct Docker tags are not R9700 pins.
HIP/ROCm PyTorch, not llama.cpp Vulkan. Consumer gfx1201 support follows the PyTorch wheel.
# AMD AI-ecosystem page: ROCm-enabled PyTorch, then:
python ComfyUI/main.py
# UI: http://127.0.0.1:8188
# Does not speak llama-server http://127.0.0.1:8083/v1 or Strata. Instinct Docker tags are not R9700 pins.
HIP/ROCm PyTorch, not llama.cpp Vulkan. Consumer gfx1201 support follows the PyTorch wheel.