glm-orchestrator
# glm-orchestrator
Відкритий MCP-оркестратор для GLM та інших моделей із
OpenAI-compatible API. Він підтримує потокові відповіді, фонові запуски,
скасування, локальний журнал, web UI та опціональний міст до інших
MCP-серверів.
Цей публічний репозиторій має окрему чисту історію і не містить робочих
промптів, журналів, локальних конфігів або даних доступу.
Інструкції для AI coding agents: [`AGENTS.md`](AGENTS.md).
Інтерактивна архітектурна схема: [`architecture.html`](architecture.html).
## Вимоги
- Node.js 20.3 або новіший;
- OpenAI-compatible endpoint із `/v1/models`, `/v1/chat/completions` або
`/v1/responses`;
- API key, якщо його вимагає провайдер.
## Встановлення
```bash
git clone https://github.com/RiasJ1Dar/glm-orchestrator-public.git
cd glm-orchestrator-public
npm install
```
Задайте конфігурацію через змінні процесу:
```text
GLM_BASE_URL=https://your-openai-compatible-endpoint.example
GLM_API_KEY=your-api-key
GLM_MODEL=glm-5.2
```
`GLM_API_KEY` можна не задавати для локального endpoint без авторизації.
Не записуйте ключ у git, MCP-конфіг або командний рядок.
## Запуск
```bash
npm start
```
MCP-сервер працює через stdio. Web UI запускається автоматично на
`http://127.0.0.1:9751/`. Автозапуск можна вимкнути через `GLM_UI=0`, а порт
змінити через `UI_PORT`.
Приклад реєстрації в MCP-клієнті:
```json
{
"mcpServers": {
"glm": {
"command": "node",
"args": ["/absolute/path/to/glm-orchestrator-public/src/server.mjs"],
"env": {
"GLM_BASE_URL": "https://your-endpoint.example",
"GLM_MODEL": "glm-5.2"
}
}
}
}
```
Передавайте `GLM_API_KEY` безпечним механізмом вашого середовища, а не у
файлі, який комітиться.
## Основні інструменти
- `glm_models` — моделі, які повертає endpoint;
- `glm_build_prompt` — підготовка структурованого prompt;
- `glm_run` — синхронний або фоновий запуск;
- `glm_status`, `glm_result`, `glm_wait`, `glm_cancel` — керування запуском;
- `glm_list_runs` — локальна історія;
- `mcp_status` — стан опціонального MCP-моста.
Додаткові MCP-сервери налаштовуються локальним `mcp.json`. За основу можна
взяти [`mcp.example.json`](mcp.example.json); справжній `mcp.json` ігнорується.
## Безпека
- ключ береться лише з `GLM_API_KEY` і не записується в журнал;
- UI та proxy слухають тільки `127.0.0.1`;
- runtime-дані в `state/` і `logs/` не відстежуються Git;
- запис файлів обмежений коренем репозиторію та `GLM_WRITE_ROOTS`;
- читання й запис `.env`, ключів, SSH/AWS-конфігів та `.git` блокуються;
- перед публікацією запускайте secret scanner для всього нового history.
## Перевірка
```bash
npm test
```
Стандартний набір тестів не потребує мережі або справжнього API key.
## Ліцензія
ISC — див. [`LICENSE`](LICENSE).
TDQS
Scored across 20 tools
Most tools are clearly separated by resource and action (plan, memory, git, skills, GLM runs). The only mild ambiguity is among glm_status, glm_result, and glm_wait, but their descriptions make the distinction reasonably explicit.
The snake_case verb_noun pattern is dominant and recognizable across all tool groups. Minor deviations like glm_models (noun-only) and the skills_list vs skill_read singular/plural mismatch prevent a perfect score.
Twenty tools is on the heavy side for a single server, even though the grouping into GLM lifecycle, memory, plan, git, and skills makes the set navigable. It falls into the 16–25 range where the tool count starts to feel like a burden rather than a curated surface.
Core workflows are well covered: GLM runs have create/status/result/cancel/wait/list/apply, memory has full lifecycle, skills are readable, and plan/git basics exist. Minor gaps include no plan editing/removal and no git diff/log, but these are workable or intentionally left to the user.