/* ============================================================ partners.ts — per-partner content for the reusable template. Sourced from partner-resources.md. The template flexes on: type (models|infra), optional prize, optional starter space, variable models / capabilities / resources / support channels. NOTE: OpenBMB's hosted API bearer token from partner-resources.md is deliberately NOT included here — it is a shared secret and must not ship in a public, static frontend. ============================================================ */ export type PartnerModel = { name: string; size?: number; // params in B; omit when not publicly stated tags: string[]; desc: string; url?: string; }; export type PartnerCapability = { name: string; glyph: string; desc: string; }; export type ResourceKind = 'docs' | 'cookbook' | 'guide' | 'models' | 'code' | 'space'; export type PartnerData = { id: string; name: string; accent: string; url?: string; sizeRange: string; type: 'models' | 'infra'; tagline: string; offer: string; models?: PartnerModel[]; capabilities?: PartnerCapability[]; guide?: { want: string; use: string; note: string }[]; resources?: { label: string; kind: ResourceKind; url: string }[]; starterSpace?: { name: string; desc: string; url: string } | null; links?: Partial>; prize?: { title: string; award: string; criteria: string } | null; support?: { channel: string; handle: string; glyph: string; url?: string }[]; }; export const PARTNER_DATA: Record = { /* ---------- RICH: many models + selection guide ---------- */ openbmb: { id: 'openbmb', name: 'OpenBMB', accent: '#3d6a55', url: 'openbmb.cn', sizeRange: '1B – 8B', type: 'models', tagline: 'Tiny, capable models for text, vision, audio and omni — small enough to live on your own hardware.', offer: 'The MiniCPM family proves you don’t need a giant to get real work done. Each model is tuned to punch far above its parameter count and runs happily on a laptop — or a phone. OpenBMB provide free hosted API access for the jam, and every model also runs locally via llama.cpp or transformers. Pick the modality you need and go.', models: [ { name: 'MiniCPM-V 4.6', size: 1.3, tags: ['vision', 'OCR', 'documents'], desc: 'Image & video understanding, OCR and document understanding for multimodal apps.', url: 'https://huggingface.co/openbmb/MiniCPM-V-4.6' }, { name: 'MiniCPM-o 4.5', tags: ['omni', 'speech', 'realtime'], desc: 'Full-duplex omni model — voice, vision and language in, speech out. Real-time capable.', url: 'https://huggingface.co/openbmb/MiniCPM-o-4_5' }, { name: 'MiniCPM-V 4.5', tags: ['vision', 'video'], desc: 'Strong multimodal understanding and visual reasoning for image & video use cases.', url: 'https://huggingface.co/openbmb/MiniCPM-V-4_5' }, { name: 'MiniCPM5-1B', size: 1, tags: ['text', 'on-device'], desc: 'Lightweight text generation for local-first and on-device assistants.', url: 'https://huggingface.co/openbmb/MiniCPM5-1B' }, { name: 'MiniCPM4.1-8B', size: 8, tags: ['text', 'reasoning'], desc: 'Text reasoning with efficient, hybrid local inference.', url: 'https://huggingface.co/openbmb/MiniCPM4.1-8B' }, { name: 'VoxCPM2', tags: ['TTS', 'voice'], desc: 'Text-to-speech and creative voice design for voice-enabled apps.', url: 'https://huggingface.co/openbmb/VoxCPM2' } ], guide: [ { want: 'Image understanding, OCR or documents', use: 'MiniCPM-V 4.6', note: 'Vision + OCR' }, { want: 'A video-understanding demo', use: 'MiniCPM-V 4.6 / 4.5', note: 'Multimodal video' }, { want: 'An omni or voice + vision assistant', use: 'MiniCPM-o 4.5', note: 'Speech in, speech out' }, { want: 'A lightweight, local-first text app', use: 'MiniCPM5-1B', note: '1B, on-device' }, { want: 'Text reasoning / problem-solving', use: 'MiniCPM4.1-8B', note: 'Best reasoning' }, { want: 'TTS or a creative voice experience', use: 'VoxCPM2', note: 'Voice generation' } ], resources: [ { label: 'OpenBMB model collection', kind: 'models', url: 'https://huggingface.co/openbmb/collections' }, { label: 'MiniCPM-V Cookbook (GitHub)', kind: 'cookbook', url: 'https://github.com/OpenSQZ/MiniCPM-V-CookBook' }, { label: 'Cookbook (web)', kind: 'guide', url: 'https://opensqz.github.io/MiniCPM-V-CookBook/site/en/index.html' }, { label: 'GitHub repository', kind: 'code', url: 'https://github.com/OpenBMB' } ], // starterSpace: { name: 'MiniCPM-V-4.6 Demo', desc: 'Fork this Gradio Server Space to start from a working MiniCPM-V-4.6 app.', url: 'https://huggingface.co/spaces/openbmb/MiniCPM-V-4.6-Demo' }, links: { website: 'https://www.openbmb.cn/en/home', huggingface: 'https://huggingface.co/openbmb', twitter: 'https://x.com/OpenBMB', github: 'https://github.com/OpenBMB' }, prize: { title: 'Best MiniCPM Build', award: '$10,000', criteria: 'Build with MiniCPM models. The pool is split $5k per track (1st $2,500 · 2nd $1,500 · 3rd $1,000).' }, support: [ { channel: 'Discord', handle: '@tc_mb', glyph: 'chat' }, { channel: 'Discord', handle: '@yangzhizheng', glyph: 'chat' }, { channel: 'Discord', handle: '@zzhonglol2_50531', glyph: 'chat' } ] }, /* ---------- LIGHT: image models ---------- */ blackforest: { id: 'blackforest', name: 'Black Forest Labs', accent: '#5a4b73', url: 'docs.bfl.ai', sizeRange: '4B – 9B', type: 'models', tagline: 'FLUX.2 Klein — open text-to-image and precise image editing at 4B and 9B.', offer: 'FLUX.2 Klein brings high-quality text-to-image generation and precise image editing to models small enough to run yourself. Base and distilled versions ship at 4B and 9B, Apache 2.0 licensed, with a starter Space and a LoRA training toolkit ready to go.', models: [ { name: 'FLUX.2 Klein base 4B', size: 4, tags: ['text-to-image', 'Apache 2.0'], desc: 'Base text-to-image and image editing model.', url: 'https://docs.bfl.ai' }, { name: 'FLUX.2 Klein distilled 9B', size: 9, tags: ['text-to-image', 'distilled'], desc: 'Distilled variant for higher fidelity generation and editing.', url: 'https://docs.bfl.ai' } ], guide: [ { want: 'Generate images from text', use: 'FLUX.2 Klein base 4B', note: 'Text-to-image' }, { want: 'Edit or refine existing images', use: 'FLUX.2 Klein', note: 'Image editing' }, { want: 'Train a LoRA or custom style', use: 'Klein + ai-toolkit', note: 'Fine-tuning' } ], resources: [ { label: 'Documentation', kind: 'docs', url: 'https://docs.bfl.ai' }, { label: 'Klein LoRA guide', kind: 'guide', url: 'https://hf.co/blog/black-forest-labs/flux-2-klein-lora' }, { label: 'ai-toolkit trainer', kind: 'code', url: 'https://github.com/ostris/ai-toolkit' } ], starterSpace: { name: 'Klein Build Small Starter', desc: 'Fork this Gradio Space to start from a working FLUX.2 Klein app.', url: 'https://hf.co/spaces/stephenbtl/klein-build-small-starter' }, links: { website: 'https://bfl.ai', huggingface: 'https://huggingface.co/black-forest-labs', twitter: 'https://x.com/bfl_ai', github: 'https://github.com/black-forest-labs' }, prize: null, support: [{ channel: 'Discord', handle: '@stephen.btl', glyph: 'chat' }] }, /* ---------- INFRA: coding agent capabilities ---------- */ openai: { id: 'openai', name: 'OpenAI · Codex', accent: '#1f7a6b', sizeRange: 'coding agent', type: 'infra', tagline: 'The Codex coding agent (GPT-5.5) with a built-in plugin ecosystem.', offer: 'Codex is a powerful coding agent built on GPT-5.5, with ecosystem plugins for GitHub, Figma and Hugging Face, SSH connectivity to VMs, in-app UI browser checks, and a new automatic “Goal Mode” that can carry out multi-hour developer tasks unprompted.', capabilities: [ { name: 'Codex agent', glyph: 'code', desc: 'A GPT-5.5 coding agent that writes, refactors and reviews across your repo.' }, { name: 'Ecosystem plugins', glyph: 'grid', desc: 'GitHub, Figma and Hugging Face integrations built in.' }, { name: 'SSH to VMs', glyph: 'server', desc: 'Connect to remote VMs over SSH to run real work.' }, { name: 'UI browser checks', glyph: 'globe', desc: 'In-app browser checks to verify the UI it builds.' }, { name: 'Goal Mode', glyph: 'flag', desc: 'Automatic multi-hour developer tasks, carried out unprompted.' } ], resources: [], starterSpace: null, links: { website: 'https://openai.com/codex/', huggingface: 'https://huggingface.co/openai', twitter: 'https://x.com/OpenAI', github: 'https://github.com/openai/codex' }, prize: { title: 'Best Use of Codex', award: '$10,000', criteria: 'Codex-attributed commits in your connected GitHub repo or Space. Using Codex holistically — fine-tuning, complex agents — ranks higher.' }, support: [] }, /* ---------- RICH: Nemotron model suite ---------- */ nvidia: { id: 'nvidia', name: 'NVIDIA', accent: '#4d7a2e', sizeRange: '< 1B – 30B MoE', type: 'models', tagline: 'The Nemotron 3 family — efficient open models for reasoning, multimodal, speech and document AI.', offer: 'NVIDIA’s Nemotron 3 family spans tiny edge models to MoE reasoning models — all efficient, open, and built to run on hardware you can actually get. Mix and match across reasoning, multimodal, speech and document extraction.', models: [ { name: 'Nemotron 3 Nano', size: 30, tags: ['MoE', 'reasoning'], desc: '30B total · 3B active MoE — efficient reasoning for long-running agents.', url: 'https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16' }, { name: 'Nemotron 3 Nano 4B', size: 4, tags: ['edge', 'text'], desc: 'Edge-optimised 4B model for constrained hardware.', url: 'https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16' }, { name: 'Nemotron 3 Nano Omni', tags: ['omni', 'multimodal'], desc: 'Multimodal nano model across modalities.', url: 'https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16' }, { name: 'Nemotron 3 ASR', tags: ['speech', 'ASR'], desc: 'Speech recognition built for real-time use.', url: 'https://huggingface.co/nvidia/nemotron-speech-streaming-en-0.6b' }, { name: 'Nemotron Parse', size: 1, tags: ['documents', 'extraction'], desc: 'Sub-1B parameter document extraction.', url: 'https://huggingface.co/nvidia/NVIDIA-Nemotron-Parse-v1.2' }, { name: 'Nemotron Embed VL', tags: ['embeddings', 'vision'], desc: 'Vision-language embeddings for retrieval & search.', url: 'https://huggingface.co/nvidia/llama-nemotron-embed-vl-1b-v2' } ], guide: [ { want: 'A long-running agent / reasoning app', use: 'Nemotron 3 Nano', note: '3B active MoE' }, { want: 'To run on the edge', use: 'Nemotron 3 Nano 4B', note: 'Edge-ready' }, { want: 'A multimodal app', use: 'Nemotron 3 Nano Omni', note: 'Omni-modal' }, { want: 'Speech recognition', use: 'Nemotron 3 ASR', note: 'Real-time ASR' }, { want: 'Document extraction', use: 'Nemotron Parse', note: '< 1B params' } ], resources: [ { label: 'Nemotron 3 Nano usage guide', kind: 'code', url: 'https://github.com/NVIDIA-NeMo/Nemotron/tree/main/use-case-examples/Simple%20Nemotron-3-Nano%20Usage%20Example' }, { label: 'Nemotron 3 Ultra blog', kind: 'guide', url: 'https://developer.nvidia.com/blog/nvidia-nemotron-3-ultra-powers-faster-more-efficient-reasoning-for-long-running-agents/' }, { label: "Introducing NVIDIA Nemotron 3 Nano Omni", kind: "guide", url: "https://huggingface.co/blog/nvidia/nemotron-3-nano-omni-multimodal-intelligence" }, { label: 'NVIDIA Nemotron collections', kind: 'models', url: 'https://huggingface.co/nvidia/collections' }, ], starterSpace: {name: 'Nemotron-3 Nano Omni demo', desc: 'Fork this Gradio Server Space to start from a working Nemotron-3 Nano Omni app.', url: "https://huggingface.co/spaces/akhaliq/Nemotron-3-Nano-Omni"}, links: { website: 'https://developer.nvidia.com/nemotron', huggingface: 'https://huggingface.co/nvidia', twitter: 'https://x.com/NVIDIAAIDev', github: 'https://github.com/NVIDIA-NeMo/Nemotron' }, prize: { title: 'Nemotron Hardware Prize', award: '2× RTX 5080', criteria: 'Build with Nemotron models. Awarded for best Space (judged) and community engagement.' }, support: [] }, /* ---------- INFRA: serverless compute ---------- */ modal: { id: 'modal', name: 'Modal', accent: '#2f6f8f', url: 'modal.com', sizeRange: 'serverless compute', type: 'infra', tagline: 'Serverless GPUs for inference, training, batch jobs and sandboxes — from a few lines of Python.', offer: 'Not a model — the workshop floor your models run on. Modal gives you on-demand GPUs without managing infrastructure: define a function, attach a GPU, and it scales from zero to many and back. Ideal for fast inference, fine-tuning scripts in ~300 lines, parallel hyperparameter sweeps, and running agents in sandboxes.', capabilities: [ { name: 'Inference', glyph: 'bolt', desc: 'Deploy and scale inference for LLMs, audio and image/video generation.' }, { name: 'Training', glyph: 'cube', desc: 'Fine-tune open-source models on single or multi-node clusters instantly.' }, { name: 'Batch', glyph: 'grid', desc: 'Parallelize massive jobs with hyper-elastic compute infrastructure.' }, { name: 'Sandboxes', glyph: 'server', desc: 'Programmatically scale ephemeral environments for running untrusted code.' } ], guide: [ { want: 'Serve your model as an API', use: 'Inference endpoints', note: 'Autoscaling' }, { want: 'Fine-tune a small model', use: 'Training', note: 'Pay-per-second GPUs' }, { want: 'Run an agent’s code safely', use: 'Sandboxes', note: 'Isolated containers' }, { want: 'Massive parallel jobs', use: 'Batch', note: 'Hyper-elastic' } ], resources: [{ label: 'Documentation', kind: 'docs', url: 'https://modal.com/docs' }], starterSpace: null, links: { website: 'https://modal.com', huggingface: 'https://huggingface.co/modal-labs', twitter: 'https://x.com/modal', github: 'https://github.com/modal-labs' }, prize: { title: 'Best Use of Modal', award: '20,000 credits', criteria: 'Use Modal for the development or runtime of your app and note it in your Space README. 1st 10,000 · 2nd 7,000 · 3rd 3,000 credits.' }, support: [ { channel: 'Community Slack', handle: 'modal.com/slack', glyph: 'link', url: 'https://modal.com/slack' }, { channel: 'Discord', handle: '@felicia_modal', glyph: 'chat' } ] }, /* ---------- LIGHT: coding models ---------- */ jetbrains: { id: 'jetbrains', name: 'JetBrains', accent: '#b0453d', sizeRange: '12B MoE', type: 'models', tagline: 'Mellum 2 — open 12B MoE coding models, in Thinking and Instruct flavours.', offer: 'Mellum 2 is JetBrains’ family of open-source language models built for coding and language tasks. Optimised for low-latency, high-throughput inference, Apache 2.0 licensed, and deployable locally or in the cloud — for coding assistants, RAG apps, code analysis and developer tools.', models: [ { name: 'Mellum 2 Thinking', size: 12, tags: ['coding', 'reasoning'], desc: 'Reasoning-heavy configuration for harder problems.', url: 'https://huggingface.co/JetBrains/Mellum2-12B-A2.5B-Thinking-GGUF-Q4_K_M' }, { name: 'Mellum 2 Instruct', size: 12, tags: ['coding', 'low-latency'], desc: 'Blazingly fast instruct configuration for high-throughput use.', url: 'https://huggingface.co/collections/JetBrains/mellum2-gguf' } ], guide: [ { want: 'An AI coding assistant', use: 'Mellum 2 Instruct', note: 'Low-latency' }, { want: 'Reasoning-heavy code tasks', use: 'Mellum 2 Thinking', note: 'Deeper reasoning' }, { want: 'RAG or code-analysis tools', use: 'Mellum 2', note: 'Apache 2.0' } ], resources: [ { label: 'Mellum 2 GGUF collection', kind: 'models', url: 'https://huggingface.co/collections/JetBrains/mellum2-gguf' }, { label: 'Quickstart', kind: 'guide', url: 'https://huggingface.co/JetBrains/Mellum2-12B-A2.5B-Thinking-GGUF-Q4_K_M' } ], starterSpace: null, links: { website: 'https://www.jetbrains.com/ai/', huggingface: 'https://huggingface.co/JetBrains', twitter: 'https://x.com/jetbrains', github: 'https://github.com/JetBrains' }, prize: null, support: [ { channel: 'Discord', handle: '@nikitapavlichenko', glyph: 'chat' }, { channel: 'Discord', handle: '@vano006503', glyph: 'chat' }, { channel: 'Discord', handle: '@aral_dm', glyph: 'chat' } ] }, /* ---------- RICH: ASR + multilingual ---------- */ cohere: { id: 'cohere', name: 'Cohere Labs', accent: '#9c5a2b', sizeRange: '2B – 3.3B', type: 'models', tagline: 'Cohere Transcribe (ASR) and the Tiny Aya multilingual family — small models for real people.', offer: 'Cohere Transcribe is a 2B fast ASR model covering 14 languages. The Tiny Aya 3.3B series targets distinct geographical language families and low-resource languages — a great fit for local multilingual assistants, voice interfaces, accessibility tools and offline translation.', models: [ { name: 'Cohere Transcribe', size: 2, tags: ['ASR', '14 languages'], desc: 'Fast 2B speech recognition across 14 languages.', url: 'https://huggingface.co/CohereLabs/cohere-transcribe-03-2026' }, { name: 'Tiny Aya Global', size: 3.3, tags: ['multilingual', 'balanced'], desc: 'Best balance across languages and regions.', url: 'https://huggingface.co/CohereLabs/tiny-aya-global-GGUF' }, { name: 'Tiny Aya Water', size: 3.3, tags: ['European', 'Asia-Pacific'], desc: 'Tuned for European and Asia-Pacific languages.', url: 'https://huggingface.co/CohereLabs/tiny-aya-water-GGUF' }, { name: 'Tiny Aya Fire', size: 3.3, tags: ['South Asian'], desc: 'Tuned for South Asian languages.', url: 'https://huggingface.co/CohereLabs/tiny-aya-fire-GGUF' }, { name: 'Tiny Aya Earth', size: 3.3, tags: ['West Asian', 'African'], desc: 'Tuned for West Asian and African languages.', url: 'https://huggingface.co/CohereLabs/tiny-aya-earth-GGUF' } ], guide: [ { want: 'Speech recognition', use: 'Cohere Transcribe', note: '14 languages' }, { want: 'A balanced multilingual assistant', use: 'Tiny Aya Global', note: 'All regions' }, { want: 'European / Asia-Pacific languages', use: 'Tiny Aya Water', note: 'Regional' }, { want: 'South Asian languages', use: 'Tiny Aya Fire', note: 'Regional' }, { want: 'West Asian / African languages', use: 'Tiny Aya Earth', note: 'Regional' } ], resources: [ { label: 'Cohere Transcribe release blog', kind: 'guide', url: 'https://huggingface.co/blog/CohereLabs/cohere-transcribe-03-2026-release' }, { label: 'Build Small with Cohere — full guide', kind: 'cookbook', url: 'https://huggingface.co/blog/CohereLabs/build-small-hackathon-with-cohere-models' }, { label: 'Cohere Tiny Aya collection', kind: 'models', url: 'https://huggingface.co/collections/CohereLabs/tiny-aya' }, ], starterSpace: { name: 'Tiny Aya Sample Space', desc: 'Fork this Gradio Space to start from a working Tiny Aya app.', url: 'https://huggingface.co/spaces/ysharma/tiny-aya-build-small-sample' }, links: { website: 'https://cohere.com/research', huggingface: 'https://huggingface.co/CohereLabs', twitter: 'https://x.com/cohere_labs', github: 'https://github.com/Cohere-Labs' }, prize: null, support: [ { channel: 'Discord', handle: '@madeline_smith', glyph: 'chat' }, { channel: 'Discord', handle: '@alejandro_81346', glyph: 'chat' }, { channel: 'Discord', handle: '@julianmack_43074', glyph: 'chat' } ] } }; export const RESOURCE_GLYPH: Record = { docs: 'doc', cookbook: 'book', guide: 'compass', models: 'cube', code: 'code', space: 'play' }; export const PARTNER_SLUGS = Object.keys(PARTNER_DATA);