diff --git a/coworker/providers/matrix.py b/coworker/providers/matrix.py index d6249155..9b40cacf 100644 --- a/coworker/providers/matrix.py +++ b/coworker/providers/matrix.py @@ -71,6 +71,15 @@ MATRIX: dict[str, ModelEntry] = { "gemini:gemini-2.5-pro": ModelEntry("Gemini 2.5 Pro · Google", _AGENTIC_VISION), "gemini:gemini-2.5-flash": ModelEntry("Gemini 2.5 Flash · Google", _AGENTIC_VISION), # -- direct OpenAI-compatible vendors ---------------------------------------- + # Muse Spark (Meta Model API, public preview 2026-07-09): multimodal + tools via + # their OpenAI-compat surface. Vision yes; PDFs unverified over compat — falls + # back via pdf_support.py like the other compat vendors. + "meta:muse-spark-1.1": ModelEntry( + "Muse Spark 1.1 · Meta", + ModelCapabilities( + tools=True, vision=True, parallel_tool_calls=True, streaming=True + ), + ), "zai:glm-5.2": ModelEntry("GLM-5.2 · Z AI"), "deepseek:deepseek-v4-flash": ModelEntry("DeepSeek V4 Flash · DeepSeek"), "deepseek:deepseek-v4-pro": ModelEntry("DeepSeek V4 Pro · DeepSeek"), diff --git a/coworker/providers/registry.py b/coworker/providers/registry.py index 58aee92b..b5c628c6 100644 --- a/coworker/providers/registry.py +++ b/coworker/providers/registry.py @@ -307,6 +307,14 @@ DESCRIPTORS: list[ProviderDescriptor] = [ recommended_model="mistral-large-latest", env_key="MISTRAL_API_KEY", ), + _compat( + "meta", + "Meta (Muse Spark)", + base_url="https://api.meta.ai/v1", + recommended_model="muse-spark-1.1", + env_key="META_API_KEY", + endpoint_help="Prefilled with the Meta Model API endpoint (public preview, US-only as of 2026-07).", + ), # Resellers: many labs' models behind one key, using THEIR model namespaces (the curated # ids + display labels live in providers/matrix.py). TODO: add Groq and OpenRouter here # (+ their matrix rows) once the current provider surface is tested — deliberately diff --git a/surfaces/gui/src/providers/logos.ts b/surfaces/gui/src/providers/logos.ts index 8f36d91c..14c10332 100644 --- a/surfaces/gui/src/providers/logos.ts +++ b/surfaces/gui/src/providers/logos.ts @@ -18,11 +18,13 @@ import mistral from "./logos/mistral.svg"; import qwen from "./logos/qwen.svg"; import minimax from "./logos/minimax.svg"; import xai from "./logos/xai.svg"; +import meta from "./logos/meta.svg"; export const PROVIDER_LOGOS: Record = { anthropic, openai, gemini, + meta, ollama, fireworks, together, @@ -39,6 +41,7 @@ export const PROVIDER_ORDER = [ "anthropic", "openai", "gemini", + "meta", "ollama", "fireworks", "together", diff --git a/surfaces/gui/src/providers/logos/meta.svg b/surfaces/gui/src/providers/logos/meta.svg new file mode 100644 index 00000000..a8a8d948 --- /dev/null +++ b/surfaces/gui/src/providers/logos/meta.svg @@ -0,0 +1 @@ +Meta \ No newline at end of file