From cd865a9e777ce588c369fbd03841dc897a2a438c Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Sat, 4 Apr 2026 18:39:16 -0700 Subject: [PATCH] feat(wizard): surface env-var LLM setup hint + optional Ollama field in Step 5 --- app/pages/0_Setup.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/pages/0_Setup.py b/app/pages/0_Setup.py index fa28123..63c5b2c 100644 --- a/app/pages/0_Setup.py +++ b/app/pages/0_Setup.py @@ -457,6 +457,11 @@ elif step == 5: from app.wizard.step_inference import validate st.subheader("Step 5 \u2014 Inference & API Keys") + st.info( + "**Simplest setup:** set `OLLAMA_HOST` in your `.env` file — " + "Peregrine auto-detects it, no config file needed. " + "Or use the fields below to configure API keys and endpoints." + ) profile = saved_yaml.get("inference_profile", "remote") if profile == "remote": @@ -466,8 +471,18 @@ elif step == 5: placeholder="https://api.together.xyz/v1") openai_key = st.text_input("Endpoint API Key (optional)", type="password", key="oai_key") if openai_url else "" + ollama_host = st.text_input("Ollama host (optional \u2014 local fallback)", + placeholder="http://localhost:11434", + key="ollama_host_input") + ollama_model = st.text_input("Ollama model (optional)", + value="llama3.2:3b", + key="ollama_model_input") else: st.info(f"Local mode ({profile}): Ollama provides inference.") + import os as _os + _ollama_host_env = _os.environ.get("OLLAMA_HOST", "") + if _ollama_host_env: + st.caption(f"OLLAMA_HOST from .env: `{_ollama_host_env}`") anthropic_key = openai_url = openai_key = "" with st.expander("Advanced \u2014 Service Ports & Hosts"): @@ -546,6 +561,14 @@ elif step == 5: if anthropic_key or openai_url: env_path.write_text("\n".join(env_lines) + "\n") + if profile == "remote": + if ollama_host: + env_lines = _set_env(env_lines, "OLLAMA_HOST", ollama_host) + if ollama_model and ollama_model != "llama3.2:3b": + env_lines = _set_env(env_lines, "OLLAMA_MODEL", ollama_model) + if ollama_host or ollama_model: + env_path.write_text("\n".join(env_lines) + "\n") + _save_yaml({"services": svc, "wizard_step": 5}) st.session_state.wizard_step = 6 st.rerun()