chimeraforge
Chimeraforge
Локальный, не зависящий от модели планировщик развёртывания LLM. Он превращает вопросы «какая модель, квантование, GPU и бэкенд — сколько их, влезет ли, уложится ли в SLO, сколько будет стоить» в быстрый, честный, измеримый ответ — из вашего шелла, вашего Python или вашего ИИ-ассистента.
uvx chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB"Принцип доверия
Каждое число помечено как measured, estimated или unknown, и инструмент отказывается подделывать те, за которые не может поручиться. VRAM и KV-кэш вычисляются из реальной архитектуры модели (точно). Пропускная способность — это измеренное значение, когда оно доступно, в противном случае — явная оценка по пиковой пропускной способности памяти, которая никогда не выдаётся за реальные данные. Качество ниже встроенного корпуса сообщает unknown, а не выдуманную оценку. План с нулевым результатом называет конкретный гейт, отклонивший всех кандидатов, вместо общего «ничего не найдено». Никакой телеметрии, никаких обращений домой, работает в изолированной среде.
Дайте ему модель — класс размера, репозиторий Hugging Face, тег Ollama или ручные переопределения для невыпущенной модели — и он выполнит поиск по пространству (модель x квантование x бэкенд x количество GPU x тензорный/конвейерный параллелизм) с учётом VRAM, качества, задержки, стоимости, энергопотребления и опционального гейта безопасности, а затем вернёт самую дешёвую конфигурацию, удовлетворяющую вашему SLO.
12 команд, один инструмент: plan - suggest - measure - validate - catalog - safety - bench - eval - compare - refit - report - mcp.
Эмпирический корпус восходит к техническим отчётам TR108-TR137 (~204 000 реальных замеров на потребительских GPU). Полную историю изменений см. в CHANGELOG.
Related MCP server: llm-cost
Установка
Попробуйте без установки:
uvx chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB"
pipx run chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB"Установите по-настоящему:
pip install chimeraforge # planner + model resolution (HF/Ollama) + suggest/measure/safety/bench
pip install chimeraforge[bench] # + GPU environment metadata for benchmarks (pynvml)
pip install chimeraforge[mcp] # + MCP server so Claude/GPT/Cursor can call the planner
pip install chimeraforge[eval] # + quality evaluation (BERTScore, ROUGE-L)
pip install chimeraforge[refit] # + coefficient refitting (numpy, scipy)
pip install chimeraforge[all] # everythingТребуется Python 3.10+. Базовая установка покрывает планировщик и команды, работающие с сетью (httpx — основная зависимость). plan / suggest / catalog работают полностью офлайн; bench / measure / safety требуют запущенного бэкенда (Ollama, vLLM или TGI). Windows / macOS / Linux.
Быстрый старт
# Plan a registry size class on your GPU
chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB" --request-rate 2.0
# Plan ANY model -- a Hugging Face repo or an Ollama tag
chimeraforge plan --model Qwen/Qwen2.5-7B-Instruct --hardware "RTX 4090 24GB"
chimeraforge plan --model ollama:qwen3:14b --ollama-url http://localhost:11434
# Split a model too big for one GPU across several (tensor parallelism)
chimeraforge plan --model meta-llama/Llama-3.3-70B-Instruct --hardware "H100 80GB" --tp 4
# Shrink the KV-cache, print the cost/latency/quality trade-off menu
chimeraforge plan --model-size 8b --hardware "RTX 4080 12GB" --kv-quant q8 --pareto
# Benchmark a live model and plan on the MEASURED numbers
chimeraforge plan --model qwen3:14b --measure
# Discover + rank what fits your GPU and budget
chimeraforge suggest --source ollama --hardware "RTX 4090 24GB" --budget 500MCP-сервер — дайте Claude / GPT / Cursor те же цифры
Подбор GPU — это именно та область, где ассистенты ошибаются: цены и характеристики оборудования на момент обучения модели, плюс подверженная ошибкам арифметика KV-кэша/батчинга по памяти. chimeraforge mcp запускает stdio MCP-сервер, чтобы ассистент вызывал настоящий планировщик на реальных данных, а не угадывал.
pip install "chimeraforge[mcp]"Claude Code:
claude mcp add --transport stdio chimeraforge -- uvx --from "chimeraforge[mcp]" chimeraforge mcpClaude Desktop / Cursor (добавьте в ваш MCP-конфигурационный файл):
{
"mcpServers": {
"chimeraforge": {
"command": "uvx",
"args": ["--from", "chimeraforge[mcp]", "chimeraforge", "mcp"]
}
}
}Флаг --from "chimeraforge[mcp]" подтягивает MCP SDK; uvx запускает сервер в изолированном окружении. Если вы уже выполнили pip install "chimeraforge[mcp]" в окружение, которое запускает ваш клиент, вы можете вместо этого использовать "command": "chimeraforge", "args": ["mcp"].
Предоставляет три инструмента: chimeraforge_plan (полный поиск по гейтам), chimeraforge_resolve_model (сопоставляет идентификатор модели с её реальными параметрами/архитектурой) и chimeraforge_list_hardware. Каждый результат несёт ту же атрибуцию measured / estimated / unknown, что и CLI, а описания инструментов подсказывают модели предпочитать их собственным знаниям. chimeraforge_plan также возвращает поле launch — команду запуска для рекомендуемой конфигурации, — чтобы ассистент мог ответить на вопрос «и как мне это запустить», не выдумывая флаги.
Команды
plan — прогнозирующий планировщик мощностей
chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB" --request-rate 2.0
chimeraforge plan --model Qwen/Qwen2.5-7B-Instruct --hardware "RTX 4090 24GB" # any HF repo
chimeraforge plan --model ollama:qwen3:14b --ollama-url http://localhost:11434 # any Ollama tag
chimeraforge plan --model meta-llama/Llama-3.3-70B-Instruct --hardware "H100 80GB" --tp 4 # multi-GPU
chimeraforge plan --model-size 3b --kv-quant q4 --pareto # smaller KV cache, trade-off menu
chimeraforge plan --model-size 8b --hardware "RTX 4090 24GB" --launch # + the serve command to actually run it
chimeraforge plan --model-size 3b --workload agent --safety-target 0.85 --jsonПланирует любую модель: класс размера из реестра, HF-репозиторий (
org/name), тег Ollama или ручные переопределения (--params-b/--n-layers/...).Выполняет поиск по пространству (модель x квантование x бэкенд x N-реплик x батч/GPU) через конвейер из 5 гейтов: VRAM -> качество -> безопасность (опционально) -> задержка -> бюджет.
Моделирует реальную физику обслуживания: непрерывный батчинг (vLLM/TGI), разделение prefill/decode (TTFT + TPOT), конкурентность, ограниченную KV-кэшем, и учёт дисперсии в очередях (
--workload).Вмещает модели, слишком большие для одного GPU:
--tensor-parallel/--tp {N|auto}разделяет веса + KV между N GPU (в стиле Megatron, с моделированием коммуникаций);--pipeline-parallel/--pp {N|auto}вместо этого разбивает слои на N стадий (дешевле на медленных межсоединениях, требует батчинга для заполнения конвейера). Пока не комбинируются.Обслуживает то, что обслуживает бэкенд: GGUF-квантования предлагаются на Ollama; vLLM/TGI получают FP16 и FP8 (только на GPU с FP8-тензорными ядрами — Ada/Hopper/Blackwell/CDNA3). Планировщик больше не предлагает GGUF-чекпоинт на vLLM с ускорением llama.cpp в цене.
Квантование KV-кэша (
--kv-quant {fp16,q8,q4}) уменьшает кэш и повышает максимальную конкурентность — наибольший выигрыш при длинном контексте.Реалистичная стоимость (
--duty-cycle,--gpu-price-multiplier): заглавные цены $/1M-токенов рассчитаны на полностью загруженный парк. Вы также платите за зарезервированный запас и за каждый час простоя, поэтому эффективная цифра для 8B при 2 запросах/с составляет $2,71/1M при полной загрузке и $9,04/1M при 30%, против $0,92 при полной ёмкости. Цены на spot/reserved — это ваш ввод, а не встроенное предположение.Точка безубыточности «свой хостинг vs API» (
--compare-api): оценивает вашу нагрузку по ценам хостинговых API и сообщает месячный объём, при котором собственный хостинг начинает выигрывать. Цены — это снимок с датой и URL источника для каждого провайдера, помечается устаревшим после 90 дней — никогда не выдаётся за актуальное предложение, — а фронтирный API помечается как другой уровень качества, а не выдаётся за сопоставимый.Кэширование префиксов (
--prefix-cache-hit-rate): чат-боты и агентский трафик переиспользуют длинный системный промпт, поэтому большая часть prefill уже закэширована. При промпте 4k и 90% попаданий 8B-модель переходит с 166мс до 17мс TTFT. По умолчанию 0 и никогда не выводится автоматически, а KV, которую экономит общий префикс, намеренно не вычитается — занижение KV-кэша — это то, что превращает «влезает» в OOM.Модели рассуждений (
--reasoning-tokens N): скрытые токены мышления декодируются GPU и хранятся в KV, хотя вызывающий их не видит. Учёт только видимого вывода занижает декодирование на коэффициент рассуждений — 1000 скрытых токенов перевели план 8B-модели с 363мс до 6128мс p95 в нашей собственной проверке. По умолчанию 0 и никогда не выводится автоматически: это свойство вашей нагрузки, а не весов.Учёт формы внимания в KV: MLA (DeepSeek-V2/V3) кэширует сжатый латентный вектор, а не попарные K/V — оценка как GQA завышает кэш DeepSeek-V3 в 57 раз, — а модели со скользящим окном перестают наращивать кэш за пределами окна. Окно, чей паттерн слоёв не объявлен, не применяется, потому что занижение KV-кэша — это то, что превращает «влезает» в OOM.
С учётом Mixture-of-Experts: VRAM рассчитывается по общим параметрам (все эксперты остаются в памяти), а пропускная способность и TTFT используют активные параметры (токен читает только тех экспертов, к которым направляется). Рассмотрение MoE-модели как плотной занижает её пропускную способность в 3,6 раза на Mixtral-8x7B и ~в 18 раз на DeepSeek-V3. Активные счётчики выводятся из реальной геометрии экспертов модели и совпадают с опубликованными цифрами.
Энергопотребление (
--electricity-rate): ежемесячная стоимость кВт·ч,$/1M-токенов (+энергия)и ток/с-на-ватт, сообщаются отдельно (не включаются) от бюджетного гейта.Экспорт команды запуска (
--launch): генерирует командуvllm serve/ollama run/ TGIdocker runдля выигравшей конфигурации с заполненными длиной контекста, степенью TP/PP, размером батча и KV-dtype из плана — флаги, которые легко вычислить с ошибкой вручную. Он не выдумает то, что не может вывести: уровень GGUF-квантования становится примечанием запускать нативный эквивалентный чекпоинт, а не выдуманным флагом--quantization.Поатрибутная атрибуция (
measured/estimated/unknown); объясняет решающий гейт, когда ничего не подходит.Проверено на данных реестра: VRAM R^2=0,968, пропускная способность R^2=0,859, качество RMSE=0,062, задержка MAPE=1,05% (в 20,4 раза лучше аналитического M/D/1, TR133). Без ML — эмпирические таблицы поиска с интерполяцией из первых принципов (roofline для моделей вне реестра).
suggest — поиск и ранжирование моделей
chimeraforge suggest --source ollama --hardware "RTX 4090 24GB" --budget 500
chimeraforge suggest --source hf --hf-limit 8 --hardware "RTX 4080 12GB"
chimeraforge suggest --source catalog --hardware "RTX 4080 12GB" # offline, after `catalog --build`Извлекает кандидатов из живого Ollama (/api/tags), HF Hub (топ text-generation) и/или локального каталога; сопоставляет каждого с реальными параметрами/архитектурой, запускает тот же поиск по гейтам и показывает лучшую конфигурацию для каждой модели.
measure — бенчмарк вживую, планирование на реальных цифрах
chimeraforge measure --model qwen3:14b --ollama-url http://localhost:11434
chimeraforge plan --model qwen3:14b --measure # measure then plan in one stepТестирует живую модель (реальная пропускная способность N=1, время обслуживания, масштабирование конкурентности) и включает результаты в локальный корпус. plan / suggest затем автоматически предпочитают измеренные числа (атрибуция меняется на measured).
catalog — локальный каталог моделей
chimeraforge catalog --build # resolve a curated seed (+ --with-ollama) and cache specs
chimeraforge catalog # list the cached catalogСохраняет разрешённые спецификации, чтобы suggest --source catalog ранжировал проверенный набор полностью офлайн.
safety — живой экран отказов
chimeraforge safety --model llama3.2-3b --prompts harmful.txt --quant Q4_K_M --safety-target 0.85Там, где plan --safety-target принимает решение на основе встроенных данных TR134/TR142, safety измеряет: он прогоняет ваши пробные промпты через живую модель, классифицирует отказы (на основе правил — базовый уровень TR134 regex), сообщает измеренный уровень отказов по сравнению с данными встроенного гейта (ожидаемый, дрейф, уровень риска RTSI) и завершается с кодом 1 ниже --safety-target. Промпты предоставляете вы (--prompts, по одному на строку) — с пакетом не поставляется атакующий корпус; направьте его на HarmBench / AdvBench / ваш собственный набор. Требуется запущенный Ollama.
bench — живое тестирование вывода
chimeraforge bench --model llama3.2-3b --runs 5
chimeraforge bench --model llama3.2-3b --all-quants --context 512,1024,2048,4096 --json
chimeraforge bench --model llama3.2-3b --backend vllm --base-url http://localhost:8000Три профиля нагрузки (одиночный / пакетный / серверный-Пуассон); измеряет пропускную способность, TTFT и задержку с p50/p90/p95/p99; предупреждения о стабильности на основе CV; вывод в JSON.
eval — оценка качества
chimeraforge eval --task general_knowledge --json
chimeraforge eval --predictions preds.txt --references refs.txt --model llama3.2-3bМетрики: точное совпадение, ROUGE-L (запасной вариант LCS), BERTScore, когерентность -> композитный (0,2*EM + 0,3*ROUGE + 0,3*BERT + 0,2*когерентность). Уровни качества из TR125; 3 встроенные задачи (general_knowledge, summarization, code). Передайте --fp16-baseline, чтобы классифицировать уровень снижения.
compare — сравнение бенчмарк-прогонов
chimeraforge compare --baseline run1.json --candidate run2.json,run3.json --jsonСопоставляет конфигурации по (модель, бэкенд, квантование, нагрузка, длина контекста); вычисляет дельты пропускной способности/TTFT/длительности со сводкой улучшений/регрессий.
refit — обновление коэффициентов планировщика
chimeraforge refit --bench-dir ./results/ --output fitted_models.json --validateБайесовское смешивание (взвешивание по достоверности ключа), аппаратные смещения, переобучение степенного закона и набор из 10 проверок, которые блокируют запись (--validate).
report — создание отчётов
chimeraforge report --results-dir ./results/ --format markdown --output report.mdMarkdown (совместимый с GitHub) и автономный, XSS-безопасный HTML; статистический анализ (RMSE, MAE, MAPE, R^2) с таблицами процентилей по конфигурациям.
mcp — предоставление планировщика ИИ-ассистентам
chimeraforge mcpЗапускает описанный выше stdio MCP-сервер. Требует pip install "chimeraforge[mcp]".
Что моделируется
Параметр | Как вычисляется | Происхождение |
VRAM / KV-кэш | Из первых принципов на основе реальной архитектуры модели; KV-квантование и шардирование с учётом TP/PP | точное |
Макс. конкурентность | Последовательности, ограниченные KV-кэшем, на GPU | точное |
Пропускная способность (декодирование) | Измеренный поиск, иначе потолок по пропускной способности; кривая непрерывного батчинга; коммуникации TP / пузыри PP | измеренное / оценённое |
TTFT (prefill) | Ограничено вычислениями, GPU FP16 TFLOPS x MFU | оценённое |
Качество | Измеренный составной поиск, оценка по семейству моделей или неизвестно | измеренное / оценённое / неизвестное |
Стоимость | GPU $/час x размер флота ($/1M-токенов инвариантно к числу реплик) | точное |
Энергия | Ежемесячные кВт·ч на основе TDP, $/1M-токенов (+энергия), токенов/с на ватт | оценённое |
Безопасность | Поиск частоты отказов TR134/TR142 (опциональный шлюз) | измеренное / неизвестное |
Оборудование: 22 GPU — потребительские Ada + Blackwell (серии RTX 30/40/50), датацентровые (A100 40/80GB, H100, H200, B200, L4, T4) и AMD MI300X — каждая с VRAM, пропускной способностью, FP16 TFLOPS, TDP и интерконнектом (NVLink/Infinity Fabric/PCIe).
Известные ограничения (честно): спекулятивное декодирование пока не моделируется. Кэширование префиксов учитывает экономию на prefill, но не на KV (намеренно консервативно). Токены рассуждения моделируются, но их доля — ваш ввод (--reasoning-tokens), никогда не выводится. Для MoE активные и общие параметры моделируются, но экспертный параллелизм и дисбаланс нагрузки маршрутизации — нет. Покрытие квантования для vLLM/TGI — FP16 + FP8 (AWQ/GPTQ пока нет); качество FP8 оценивается, а не измеряется. Пропускная способность TP и PP — оценки на основе моделирования коммуникаций, не измеренные, и их нельзя комбинировать в одном плане. Очереди аналитические (с учётом дисперсии), а не дискретно-событийный симулятор. Встроенный корпус в основном подобран на одном стенде (RTX 4080 12GB); другие GPU масштабируются от пропускной способности/вычислений, пока вы не measure на своих. MCP-сервер только stdio (Claude Code/Desktop, локальный Cursor) — удалённого транспорта пока нет.
Что решило исследование
Фаза 2 (TR123-TR133, ~106 000 измерений) вылилась в фреймворк развёртывания на основе артефактов — те же правила, которые применяет планировщик:
Решение | Рекомендация | Доказательства |
Однопроцессный бэкенд | Ollama Q4_K_M | Наивысшая пропускная способность на доллар; качество в пределах -4.1 п.п. (TR123-TR125) |
Многопроцессный бэкенд (N>=4) | vLLM FP16 | Преимущество 2.25x за счёт непрерывного батчинга (TR130-TR132) |
Политика компиляции | Только prefill, Linux, Inductor+Triton | Ускорение 24-60%; сбои при декодировании 100% (TR126) |
Квантование | Q4_K_M по умолчанию; Q8_0 для критичного качества; никогда Q2_K | Универсальная оптимальная точка для 5 моделей (TR125) |
Бюджет контекста | Ollama для >4K токенов на 12 ГБ | Переполнение VRAM = обрывы в 25-105 раз (TR127) |
Планирование мощностей |
| Проверено R^2>=0.859; превосходит M/D/1 в 20.4 раза (TR133) |
Проверка безопасности |
| Частота отказов + риск RTSI на конфигурацию; отклоняет ячейки с коллапсом безопасности (TR134/TR142) |
Ключевые выводы (полные данные в TR): Rust превосходит Python в однопроцессном режиме (+15.2% пропускной способности, -58% TTFT, -67% памяти — TR112); двойной Ollama достигает почти идеального многопроцессного параллелизма (~99%) против 82.2% на одном экземпляре (TR110/TR113/TR114); непрерывный батчинг vLLM даёт преимущество 2.25x при N=8, с узким местом в пропускной способности памяти GPU, а не в стеке (TR130-TR132).
Полное исследование: docs/archive/technical_reports.md индексирует все 32 отчёта; полный архив с методологией и ссылками на сырые данные находится в outputs/publish_ready/reports/.
Как создаются числа
~204 000 первичных измерений в 32 технических отчётах (TR108-TR137 + происхождение безопасности TR142/TR146), на RTX 4080 Laptop (12 ГБ). Дедупликация: TR137/TR142 — синтезы уже учтённых данных.
Строгость: изоляция свежих процессов на каждый запуск (без смещения тёплого кэша), принудительные холодные старты, 3-5 запусков на конфигурацию для статистической уверенности, структурированное логирование JSON/CSV с полным происхождением. Каждое утверждение прослеживается до сырых данных, которые можно перезапустить.
Контекст программы: ChimeraForge — действующий CLI-срез родительской программы Banterhearts (~1 337 000 первичных + судейских измерений в 54 TR); исследования поверхности атак безопасности и стека обслуживания находятся в соседних репозиториях.
549 автоматических тестов (
pytest tests/) покрывают модели планировщика, поиск по шлюзам, резолвер, обнаружение, безопасность, бэкенды бенчмарков и MCP-сервер — не зависят от GPU, для основного набора не требуется живой бэкенд.
Воспроизведите любое число: найдите утверждение в отчёте в outputs/publish_ready/reports/, проследуйте по ссылке к папке данных, изучите CSV/JSON и перезапустите предоставленные скрипты или блокноты. См. docs/archive/methodology.md.
Структура репозитория
Путь | Содержимое |
| CLI |
| Бенчмаркинг, мониторинг, профилирование Python-агентов |
| Реализации Rust для одного и нескольких агентов (Tokio + 4 альтернативных рантайма) |
| Канонический архив TR (TR108-TR137) + синтезы — начните здесь для выводов |
| Руководства, справочник API и индекс технических отчётов — начните здесь для инструкций |
| Каркас воспроизведения, базовые линии и сырые артефакты бенчмарков |
Документация
docs/README.md— индекс документации и навигацияdocs/quick_start.md— первый запуск бенчмарка (Python + Rust)docs/API.md— справочник Python API для пакетаdocs/archive/technical_reports.md— индекс всех 32 технических отчётовdocs/archive/dual_ollama_setup.md— требуется для воспроизведения многопроцессных результатовdocs/archive/methodology.md/docs/archive/rust_vs_python.md— методология и полное сравнение языков
Вклад
Вклад приветствуется — см. CONTRIBUTING.md. Хорошие области: дополнительные конфигурации бенчмарков, новые стратегии оптимизации, больше моделей/оборудования, документация и инструменты анализа.
Лицензия
MIT — см. LICENSE.
Благодарности
Проведено в рамках исследовательской программы Banterhearts LLM Performance Research: Фаза 1 (TR108-TR122) установила методологию измерений и межъязыковое сравнение, Фаза 2 (TR123-TR133) создала фреймворк развёртывания и планировщик мощностей, а Фаза 3 (TR134-TR137) измерила стоимость безопасности оптимизации вывода — теперь это опциональный шлюз безопасности планировщика.
Репозиторий: https://github.com/Sahil170595/Chimeraforge - PyPI: https://pypi.org/project/chimeraforge/ - Статус: Бета, активно разрабатывается
Available Tools
5 toolschimeraforge_compare_apiA
Compare self-hosting against the hosted APIs for a workload: sizes the cheapest feasible GPU fleet, prices the same traffic through each API model, and gives the monthly output-token volume where the two break even. Use for 'is it cheaper to self-host or use the API', 'when does a GPU pay for itself'. API prices come from a dated snapshot -- the result reports its age and flags it when stale; say so rather than quoting an old price as current.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| hardware | Yes | ||
| duty_cycle | No | ||
| model_size | No | 8b | |
| request_rate | No | ||
| allow_network | No | ||
| prompt_tokens | No | ||
| context_length | No | ||
| latency_slo_ms | No | ||
| quality_target | No | ||
| reasoning_tokens | No | ||
| avg_output_tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full behavioral burden and does it well. It discloses that API prices come from a dated snapshot, that the result reports its age and flags staleness, and instructs the agent not to present old prices as current. This is a meaningful, non-obvious behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first explains what the tool computes, the second gives real user intents, and the third warns about stale pricing. The outcome is well structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete on purpose, behavior, and the staleness caveat, but it does not cover the 12-parameter input surface or any expected return format beyond the three high-level outputs. For a tool with no output schema and no annotations, that leaves a meaningful completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and there are 12 parameters, so the description needed to compensate. It only implies concepts like workload and traffic without explaining properties such as hardware, model, duty_cycle, latency_slo_ms, quality_target, or avg_output_tokens. An agent would struggle to set these correctly based solely on this description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (compare), a specific subject (self-hosting vs. hosted APIs), and the three concrete outputs: cheapest feasible GPU fleet sizing, price comparison for identical traffic, and break-even token volume. This clearly differentiates it from siblings like 'plan' and 'suggest'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit, user-quoted use cases: 'is it cheaper to self-host or use the API' and 'when does a GPU pay for itself'. It does not explicitly name alternatives or say when to use a sibling tool instead, so it stops slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chimeraforge_list_hardwareA
List known GPUs with VRAM/bandwidth/TDP/interconnect.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose any behavioral traits such as output format, size limits, or whether it reflects real-time data. The simple listing implies read-only behavior but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that directly states the core action and output characteristics. There is no wasted text, and it is immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless listing tool with no output schema, the description is adequately complete. It identifies the resource (GPUs) and the key attributes (VRAM/bandwidth/TDP/interconnect). However, it could marginally benefit from a note on data recency or ordering, but this is not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description correctly implies no input is needed. Since there are no parameters, no additional semantic information is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List known GPUs' with specific attributes (VRAM/bandwidth/TDP/interconnect). This is a specific verb+resource and clearly distinguishes from siblings like chimeraforge_plan and chimeraforge_resolve_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention any context, prerequisites, or exclusions. The description is purely functional with no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chimeraforge_planA
Recommend the best (model x quantization x backend x GPU-count) deployment for a workload, or report why nothing fits. Returns candidates with per-number provenance (measured/extrapolated/estimated/unknown). Use for: 'what GPU do I need for ', 'will fit on ', 'how many GPUs for N req/s', 'what will it cost'. Set platform (linux/windows/wsl2/macos) to the deployment OS: engines are offered only where their own docs say they run.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | online | |
| cloud | No | ||
| model | No | ||
| hardware | Yes | ||
| kv_quant | No | fp16 | |
| platform | No | ||
| workload | No | steady | |
| lora_rank | No | ||
| duty_cycle | No | ||
| model_size | No | 3b | |
| grid_region | No | ||
| lora_target | No | qv | |
| tpot_slo_ms | No | ||
| ttft_slo_ms | No | ||
| quality_from | No | ||
| request_rate | No | ||
| think_time_s | No | ||
| allow_network | No | ||
| allow_offload | No | ||
| gpu_overrides | No | ||
| lora_adapters | No | ||
| prompt_tokens | No | ||
| safety_target | No | ||
| session_turns | No | ||
| context_length | No | ||
| latency_slo_ms | No | ||
| quality_target | No | ||
| model_revisions | No | ||
| tensor_parallel | No | ||
| budget_usd_month | No | ||
| reasoning_tokens | No | ||
| avg_output_tokens | No | ||
| pipeline_parallel | No | ||
| use_contributions | No | ||
| host_bandwidth_gbps | No | ||
| gpu_price_multiplier | No | ||
| prefix_cache_hit_rate | No | ||
| max_num_batched_tokens | No | ||
| unified_memory_fraction | No | ||
| carbon_intensity_g_per_kwh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two genuine behavioral traits: results come back labeled with per-number provenance (measured/extrapolated/estimated/unknown), which tells the agent how much to trust each figure, and engine availability is gated by the platform's own documentation. It stops short of stating the obvious-but-unconfirmed fact that this is a pure analysis call with no side effects, and says nothing about cost, latency, or what happens when nothing fits beyond a short reason.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core capability front-loaded, followed by return-shape and use-case routing, then a parameter caveat. No filler or repetition. The platform sentence is somewhat tacked on at the end and could be grouped with the framing, but nothing is wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 40-parameter tool with no annotations and no output schema, the description should be doing far more work than it is. It usefully characterizes the return value via provenance labels even without an output schema, but it leaves the semantics of nearly every input undocumented, gives no prerequisite or scoping guidance, and never states the invocation cost of such a large search space.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 40 parameters at 0% schema description coverage, and the description only gives meaning to one of them (platform). High-impact inputs such as gpu_overrides, allow_offload, use_contributions, quality_target, gpu_price_multiplier, prefix_cache_hit_rate, duty_cycle, safety_target, and the parallel/SLO knobs are left completely opaque, so an agent has little basis for filling them meaningfully rather than relying on defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb (recommend) and a well-defined resource (model x quantization x backend x GPU-count deployment), and even states the failure mode ('or report why nothing fits') plus the return shape (candidates with provenance). It is very clear what the tool does, but it never names or contrasts with the ambiguous sibling chimeraforge_suggest, leaving the agent to infer the boundary from context alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use for:' list gives four concrete query shapes ('what GPU do I need for <model>', 'will <model> fit on <gpu>', 'how many GPUs for N req/s', 'what will it cost'), which is strong intent-routing guidance. It also gives an actionable platform rule (set platform to the deployment OS; engines are offered only where their docs say they run). What is missing is any explicit when-not-to-use or named alternative, so the agent must guess whether a 'what GPU do I need' question belongs here or in chimeraforge_suggest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chimeraforge_resolve_modelB
Resolve a model id to real params/architecture (grounds hallucinated specs).
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| hf_revision | No | ||
| allow_network | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It hints that results are grounded/real rather than generated, but omits critical behavior: that allow_network defaults to true (this call may hit the network), how hf_revision affects resolution, what happens on failure, and whether results are cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action and purpose come first. The parenthetical is slightly jargon-y but earns its place by conveying the anti-hallucination intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain more about the return shape ('params/architecture' is only a gesture) and the network/revision behavior of the tool. Adequate as a minimum but leaves meaningful gaps for a 3-param resolution tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 3 parameters, so the description must compensate. It only loosely implies what 'model' means (a model id) and says nothing about hf_revision or allow_network, leaving two of three parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Resolve a model id to real params/architecture' clearly states the transformation performed. The parenthetical '(grounds hallucinated specs)' reinforces intent. It is distinguishable from siblings like list_hardware or compare_api, though it never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical implies the use case (verify model specs rather than trust hallucinated ones), which is a soft usage signal. However, it gives no when-not guidance, no prerequisites, and never points to an alternative among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chimeraforge_suggestA
Rank the models that actually fit and hit the SLO on a given GPU -- the inverse of planning. Use for 'what can I run on a 4090', 'best model for 12GB'. Sources: catalog (offline curated set), ollama (locally installed), hf (top Hub repos).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| source | No | catalog | |
| hardware | Yes | ||
| hf_limit | No | ||
| ollama_url | No | ||
| request_rate | No | ||
| context_length | No | ||
| latency_slo_ms | No | ||
| quality_target | No | ||
| budget_usd_month | No | ||
| avg_output_tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the behavioral disclosure burden. It communicates core behavior: ranking models against a fit/SLO objective and drawing from three sources: catalog, ollama, and hf. However, it does not disclose external interactions (e.g., reaching out to Ollama or Hugging Face), side effects, failure modes, or whether the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry the core behavior, user-facing examples, and source list without redundancy. The most important action is front-loaded: 'Rank the models...' instead of burying the intent in filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core purpose and high-level sources, which is enough to make a reasonable first call with the one required parameter. However, with 11 parameters, no output schema, no annotation safety clues, and 0% parameter documentation coverage, the description omits too much detail to fully steer an agent through meaningful variations of source, SLO, latency, and quality trade-offs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only adds meaning to the source concept ('catalog', 'ollama', 'hf') and general context around SLO. The other 10 parameters, including latency_slo_ms, request_rate, quality_target, hf_limit, and budget_usd_month, are left to the agent to infer from their names and defaults, which is risky for a tool with this much configuration surface.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and object: 'Rank the models that actually fit and hit the SLO on a given GPU.' It clearly identifies itself as the inverse of planning, which separates it from its most likely sibling confusion. The example use cases ('what can I run on a 4090', 'best model for 12GB') make the intent immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage framing with quoted examples and explicitly contrasts it with planning. It would be stronger if it also stated when not to use it or pointed to the sibling tools, but the 'inverse of planning' hint gives the agent enough context to route appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.65.0- Changed
chimeraforge_plan1 field changed- added
Input schema / properties / model_revisionsAdded value: +{ + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model Revisions" +}
- Changed
chimeraforge_resolve_model1 field changed- added
Input schema / properties / hf_revisionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hf Revision" +}
1 tool update
v0.50.0- Changed
chimeraforge_plan4 fields changed- added
Input schema / properties / cloudAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Cloud" +} - added
Input schema / properties / session_turnsAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Session Turns" +} - added
Input schema / properties / think_time_sAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Think Time S" +} - added
Input schema / properties / use_contributionsAdded value: +{ + "default": false, + "title": "Use Contributions", + "type": "boolean" +}
1 tool update
v0.46.0- Changed
chimeraforge_plan6 fields changed- added
Input schema / properties / carbon_intensity_g_per_kwhAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Carbon Intensity G Per Kwh" +} - added
Input schema / properties / grid_regionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Grid Region" +} - added
Input schema / properties / latency_slo_ms / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / latency_slo_ms / defaultPrevious value: -5000New value: +null - removed
Input schema / properties / latency_slo_ms / typeRemoved value: -"number" - added
Input schema / properties / modeAdded value: +{ + "default": "online", + "title": "Mode", + "type": "string" +}
1 tool update
v0.43.0- Changed
chimeraforge_plan2 fields changed- added
Input schema / properties / platformAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Platform" +} - added
Input schema / properties / unified_memory_fractionAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Unified Memory Fraction" +}
1 tool update
v0.34.0- Changed
chimeraforge_plan3 fields changed- added
Input schema / properties / gpu_overridesAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Gpu Overrides" +} - added
Input schema / properties / max_num_batched_tokensAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Max Num Batched Tokens" +} - added
Input schema / properties / quality_fromAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Quality From" +}
3 tool updates
v0.30.0- Added
chimeraforge_compare_api - Changed
chimeraforge_plan10 fields changed- added
Input schema / properties / allow_offloadAdded value: +{ + "default": false, + "title": "Allow Offload", + "type": "boolean" +} - added
Input schema / properties / gpu_price_multiplierAdded value: +{ + "default": 1, + "title": "Gpu Price Multiplier", + "type": "number" +} - added
Input schema / properties / host_bandwidth_gbpsAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Host Bandwidth Gbps" +} - added
Input schema / properties / lora_adaptersAdded value: +{ + "default": 0, + "title": "Lora Adapters", + "type": "integer" +} - added
Input schema / properties / lora_rankAdded value: +{ + "default": 16, + "title": "Lora Rank", + "type": "integer" +} - added
Input schema / properties / lora_targetAdded value: +{ + "default": "qv", + "title": "Lora Target", + "type": "string" +} - added
Input schema / properties / safety_targetAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Safety Target" +} - added
Input schema / properties / tpot_slo_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Tpot Slo Ms" +} - added
Input schema / properties / ttft_slo_msAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Ttft Slo Ms" +} - added
Input schema / properties / workloadAdded value: +{ + "default": "steady", + "title": "Workload", + "type": "string" +}
- Added
chimeraforge_suggest
3 tool updates
- First observed
chimeraforge_list_hardware - First observed
chimeraforge_plan - First observed
chimeraforge_resolve_model
TDQS
Scored across 5 tools
Each tool targets a distinct task: model metadata lookup (resolve_model), GPU metadata lookup (list_hardware), forward planning (plan), API-vs-self-host cost analysis (compare_api), and inverse ranking (suggest). The only potential overlap is plan vs suggest, but the description explicitly frames suggest as 'the inverse of planning,' resolving ambiguity.
All names share the consistent chimeraforge_ prefix and mostly use a verb_noun pattern (resolve_model, list_hardware, compare_api). Two entries are bare verbs (plan, suggest), a minor deviation that stays readable and predictable.
Five tools is well-scoped for a GPU/model deployment advisor: model resolution, hardware lookup, forward planning, cost comparison, and inverse suggestion each cover a distinct need. No tool feels redundant or missing at the structural level.
The surface covers the core advisory lifecycle: resolving models, listing hardware, planning deployments, comparing self-host vs API cost, and reverse-fitting models to GPUs. Minor gaps exist (e.g., no general catalog browsing or pricing-refresh beyond the dated snapshot noted in compare_api), but agents can work around them.
Maintenance
Related MCP Connectors
LLM serving capacity planner: VRAM, KV cache, GPU topology, latency, and cost.
Does an LLM fit on your GPU? VRAM, KV cache and GPU count for any Hugging Face model.
Can this LLM run on my GPU? VRAM, speed ceiling and what fits instead, for any model and GPU.
Will this LLM fit on your GPU, multi-GPU rig or Mac? Exact VRAM & KV-cache math. Read-only.
Related MCP Servers
- AlicenseAqualityDmaintenanceEstimates GPU requirements, training/inference costs, and cloud-vs-on-prem TCO for AI workloads using deterministic calculators.121MIT
- AlicenseNot gradedqualityCmaintenanceToken cost math for LLM API calls: current per-million-token rates for 69 models across 17 providers, with local arithmetic for estimates, comparisons and monthly budgets. Rates are verified and date-stamped.44 npm2MIT
- AlicenseAqualityAmaintenanceEvidence-backed private AI deployment intelligence for GPU and LLM inference. Search benchmark evidence, check deployment fit, predict performance, get hardware recommendations, and generate launch configurations.5GPL 3.0
- AlicenseAqualityAmaintenanceReal-time cluster health monitoring, pre-request NLMS latency prediction, and intelligent prompt routing across multi-instance LLM backends (vLLM, Ollama, SGLang, TGI).43Apache 2.0