plandex-ai/plandex · warning · http
Local model pack %s can't be used on Plandex Cloud
Error message
Local model pack %s can't be used on Plandex Cloud
What it means
When the request supplies a custom ModelPack object with a non-empty LocalProvider while the server runs on Plandex Cloud, the handler rejects it with HTTP 422. Same rationale as built-in packs: custom local-provider packs cannot work in the cloud environment.
Source
Thrown at app/server/handlers/settings.go:130
return
}
if req.ModelPackName != "" {
if mp, builtIn := shared.BuiltInModelPacksByName[req.ModelPackName]; builtIn {
if os.Getenv("IS_CLOUD") != "" && mp.LocalProvider != "" {
msg := fmt.Sprintf("Built-in local model pack %s can't be used on Plandex Cloud", req.ModelPackName)
log.Println(msg)
http.Error(w, msg, http.StatusUnprocessableEntity)
return
}
}
}
if req.ModelPack != nil {
if req.ModelPack.LocalProvider != "" {
msg := fmt.Sprintf("Local model pack %s can't be used on Plandex Cloud", req.ModelPack.Name)
log.Println(msg)
http.Error(w, msg, http.StatusUnprocessableEntity)
return
}
ids := req.ModelPack.ToModelPackSchema().AllModelIds()
for _, id := range ids {
bm, builtIn := shared.BuiltInBaseModelsById[id]
if builtIn && os.Getenv("IS_CLOUD") != "" && bm.IsLocalOnly() {
msg := fmt.Sprintf("Built-in local model %s can't be used on Plandex Cloud", id)
log.Println(msg)
http.Error(w, msg, http.StatusUnprocessableEntity)
return
}
}
}
ctx, cancel := context.WithCancel(r.Context())
var commitMsg stringView on GitHub (pinned to e2d772072e)
Solutions
- Clear the LocalProvider field (set it to "") or use API-hosted providers in the pack before uploading
- Use only cloud-supported providers (OpenAI, Anthropic, etc.) in custom packs
- Run the pack against a self-hosted server if local providers are required
Example fix
// before
{name: "my-pack", localProvider: "ollama", ...}
// after
{name: "my-pack", localProvider: "", ...} Defensive patterns
Strategy: validation
Validate before calling
if os.Getenv("IS_CLOUD") != "" && pack.LocalProvider != "" {
return fmt.Errorf("custom pack %q uses a local provider and is unavailable on cloud", pack.Name)
} Try / catch
resp, err := client.UpdateSettings(ctx, req)
if err != nil {
var apiErr *APIError
if errors.As(err, &apiErr) && apiErr.StatusCode == 422 {
// strip LocalProvider or switch providers before resending
}
return err
} Prevention
- Strip LocalProvider when exporting custom packs for cloud use
- Validate packs in CI against the cloud provider allowlist
- Document provider restrictions in pack templates
When it happens
Trigger: UpdateSettingsHandler called with req.ModelPack != nil, req.ModelPack.LocalProvider != "", and IS_CLOUD set on the server.
Common situations: User exports their local custom pack and uploads it unchanged to a cloud account; migration tooling copies local settings to cloud; template config includes localProvider by default.
Related errors
- Built-in local model pack %s can't be used on Plandex Cloud
- Built-in local model %s can't be used on Plandex Cloud
- refresh failed - create request: %w
- error creating request: %w
- No api keys/credentials provided for models
AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05).
Data as JSON: /api/errors/bb6a90af692be0b4.
Report an issue: GitHub.