Skip to content
Closed
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
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -380,13 +380,13 @@ This creates `~/.picoclaw/config.json` and the workspace directory.
{
"agents": {
"defaults": {
"model_name": "gpt-5.4"
"model_name": "gpt-5.6-terra"
}
},
Comment on lines 381 to 385
"model_list": [
{
"model_name": "gpt-5.4",
"model": "openai/gpt-5.4"
"model_name": "gpt-5.6-terra",
"model": "openai/gpt-5.6-terra"
// api_key is now loaded from .security.yml
}
]
Expand Down
16 changes: 8 additions & 8 deletions cmd/picoclaw/internal/auth/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (

const (
supportedProvidersMsg = "supported providers: openai, anthropic, google-antigravity, antigravity"
defaultAnthropicModel = "claude-sonnet-4.6"
defaultAnthropicModel = "claude-sonnet-5"
)

func authLoginCmd(provider string, useDeviceCode bool, useOauth bool, noBrowser bool) error {
Expand Down Expand Up @@ -69,14 +69,14 @@ func authLoginOpenAI(useDeviceCode bool, noBrowser bool) error {
// If no openai in ModelList, add it
if !foundOpenAI {
appCfg.ModelList = append(appCfg.ModelList, &config.ModelConfig{
ModelName: "gpt-5.4",
Model: "openai/gpt-5.4",
ModelName: "gpt-5.6-terra",
Model: "openai/gpt-5.6-terra",
AuthMethod: "oauth",
})
}

// Update default model to use OpenAI
appCfg.Agents.Defaults.ModelName = "gpt-5.4"
appCfg.Agents.Defaults.ModelName = "gpt-5.6-terra"

if err = config.SaveConfig(internal.GetConfigPath(), appCfg); err != nil {
return fmt.Errorf("could not update config: %w", err)
Expand All @@ -87,7 +87,7 @@ func authLoginOpenAI(useDeviceCode bool, noBrowser bool) error {
if cred.AccountID != "" {
fmt.Printf("Account: %s\n", cred.AccountID)
}
fmt.Println("Default model set to: gpt-5.4")
fmt.Println("Default model set to: gpt-5.6-terra")

return nil
}
Expand Down Expand Up @@ -308,13 +308,13 @@ func authLoginPasteToken(provider string) error {
}
if !found {
appCfg.ModelList = append(appCfg.ModelList, &config.ModelConfig{
ModelName: "gpt-5.4",
Model: "openai/gpt-5.4",
ModelName: "gpt-5.6-terra",
Model: "openai/gpt-5.6-terra",
AuthMethod: "token",
})
}
// Update default model
appCfg.Agents.Defaults.ModelName = "gpt-5.4"
appCfg.Agents.Defaults.ModelName = "gpt-5.6-terra"
}
if err := config.SaveConfig(internal.GetConfigPath(), appCfg); err != nil {
return fmt.Errorf("could not update config: %w", err)
Expand Down
2 changes: 1 addition & 1 deletion cmd/picoclaw/internal/model/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ available list online and pick one), use the 'add' subcommand:
Examples:
picoclaw model # Show current default model
picoclaw model gpt-5.2 # Set gpt-5.2 as default
picoclaw model claude-sonnet-4.6 # Set claude-sonnet-4.6 as default
picoclaw model claude-sonnet-5 # Set claude-sonnet-5 as default
picoclaw model local-model # Set local VLLM server as default
picoclaw model add -b URL -k KEY # Add a model from a custom endpoint

Expand Down
6 changes: 3 additions & 3 deletions cmd/picoclaw/internal/status/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func TestStatusCmd_RecognizesProviderFieldWithoutModelPrefix(t *testing.T) {
cfg := &config.Config{
Agents: config.AgentsConfig{
Defaults: config.AgentDefaults{
ModelName: "gpt-5.4",
ModelName: "gpt-5.6-terra",
Workspace: workspace,
Provider: "openai",
MaxTokens: 65536,
Expand All @@ -57,9 +57,9 @@ func TestStatusCmd_RecognizesProviderFieldWithoutModelPrefix(t *testing.T) {
},
ModelList: []*config.ModelConfig{
{
ModelName: "gpt-5.4",
ModelName: "gpt-5.6-terra",
Provider: "openai",
Model: "gpt-5.4",
Model: "gpt-5.6-terra",
APIBase: "https://api.openai.com/v1",
APIKeys: config.SimpleSecureStrings("test-key"),
Enabled: true,
Expand Down
26 changes: 13 additions & 13 deletions config/config.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"defaults": {
"workspace": "~/.picoclaw/workspace",
"restrict_to_workspace": true,
"model_name": "gpt-5.4",
"model_name": "gpt-5.6-terra",
"max_tokens": 8192,
"context_window": 131072,
"temperature": 0.7,
Expand Down Expand Up @@ -32,22 +32,22 @@
},
"model_list": [
{
"model_name": "gpt-5.4",
"model": "openai/gpt-5.4",
"model_name": "gpt-5.6-terra",
"model": "openai/gpt-5.6-terra",
"api_keys": ["sk-your-openai-key"],
"api_base": "https://api.openai.com/v1"
},
{
"model_name": "claude-sonnet-4.6",
"model": "anthropic/claude-sonnet-4.6",
"model_name": "claude-sonnet-5",
"model": "anthropic/claude-sonnet-5",
"api_keys": ["sk-ant-your-key"],
"api_base": "https://api.anthropic.com/v1",
"thinking_level": "high"
},
{
"_comment": "Anthropic Messages API - use native format for direct Anthropic API access",
"model_name": "claude-opus-4-6",
"model": "anthropic-messages/claude-opus-4-6",
"model_name": "claude-opus-4-8",
"model": "anthropic-messages/claude-opus-4-8",
"api_keys": ["sk-ant-your-key"],
"api_base": "https://api.anthropic.com"
},
Expand All @@ -59,7 +59,7 @@
},
{
"model_name": "deepseek",
"model": "deepseek/deepseek-chat",
"model": "deepseek/deepseek-v4-flash",
"api_keys": ["sk-your-deepseek-key"]
},
{
Expand All @@ -78,7 +78,7 @@
},
{
"model_name": "longcat",
"model": "longcat/LongCat-Flash-Thinking",
"model": "longcat/LongCat-2.0",
"api_keys": ["your-longcat-api-key"]
},
{
Expand All @@ -94,14 +94,14 @@
"api_base": "https://your-resource.openai.azure.com"
},
{
"model_name": "loadbalanced-gpt-5.4",
"model": "openai/gpt-5.4",
"model_name": "loadbalanced-gpt-5.6-terra",
"model": "openai/gpt-5.6-terra",
"api_keys": ["sk-key1"],
"api_base": "https://api1.example.com/v1"
},
{
"model_name": "loadbalanced-gpt-5.4",
"model": "openai/gpt-5.4",
"model_name": "loadbalanced-gpt-5.6-terra",
"model": "openai/gpt-5.6-terra",
"api_keys": ["sk-key2"],
"api_base": "https://api2.example.com/v1"
}
Expand Down
36 changes: 18 additions & 18 deletions docs/design/provider-refactoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Each OpenAI-compatible Provider requires:
"agents": {
"defaults": {
"provider": "deepseek", // need to know provider name
"model": "deepseek-chat"
"model": "deepseek-v4-flash"
}
}
}
Expand All @@ -66,7 +66,7 @@ Problem: Agent needs to know both `provider` and `model`, adding complexity.
Inspired by [LiteLLM](https://docs.litellm.ai/docs/proxy/configs) design:

1. **Model-centric**: Users care about models, not providers
2. **Protocol prefix**: Use `protocol/model_name` format, e.g., `openai/gpt-5.4`, `anthropic/claude-sonnet-4.6`
2. **Protocol prefix**: Use `protocol/model_name` format, e.g., `openai/gpt-5.6-terra`, `anthropic/claude-sonnet-5`
3. **Configuration-driven**: Adding new Providers only requires config changes, no code changes

### 2.2 New Configuration Structure
Expand All @@ -75,19 +75,19 @@ Inspired by [LiteLLM](https://docs.litellm.ai/docs/proxy/configs) design:
{
"model_list": [
{
"model_name": "deepseek-chat",
"model": "openai/deepseek-chat",
"model_name": "deepseek-v4-flash",
"model": "openai/deepseek-v4-flash",
"api_base": "https://api.deepseek.com/v1",
"api_keys": ["sk-xxx"]
Comment on lines 76 to 81
},
{
"model_name": "gpt-5.4",
"model": "openai/gpt-5.4",
"model_name": "gpt-5.6-terra",
"model": "openai/gpt-5.6-terra",
"api_keys": ["sk-xxx"]
},
{
"model_name": "claude-sonnet-4.6",
"model": "anthropic/claude-sonnet-4.6",
"model_name": "claude-sonnet-5",
"model": "anthropic/claude-sonnet-5",
"api_keys": ["sk-xxx"]
},
{
Expand All @@ -105,7 +105,7 @@ Inspired by [LiteLLM](https://docs.litellm.ai/docs/proxy/configs) design:

"agents": {
"defaults": {
"model": "deepseek-chat",
"model": "deepseek-v4-flash",
"max_tokens": 8192,
"temperature": 0.7
}
Expand All @@ -128,7 +128,7 @@ type Config struct {
type ModelConfig struct {
// Required
ModelName string `json:"model_name"` // user-facing name (alias)
Model string `json:"model"` // protocol/model, e.g., openai/gpt-5.4
Model string `json:"model"` // protocol/model, e.g., openai/gpt-5.6-terra

// Common config
APIBase string `json:"api_base,omitempty"`
Expand Down Expand Up @@ -177,14 +177,14 @@ Identify protocol via prefix in `model` field:

"agents": {
"defaults": {
"model": "deepseek-chat"
"model": "deepseek-v4-flash"
},
"coder": {
"model": "gpt-5.4",
"model": "gpt-5.6-terra",
"system_prompt": "You are a coding assistant..."
},
"translator": {
"model": "claude-sonnet-4.6"
"model": "claude-sonnet-5"
}
}
}
Expand All @@ -200,7 +200,7 @@ Each Agent only needs to specify `model` (corresponds to `model_name` in `model_
model_list:
- model_name: gpt-4o
litellm_params:
model: openai/gpt-5.4
model: openai/gpt-5.6-terra
api_key: xxx
- model_name: my-custom
litellm_params:
Expand Down Expand Up @@ -259,7 +259,7 @@ func (c *Config) GetModelConfig(modelName string) (*ModelConfig, error) {
"agents": {
"defaults": {
"provider": "deepseek",
"model": "deepseek-chat"
"model": "deepseek-v4-flash"
}
}
}
Expand All @@ -270,15 +270,15 @@ func (c *Config) GetModelConfig(modelName string) (*ModelConfig, error) {
{
"model_list": [
{
"model_name": "deepseek-chat",
"model": "openai/deepseek-chat",
"model_name": "deepseek-v4-flash",
"model": "openai/deepseek-v4-flash",
"api_base": "https://api.deepseek.com/v1",
"api_key": "sk-xxx"
}
],
"agents": {
"defaults": {
"model": "deepseek-chat"
"model": "deepseek-v4-flash"
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions docs/guides/configuration.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -398,8 +398,8 @@ Configurez plusieurs endpoints pour le même nom de modèle — PicoClaw effectu
```json
{
"model_list": [
{ "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api1.example.com/v1", "api_keys": ["sk-key1"] },
{ "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api2.example.com/v1", "api_keys": ["sk-key2"] }
{ "model_name": "gpt-5.6-terra", "model": "openai/gpt-5.6-terra", "api_base": "https://api1.example.com/v1", "api_keys": ["sk-key1"] },
{ "model_name": "gpt-5.6-terra", "model": "openai/gpt-5.6-terra", "api_base": "https://api2.example.com/v1", "api_keys": ["sk-key2"] }
]
}
```
Expand All @@ -422,9 +422,9 @@ Exemple d'activation :
{
"model_list": [
{
"model_name": "gpt-5.4",
"model_name": "gpt-5.6-terra",
"provider": "openai",
"model": "gpt-5.4",
"model": "gpt-5.6-terra",
"api_keys": ["sk-your-openai-key"],
"streaming": {
"enabled": true
Expand Down
4 changes: 2 additions & 2 deletions docs/guides/configuration.it.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ Esempio di attivazione:
{
"model_list": [
{
"model_name": "gpt-5.4",
"model_name": "gpt-5.6-terra",
"provider": "openai",
"model": "gpt-5.4",
"model": "gpt-5.6-terra",
"api_keys": ["sk-your-openai-key"],
"streaming": {
"enabled": true
Expand Down
8 changes: 4 additions & 4 deletions docs/guides/configuration.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -399,8 +399,8 @@ HEARTBEAT_OK を返信 ユーザーが直接結果を受信
```json
{
"model_list": [
{ "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api1.example.com/v1", "api_keys": ["sk-key1"] },
{ "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api2.example.com/v1", "api_keys": ["sk-key2"] }
{ "model_name": "gpt-5.6-terra", "model": "openai/gpt-5.6-terra", "api_base": "https://api1.example.com/v1", "api_keys": ["sk-key1"] },
{ "model_name": "gpt-5.6-terra", "model": "openai/gpt-5.6-terra", "api_base": "https://api2.example.com/v1", "api_keys": ["sk-key2"] }
]
}
```
Expand All @@ -423,9 +423,9 @@ Pico WebUI が最初に完全対応した channel です。Pico は既存の `me
{
"model_list": [
{
"model_name": "gpt-5.4",
"model_name": "gpt-5.6-terra",
"provider": "openai",
"model": "gpt-5.4",
"model": "gpt-5.6-terra",
"api_keys": ["sk-your-openai-key"],
"streaming": {
"enabled": true
Expand Down
Loading
Loading