Skip to content

Instantly share code, notes, and snippets.

@daveio
Last active June 6, 2025 12:13
Show Gist options
  • Save daveio/8d61320990bcd3623d0305fe7b341f0c to your computer and use it in GitHub Desktop.
Save daveio/8d61320990bcd3623d0305fe7b341f0c to your computer and use it in GitHub Desktop.
Goose configuration schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://gist.github.com/daveio/8d61320990bcd3623d0305fe7b341f0c",
"title": "Goose Configuration",
"description": "Configuration schema for Goose AI assistant YAML files. Unofficial; written using the documentation at <https://block.github.io/goose/docs/guides/config-file/>",
"type": "object",
"properties": {
"GOOSE_PROVIDER": {
"type": "string",
"description": "Primary LLM provider for Goose",
"enum": ["anthropic", "openai"],
"examples": ["anthropic", "openai"]
},
"GOOSE_MODEL": {
"type": "string",
"description": "Default model to use with the provider",
"examples": [
"claude-3-5-sonnet-20241022",
"claude-3-5-haiku-20241022",
"claude-3-opus-20240229",
"gpt-4o",
"gpt-4o-mini",
"gpt-4-turbo"
]
},
"GOOSE_TEMPERATURE": {
"type": "number",
"minimum": 0.0,
"maximum": 1.0,
"description": "Controls randomness in model responses (0.0 = deterministic, 1.0 = very random)",
"default": 0.1
},
"GOOSE_MODE": {
"type": "string",
"description": "Interaction mode for Goose",
"enum": ["auto", "approve", "chat", "smart_approve"],
"default": "smart_approve"
},
"GOOSE_PLANNER_PROVIDER": {
"type": "string",
"description": "Provider to use specifically for planning mode",
"enum": ["anthropic", "openai"]
},
"GOOSE_PLANNER_MODEL": {
"type": "string",
"description": "Model to use specifically for planning mode",
"examples": [
"claude-3-5-sonnet-20241022",
"claude-3-5-haiku-20241022",
"gpt-4o",
"gpt-4o-mini"
]
},
"GOOSE_MAX_TOKENS": {
"type": "integer",
"minimum": 1,
"description": "Maximum number of tokens for model responses"
},
"GOOSE_API_KEY": {
"type": "string",
"description": "API key for the primary provider (consider using environment variables instead)"
},
"GOOSE_ANTHROPIC_API_KEY": {
"type": "string",
"description": "Anthropic API key (consider using environment variables instead)"
},
"GOOSE_OPENAI_API_KEY": {
"type": "string",
"description": "OpenAI API key (consider using environment variables instead)"
},
"GOOSE_BASE_URL": {
"type": "string",
"format": "uri",
"description": "Base URL for API requests (for custom endpoints)"
},
"extensions": {
"type": "object",
"description": "Configuration for Goose extensions",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"bundled": {
"type": ["boolean", "null"]
},
"display_name": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"timeout": {
"type": "number"
},
"type": {
"type": "string",
"enum": ["builtin", "stdio"]
},
"args": {
"type": "array",
"items": {
"type": "string"
}
},
"cmd": {
"type": "string"
},
"description": {
"type": "string"
},
"env_keys": {
"type": "array",
"items": {
"type": "string"
}
},
"envs": {
"type": "object"
}
},
"required": ["enabled", "name", "timeout", "type"],
"additionalProperties": false
}
}
},
"profiles": {
"type": "object",
"description": "Named configuration profiles",
"additionalProperties": {
"type": "object",
"properties": {
"GOOSE_PROVIDER": {
"$ref": "#/properties/GOOSE_PROVIDER"
},
"GOOSE_MODEL": {
"$ref": "#/properties/GOOSE_MODEL"
},
"GOOSE_TEMPERATURE": {
"$ref": "#/properties/GOOSE_TEMPERATURE"
},
"GOOSE_MODE": {
"$ref": "#/properties/GOOSE_MODE"
},
"GOOSE_PLANNER_PROVIDER": {
"$ref": "#/properties/GOOSE_PLANNER_PROVIDER"
},
"GOOSE_PLANNER_MODEL": {
"$ref": "#/properties/GOOSE_PLANNER_MODEL"
},
"GOOSE_MAX_TOKENS": {
"$ref": "#/properties/GOOSE_MAX_TOKENS"
},
"extensions": {
"$ref": "#/properties/extensions"
}
},
"additionalProperties": false
}
}
},
"required": ["extensions"],
"additionalProperties": false,
"examples": [
{
"GOOSE_PROVIDER": "anthropic",
"GOOSE_MODEL": "claude-3-5-sonnet-20241022",
"GOOSE_TEMPERATURE": 0.1,
"GOOSE_MODE": "smart_approve",
"extensions": {
"mcp_client": {
"bundled": true,
"enabled": true,
"name": "MCP Client",
"type": "builtin"
},
"my_custom_tool": {
"bundled": false,
"enabled": true,
"name": "Custom Tool",
"type": "stdio",
"path": "/path/to/my/tool",
"args": ["--config", "config.json"],
"timeout": 60
}
}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment