@@ -1923,7 +1923,9 @@ impl Config {
19231923 /// Load from environment variables only (no config file).
19241924 pub fn load_from_env ( instance_dir : & Path ) -> Result < Self > {
19251925 let mut llm = LlmConfig {
1926- anthropic_key : std:: env:: var ( "ANTHROPIC_API_KEY" ) . ok ( ) ,
1926+ anthropic_key : std:: env:: var ( "ANTHROPIC_API_KEY" )
1927+ . ok ( )
1928+ . or_else ( || std:: env:: var ( "ANTHROPIC_AUTH_TOKEN" ) . ok ( ) ) ,
19271929 openai_key : std:: env:: var ( "OPENAI_API_KEY" ) . ok ( ) ,
19281930 openrouter_key : std:: env:: var ( "OPENROUTER_API_KEY" ) . ok ( ) ,
19291931 zhipu_key : std:: env:: var ( "ZHIPU_API_KEY" ) . ok ( ) ,
@@ -1947,11 +1949,13 @@ impl Config {
19471949
19481950 // Populate providers from env vars (same as from_toml does)
19491951 if let Some ( anthropic_key) = llm. anthropic_key . clone ( ) {
1952+ let base_url = std:: env:: var ( "ANTHROPIC_BASE_URL" )
1953+ . unwrap_or_else ( |_| ANTHROPIC_PROVIDER_BASE_URL . to_string ( ) ) ;
19501954 llm. providers
19511955 . entry ( "anthropic" . to_string ( ) )
19521956 . or_insert_with ( || ProviderConfig {
19531957 api_type : ApiType :: Anthropic ,
1954- base_url : ANTHROPIC_PROVIDER_BASE_URL . to_string ( ) ,
1958+ base_url,
19551959 api_key : anthropic_key,
19561960 name : None ,
19571961 } ) ;
@@ -2081,8 +2085,16 @@ impl Config {
20812085 // Note: We allow boot without provider keys now. System starts in setup mode.
20822086 // Agents are initialized later when keys are added via API.
20832087
2084- // Env-only routing: check for env overrides on channel/worker models
2088+ // Env-only routing: check for env overrides on channel/worker models.
2089+ // SPACEBOT_MODEL overrides all process types at once; specific vars take precedence.
20852090 let mut routing = RoutingConfig :: default ( ) ;
2091+ if let Ok ( model) = std:: env:: var ( "SPACEBOT_MODEL" ) {
2092+ routing. channel = model. clone ( ) ;
2093+ routing. branch = model. clone ( ) ;
2094+ routing. worker = model. clone ( ) ;
2095+ routing. compactor = model. clone ( ) ;
2096+ routing. cortex = model;
2097+ }
20862098 if let Ok ( channel_model) = std:: env:: var ( "SPACEBOT_CHANNEL_MODEL" ) {
20872099 routing. channel = channel_model;
20882100 }
@@ -2182,7 +2194,8 @@ impl Config {
21822194 . anthropic_key
21832195 . as_deref ( )
21842196 . and_then ( resolve_env_value)
2185- . or_else ( || std:: env:: var ( "ANTHROPIC_API_KEY" ) . ok ( ) ) ,
2197+ . or_else ( || std:: env:: var ( "ANTHROPIC_API_KEY" ) . ok ( ) )
2198+ . or_else ( || std:: env:: var ( "ANTHROPIC_AUTH_TOKEN" ) . ok ( ) ) ,
21862199 openai_key : toml
21872200 . llm
21882201 . openai_key
@@ -2316,11 +2329,13 @@ impl Config {
23162329 } ;
23172330
23182331 if let Some ( anthropic_key) = llm. anthropic_key . clone ( ) {
2332+ let base_url = std:: env:: var ( "ANTHROPIC_BASE_URL" )
2333+ . unwrap_or_else ( |_| ANTHROPIC_PROVIDER_BASE_URL . to_string ( ) ) ;
23192334 llm. providers
23202335 . entry ( "anthropic" . to_string ( ) )
23212336 . or_insert_with ( || ProviderConfig {
23222337 api_type : ApiType :: Anthropic ,
2323- base_url : ANTHROPIC_PROVIDER_BASE_URL . to_string ( ) ,
2338+ base_url,
23242339 api_key : anthropic_key,
23252340 name : None ,
23262341 } ) ;
0 commit comments