paperclipai/paperclip · error
Configured OpenCode model is unavailable on the remote…
Error message
Configured OpenCode model is unavailable on the remote execution target: ${model}. Available models: ${sample}${models.length > 12 ? ", ..." : ""} What it means
Error "Configured OpenCode model is unavailable on the remote execution target: ${model}. Available models: ${sample}${models.length > 12 ? ", ..." : ""}" thrown in paperclipai/paperclip.
Solutions
- Choose one of the listed available models for adapterConfig.model.
- Install or enable the configured model on the remote execution target.
When it happens
Trigger: Thrown at packages/adapters/opencode-local/src/server/execute.ts:159 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-08-18).
Data as JSON: /api/errors/86fbdd6904d06ac2.
Report an issue: GitHub.
Appendix: source
Thrown at packages/adapters/opencode-local/src/server/execute.ts:161
return;
}
if ((probe.exitCode ?? 1) !== 0) {
const detail = firstNonEmptyLine(probe.stderr) || firstNonEmptyLine(probe.stdout);
console.warn(
`[opencode-local] Remote \`opencode models\` could not run for "${model}"${
detail ? ` (${detail})` : ""
}; proceeding with the configured model.`,
);
return;
}
const models = parseOpenCodeModelsOutput(probe.stdout);
if (models.length === 0) {
console.warn(
`[opencode-local] Remote \`opencode models\` returned no models; proceeding with the configured model "${model}".`,
);
return;
}
if (!models.some((entry) => entry.id === model)) {
const sample = models.slice(0, 12).map((entry) => entry.id).join(", ");
throw new Error(
`Configured OpenCode model is unavailable on the remote execution target: ${model}. Available models: ${sample}${models.length > 12 ? ", ..." : ""}`,
);
}
}
async function ensureOpenCodeSkillsInjected(
onLog: AdapterExecutionContext["onLog"],
skillsEntries: Array<{ key: string; runtimeName: string; source: string }>,
desiredSkillNames?: string[],
skillsHome = resolveOpenCodeSkillsHome({}),
) {
await fs.mkdir(skillsHome, { recursive: true });
const desiredSet = new Set(desiredSkillNames ?? skillsEntries.map((entry) => entry.key));View on GitHub (pinned to 3f1d897a7c)