import { useEffect, useState } from "react"; import type { SettingsResponse } from "@helios/shared"; import { api } from "../api"; export function Settings() { const [current, setCurrent] = useState(null); const [llmBaseUrl, setLlmBaseUrl] = useState(""); const [llmModel, setLlmModel] = useState(""); const [llmKey, setLlmKey] = useState(""); const [status, setStatus] = useState(null); useEffect(() => { api.getSettings().then((s) => { setCurrent(s); setLlmBaseUrl(s.llmBaseUrl); setLlmModel(s.llmModel); }); }, []); const save = async (e: React.FormEvent) => { e.preventDefault(); setStatus(null); try { await api.putSettings({ llmBaseUrl, llmModel, ...(llmKey ? { llmKey } : {}) }); setLlmKey(""); setCurrent(await api.getSettings()); setStatus("Saved"); } catch (err) { setStatus(err instanceof Error ? err.message : "failed"); } }; if (!current) return

Loading…

; return (

AI provider

Any OpenAI-compatible endpoint. OpenRouter by default; point at Ollama for a fully local setup.

{status &&

{status}

}
); }