summaryrefslogtreecommitdiff
path: root/internal/cli/serve.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-05-01 22:14:37 -1000
committerGitHub <noreply@github.com>2026-05-01 22:14:37 -1000
commit99115d8158137083239c45e5a860b718ff4cefa1 (patch)
tree1bf3bd0505eea79375c67af83c7c5fe8c0f274ff /internal/cli/serve.go
parentc2aa026f6ce1c9e216b99d74f294fc133d5fcddd (diff)
parent50f8fe8c1ff8b82e0bd399e5776e58bda3e57d1c (diff)
Merge pull request #1 from thepeterstone/claude/local-oss-model-agents-MEBqj
Local OSS models as a third runner (epic)
Diffstat (limited to 'internal/cli/serve.go')
-rw-r--r--internal/cli/serve.go25
1 files changed, 22 insertions, 3 deletions
diff --git a/internal/cli/serve.go b/internal/cli/serve.go
index 94f0c5d..5101b81 100644
--- a/internal/cli/serve.go
+++ b/internal/cli/serve.go
@@ -71,10 +71,25 @@ func serve(addr string) error {
APIURL: apiURL,
},
}
-
+
+ localClient := buildLocalLLMClient(cfg.LocalModel, logger)
+ if localClient != nil {
+ runners["local"] = &executor.LocalRunner{
+ Client: localClient,
+ Logger: logger,
+ LogDir: cfg.LogDir,
+ DefaultTemperature: cfg.LocalModel.DefaultTemperature,
+ }
+ logger.Info("local runner registered", "endpoint", cfg.LocalModel.Endpoint, "model", cfg.LocalModel.Model)
+ }
+
pool := executor.NewPool(cfg.MaxConcurrent, runners, store, logger)
- if cfg.GeminiBinaryPath != "" {
- pool.Classifier = &executor.Classifier{GeminiBinaryPath: cfg.GeminiBinaryPath}
+ pool.Classifier = &executor.Classifier{
+ LLM: localClient,
+ GeminiBinaryPath: cfg.GeminiBinaryPath,
+ }
+ if localClient != nil {
+ pool.LLM = localClient
}
pool.RecoverStaleRunning(context.Background())
pool.RecoverStaleQueued(context.Background())
@@ -87,6 +102,10 @@ func serve(addr string) error {
if cfg.WorkspaceRoot != "" {
srv.SetWorkspaceRoot(cfg.WorkspaceRoot)
}
+ if cfg.LocalModel.UseForElaborate() {
+ srv.SetLLM(localClient)
+ logger.Info("elaboration prefers local llm", "endpoint", cfg.LocalModel.Endpoint)
+ }
srv.SetGitHubWebhookConfig(cfg.WebhookSecret, cfg.Projects)
// Register scripts.