Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,10 +150,10 @@ Special values: `all` (unrestricted) and `none` (no network access).
Faize reads from `~/.faize/config.yaml`:

```yaml
defaults:
resources:
cpus: 2
memory: 4GB
timeout: 2h
timeout: 2h

networks:
- npm
Expand Down
6 changes: 3 additions & 3 deletions internal/cmd/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,11 @@ func runStart(cmd *cobra.Command, args []string) error {
}

// Read CPUs and memory directly from config
cpus := cfg.Defaults.CPUs
memory := cfg.Defaults.Memory
cpus := cfg.Resources.CPUs
memory := cfg.Resources.Memory

if startTimeout == "" {
startTimeout = cfg.Defaults.Timeout
startTimeout = cfg.Timeout
}

// Use network config
Expand Down
30 changes: 15 additions & 15 deletions internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,17 @@ var HardcodedBlockedPaths = []string{

// Config represents the Faize CLI configuration
type Config struct {
Defaults Defaults `yaml:"defaults"`
Networks []string `yaml:"networks"`
BlockedPaths []string `yaml:"blocked_paths"`
Claude Claude `yaml:"claude"`
Resources Resources `yaml:"resources"`
Timeout string `yaml:"timeout"`
Networks []string `yaml:"networks"`
BlockedPaths []string `yaml:"blocked_paths"`
Claude Claude `yaml:"claude"`
}

// Defaults contains default values for sandbox execution
type Defaults struct {
CPUs int `yaml:"cpus"`
Memory string `yaml:"memory"`
Timeout string `yaml:"timeout"`
// Resources contains resource allocation for sandbox execution
type Resources struct {
CPUs int `yaml:"cpus"`
Memory string `yaml:"memory"`
}

// Claude contains Claude-specific configuration
Expand Down Expand Up @@ -126,14 +126,14 @@ func defaultBlockedPaths() []string {

// applyDefaults fills in zero-value fields with sensible defaults.
func applyDefaults(cfg *Config) {
if cfg.Defaults.CPUs == 0 {
cfg.Defaults.CPUs = 2
if cfg.Resources.CPUs == 0 {
cfg.Resources.CPUs = 2
}
if cfg.Defaults.Memory == "" {
cfg.Defaults.Memory = "4GB"
if cfg.Resources.Memory == "" {
cfg.Resources.Memory = "4GB"
}
if cfg.Defaults.Timeout == "" {
cfg.Defaults.Timeout = "2h"
if cfg.Timeout == "" {
cfg.Timeout = "2h"
}
if len(cfg.Networks) == 0 {
cfg.Networks = []string{"npm", "pypi", "github", "anthropic"}
Expand Down
6 changes: 3 additions & 3 deletions internal/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ func TestLoadDefaults(t *testing.T) {
require.NotNil(t, cfg)

// Check defaults
assert.Equal(t, 2, cfg.Defaults.CPUs)
assert.Equal(t, "4GB", cfg.Defaults.Memory)
assert.Equal(t, "2h", cfg.Defaults.Timeout)
assert.Equal(t, 2, cfg.Resources.CPUs)
assert.Equal(t, "4GB", cfg.Resources.Memory)
assert.Equal(t, "2h", cfg.Timeout)
assert.Contains(t, cfg.Networks, "npm")
assert.Contains(t, cfg.Networks, "pypi")
assert.Contains(t, cfg.Networks, "github")
Expand Down
Loading