Skip to content

Commit 6cb1a54

Browse files
committed
Fixes forwarding of authentication token for claude when using vLLM as backend
1 parent b7aa93c commit 6cb1a54

4 files changed

Lines changed: 30 additions & 4 deletions

File tree

src/vibepod/commands/run.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,9 @@ def run(
276276
for key, env_var in spec.llm_env_map.items():
277277
value = llm_values.get(key, "")
278278
if value:
279-
merged_env.setdefault(env_var, value)
279+
targets = [env_var] if isinstance(env_var, str) else env_var
280+
for target in targets:
281+
merged_env.setdefault(target, value)
280282
llm_model = llm_values["model"]
281283
if llm_model and spec.llm_model_args:
282284
llm_command_extra = [*spec.llm_model_args, llm_model]

src/vibepod/core/agents.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class AgentSpec:
2222
platform: str | None = None
2323
run_as_host_user: bool = False
2424
ikwid_args: list[str] | None = None
25-
llm_env_map: dict[str, str] | None = None
25+
llm_env_map: dict[str, str | list[str]] | None = None
2626
llm_model_args: list[str] | None = None
2727

2828

@@ -36,7 +36,15 @@ class AgentSpec:
3636
"/claude",
3737
{"CLAUDE_CONFIG_DIR": "/claude"},
3838
ikwid_args=["--dangerously-skip-permissions"],
39-
llm_env_map={"base_url": "ANTHROPIC_BASE_URL", "api_key": "ANTHROPIC_API_KEY"},
39+
llm_env_map={
40+
"base_url": "ANTHROPIC_BASE_URL",
41+
"api_key": ["ANTHROPIC_API_KEY", "ANTHROPIC_AUTH_TOKEN"],
42+
"model": [
43+
"ANTHROPIC_DEFAULT_OPUS_MODEL",
44+
"ANTHROPIC_DEFAULT_SONNET_MODEL",
45+
"ANTHROPIC_DEFAULT_HAIKU_MODEL",
46+
],
47+
},
4048
llm_model_args=["--model"],
4149
),
4250
"gemini": AgentSpec(

tests/test_agents.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,12 @@ def test_claude_spec_has_llm_env_map() -> None:
8383
spec = get_agent_spec("claude")
8484
assert spec.llm_env_map == {
8585
"base_url": "ANTHROPIC_BASE_URL",
86-
"api_key": "ANTHROPIC_API_KEY",
86+
"api_key": ["ANTHROPIC_API_KEY", "ANTHROPIC_AUTH_TOKEN"],
87+
"model": [
88+
"ANTHROPIC_DEFAULT_OPUS_MODEL",
89+
"ANTHROPIC_DEFAULT_SONNET_MODEL",
90+
"ANTHROPIC_DEFAULT_HAIKU_MODEL",
91+
],
8792
}
8893
assert spec.llm_model_args == ["--model"]
8994

tests/test_run.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,10 @@ def run_agent(self, **kwargs) -> object: # type: ignore[no-untyped-def]
757757
env = captured["env"]
758758
assert env["ANTHROPIC_BASE_URL"] == "http://localhost:11434/v1"
759759
assert env["ANTHROPIC_API_KEY"] == "sk-test-key"
760+
assert env["ANTHROPIC_AUTH_TOKEN"] == "sk-test-key"
761+
assert env["ANTHROPIC_DEFAULT_OPUS_MODEL"] == "llama3"
762+
assert env["ANTHROPIC_DEFAULT_SONNET_MODEL"] == "llama3"
763+
assert env["ANTHROPIC_DEFAULT_HAIKU_MODEL"] == "llama3"
760764
assert "ANTHROPIC_MODEL" not in env
761765
assert captured["command"] == ["claude", "--model", "llama3"]
762766

@@ -863,6 +867,10 @@ def run_agent(self, **kwargs) -> object: # type: ignore[no-untyped-def]
863867
env = captured["env"]
864868
assert "ANTHROPIC_BASE_URL" not in env
865869
assert "ANTHROPIC_API_KEY" not in env
870+
assert "ANTHROPIC_AUTH_TOKEN" not in env
871+
assert "ANTHROPIC_DEFAULT_OPUS_MODEL" not in env
872+
assert "ANTHROPIC_DEFAULT_SONNET_MODEL" not in env
873+
assert "ANTHROPIC_DEFAULT_HAIKU_MODEL" not in env
866874
assert "ANTHROPIC_MODEL" not in env
867875

868876

@@ -966,6 +974,9 @@ def run_agent(self, **kwargs) -> object: # type: ignore[no-untyped-def]
966974

967975
env = captured["env"]
968976
assert env["ANTHROPIC_BASE_URL"] == "http://localhost:11434/v1"
977+
assert "ANTHROPIC_DEFAULT_OPUS_MODEL" not in env
978+
assert "ANTHROPIC_DEFAULT_SONNET_MODEL" not in env
979+
assert "ANTHROPIC_DEFAULT_HAIKU_MODEL" not in env
969980
assert captured["command"] == ["claude"]
970981

971982

0 commit comments

Comments
 (0)