summaryrefslogtreecommitdiff
path: root/internal/config/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/config/config.go')
-rw-r--r--internal/config/config.go59
1 files changed, 34 insertions, 25 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index de087d6..afbd12e 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -89,31 +89,39 @@ type ProviderConfig struct {
}
type Config struct {
- DataDir string `toml:"data_dir"`
- DBPath string `toml:"-"`
- LogDir string `toml:"-"`
- DropsDir string `toml:"-"`
- SSHAuthSock string `toml:"ssh_auth_sock"`
- ClaudeBinaryPath string `toml:"claude_binary_path"`
- GeminiBinaryPath string `toml:"gemini_binary_path"`
- ClaudeImage string `toml:"claude_image"`
- GeminiImage string `toml:"gemini_image"`
- MaxConcurrent int `toml:"max_concurrent"`
- ShutdownTimeout time.Duration `toml:"shutdown_timeout"`
- DefaultTimeout string `toml:"default_timeout"`
- ServerAddr string `toml:"server_addr"`
- WebhookURL string `toml:"webhook_url"`
- WorkspaceRoot string `toml:"workspace_root"`
- WebhookSecret string `toml:"webhook_secret"`
- APIToken string `toml:"api_token"` // shared bearer for web UI + chatbot MCP; empty disables both auth and the chatbot MCP endpoint
- Projects []Project `toml:"projects"`
- VAPIDPublicKey string `toml:"vapid_public_key"`
- VAPIDPrivateKey string `toml:"vapid_private_key"`
- VAPIDEmail string `toml:"vapid_email"`
- ClaudeConfigDir string `toml:"claude_config_dir"`
- LocalModel LocalModel `toml:"local_model"`
- Runners RunnersConfig `toml:"runners"`
- Budget BudgetConfig `toml:"budget"`
+ DataDir string `toml:"data_dir"`
+ DBPath string `toml:"-"`
+ LogDir string `toml:"-"`
+ DropsDir string `toml:"-"`
+ SSHAuthSock string `toml:"ssh_auth_sock"`
+ ClaudeBinaryPath string `toml:"claude_binary_path"`
+ GeminiBinaryPath string `toml:"gemini_binary_path"`
+ ClaudeImage string `toml:"claude_image"`
+ GeminiImage string `toml:"gemini_image"`
+ // SandboxImage is the docker image used by sandbox.DockerSandbox (the
+ // tool-execution sandbox for native-API-driven runners, e.g. the
+ // "anthropic" NativeRunner) — distinct from ClaudeImage/GeminiImage,
+ // which are for ContainerRunner's claude/gemini CLI-subprocess path.
+ // Defaults to the same image (images/agent-base) since it already has
+ // everything a generic git/bash sandbox needs; see
+ // internal/sandbox/dockersandbox.go's package doc for the tradeoff.
+ SandboxImage string `toml:"sandbox_image"`
+ MaxConcurrent int `toml:"max_concurrent"`
+ ShutdownTimeout time.Duration `toml:"shutdown_timeout"`
+ DefaultTimeout string `toml:"default_timeout"`
+ ServerAddr string `toml:"server_addr"`
+ WebhookURL string `toml:"webhook_url"`
+ WorkspaceRoot string `toml:"workspace_root"`
+ WebhookSecret string `toml:"webhook_secret"`
+ APIToken string `toml:"api_token"` // shared bearer for web UI + chatbot MCP; empty disables both auth and the chatbot MCP endpoint
+ Projects []Project `toml:"projects"`
+ VAPIDPublicKey string `toml:"vapid_public_key"`
+ VAPIDPrivateKey string `toml:"vapid_private_key"`
+ VAPIDEmail string `toml:"vapid_email"`
+ ClaudeConfigDir string `toml:"claude_config_dir"`
+ LocalModel LocalModel `toml:"local_model"`
+ Runners RunnersConfig `toml:"runners"`
+ Budget BudgetConfig `toml:"budget"`
// Providers configures native/OpenAI-compatible LLM backends by name (see
// ProviderConfig). Unused by runner construction in Phase 1.
Providers map[string]ProviderConfig `toml:"providers"`
@@ -147,6 +155,7 @@ func Default() (*Config, error) {
GeminiBinaryPath: "gemini",
ClaudeImage: "claudomator-agent:latest",
GeminiImage: "claudomator-agent:latest",
+ SandboxImage: "claudomator-agent:latest",
MaxConcurrent: 3,
DefaultTimeout: "15m",
ServerAddr: "127.0.0.1:8484",