version: 1.3.1 # Voice: server-side STT/TTS via the co-op gateway (Tinfoil TEE). # Server STT works in every browser (Firefox has no Web Speech API). speech: stt: openai: url: "https://gateway.inference.coop/v1/audio/transcriptions" apiKey: "${GATEWAY_KEY}" model: "tinfoil/whisper-large-v3-turbo" tts: openai: url: "https://gateway.inference.coop/v1/audio/speech" apiKey: "${GATEWAY_KEY}" model: "tinfoil/voxtral-tts" voices: ["neutral_female", "neutral_male", "casual_female", "casual_male", "cheerful_female"] cache: true # Inference Co-op gateway — PER-USER keys (production pattern): no server-side # apiKey here, so each user pastes their own dashboard key once. Usage then # bills to that member's own LiteLLM team/budget, exactly like the API path. endpoints: custom: - name: "Inference Co-op" iconURL: "/assets/logo-coop.png" apiKey: "user_provided" baseURL: "https://gateway.inference.coop/v1" models: fetch: true default: - greenpt/deepseek-v4.1-flash - tinfoil/deepseek-v4-1-flash - tinfoil/gpt-oss-120b - tinfoil/glm-5.3 - greenpt/glm-5.3-flash - greenpt/glm-5.3 - regolo/apertus-70b - regolo/qwen3.5-122b titleConvo: true titleModel: "greenpt/glm-5.3-flash" titleMethod: "completion" # Web search via the co-op's self-hosted SearXNG (public URL, JSON enabled for OWUI already). # scraperProvider keenable = keyless page-fetch, so members get one-click search # with no Firecrawl prompt. (Production note: keenable is an external keyless # service — if that offends self-host values, swap in a self-hosted Firecrawl.) webSearch: searchProvider: "searxng" scraperProvider: "keenable" searxngInstanceUrl: "${SEARXNG_INSTANCE_URL}" searxngSearchOptions: engines: "google,bing,duckduckgo" language: "en" timeout: 15000 # MCP: the co-op docs, opt-in per conversation (stdlib stdio server in /app/data). mcpServers: inference-docs: type: stdio command: python3 args: - /app/data/inference-docs-mcp/server.py # Emoji-ified model picker (same feature-tier convention as models.md / OWUI): # 🌱 = renewable-powered (GreenPT + Regolo), 🔒 = TEE-architected private (Tinfoil). # Utility models (audio STT/TTS, image generation) are excluded from chat. modelSpecs: enforce: true prioritize: true list: - name: tinfoil-deepseek-v4-1-flash iconURL: "/assets/logo-coop.png" label: "🔒 tinfoil/deepseek-v4-1-flash" softDefault: true preset: endpoint: "Inference Co-op" model: "tinfoil/deepseek-v4-1-flash" - name: tinfoil-gpt-oss-120b iconURL: "/assets/logo-coop.png" label: "🔒 tinfoil/gpt-oss-120b" preset: endpoint: "Inference Co-op" model: "tinfoil/gpt-oss-120b" - name: tinfoil-glm-5-3 iconURL: "/assets/logo-coop.png" label: "🔒 tinfoil/glm-5.3" preset: endpoint: "Inference Co-op" model: "tinfoil/glm-5.3" - name: greenpt-deepseek-v4-1-flash iconURL: "/assets/logo-coop.png" label: "🌱 greenpt/deepseek-v4.1-flash" preset: endpoint: "Inference Co-op" model: "greenpt/deepseek-v4.1-flash" - name: greenpt-glm-5-3-flash iconURL: "/assets/logo-coop.png" label: "🌱 greenpt/glm-5.3-flash" preset: endpoint: "Inference Co-op" model: "greenpt/glm-5.3-flash" - name: greenpt-glm-5-3 iconURL: "/assets/logo-coop.png" label: "🌱 greenpt/glm-5.3" preset: endpoint: "Inference Co-op" model: "greenpt/glm-5.3" - name: regolo-apertus-70b iconURL: "/assets/logo-coop.png" label: "🌱 regolo/apertus-70b" preset: endpoint: "Inference Co-op" model: "regolo/apertus-70b" - name: regolo-qwen3-5-122b iconURL: "/assets/logo-coop.png" label: "🌱 regolo/qwen3.5-122b" preset: endpoint: "Inference Co-op" model: "regolo/qwen3.5-122b" - name: regolo-qwen-image iconURL: "/assets/logo-coop.png" label: "🖼️ regolo/qwen-image" preset: endpoint: "Inference Co-op" model: "regolo/qwen-image" # Inference Cooperative branding interface: customWelcome: "Welcome to your co-op AI." theme: version: 1 name: inference modes: light: colors: rgb-surface-primary: '250 248 245' rgb-surface-secondary: '241 237 230' rgb-surface-tertiary: '232 227 217' rgb-surface-hover: '236 234 217' rgb-surface-submit: '91 140 90' rgb-surface-submit-hover: '74 122 74' rgb-accent-primary: '91 140 90' rgb-accent-primary-hover: '74 122 74' rgb-ring-primary: '91 140 90' rgb-link: '74 122 74' rgb-text-primary: '36 48 32' rgb-text-secondary: '90 107 82' rgb-border-light: '213 221 208' dark: colors: rgb-surface-primary: '31 36 27' rgb-surface-secondary: '38 45 34' rgb-surface-tertiary: '46 54 40' rgb-surface-hover: '49 57 45' rgb-surface-submit: '122 184 122' rgb-surface-submit-hover: '142 200 142' rgb-accent-primary: '122 184 122' rgb-accent-primary-hover: '142 200 142' rgb-ring-primary: '142 200 142' rgb-link: '142 200 142' rgb-text-primary: '236 233 226' rgb-text-secondary: '168 173 158' rgb-border-light: '74 82 64'