straylight: install OpenCode config for local llama.cpp models

Managed /etc/opencode/opencode.json points at straylight:11434 with
the router model ids, Laguna as default, Ornith 1.5 9B as small_model,
and a vision subagent on Qwen3-VL-8B abliterated.
This commit is contained in:
2026-09-16 06:34:41 -07:00
parent 56b233afb6
commit 52859524d7
2 changed files with 68 additions and 0 deletions
+1
View File
@@ -6,5 +6,6 @@
./desktop-light.nix
./desktop-packages-light.nix
./desktop-packages-full.nix
./opencode.nix
];
}
+67
View File
@@ -0,0 +1,67 @@
# OpenCode pointed at straylight's llama.cpp OpenAI-compatible API.
# Managed config lives in /etc/opencode/ (highest OpenCode precedence on Linux).
# llama-server is on straylight:11434; MagicDNS resolves that to loopback here.
{ pkgs, lib, ... }:
let
llamaBase = "http://straylight:11434/v1";
limit = { context = 131072; output = 32768; };
text = name: {
inherit name limit;
modalities = { input = [ "text" ]; output = [ "text" ]; };
};
vision = name: {
inherit name limit;
modalities = { input = [ "text" "image" ]; output = [ "text" ]; };
};
cfg = {
"$schema" = "https://opencode.ai/config.json";
enabled_providers = [ "llama.cpp" ];
model = "llama.cpp/laguna-s-2.1";
small_model = "llama.cpp/ornith-1.5-9b-uncensored";
provider = {
"llama.cpp" = {
npm = "@ai-sdk/openai-compatible";
name = "llama.cpp (straylight)";
options = {
baseURL = llamaBase;
apiKey = "none";
};
models = {
"laguna-s-2.1" = text "Laguna S 2.1";
"qwen3.6-35b-a3b-abliterated" = text "Qwen3.6 35B A3B";
"gemma4-26b-a4b-abliterated" = text "Gemma 4 26B A4B";
"ornith-1.0-35b" = text "Ornith 1.0 35B";
"ornith-1.5-9b-uncensored" = text "Ornith 1.5 9B";
"ornith-1.5-35b-a3b" = text "Ornith 1.5 35B MoE";
"qwen3.8-27b-uncensored" = text "Qwen3.8 27B";
"qwen3-vl-8b-abliterated" = vision "Qwen3-VL 8B";
};
};
};
agent = {
vision = {
description = "Look at images, screenshots, diagrams, UI captures, and other visual artifacts. Use whenever the task needs to see a picture rather than guess from a filename or OCR text.";
mode = "subagent";
model = "llama.cpp/qwen3-vl-8b-abliterated";
color = "accent";
permission = {
edit = "deny";
};
prompt = ''
You are a vision specialist running on Qwen3-VL-8B (abliterated) via llama.cpp.
You receive image paths and/or attached images. Describe what is actually in the image.
Transcribe visible text. Answer the caller's question about the image. Do not invent UI
that is not there. If the image cannot be read, say so and what you would need instead.
You may read files (including images) and run read-only shell commands. Do not edit the
workspace; report findings back to the parent agent.
'';
};
};
};
in
{
environment.etc."opencode/opencode.json".text = builtins.toJSON cfg;
}