# jobd

Брокер задач с учётом VRAM и ресурсов для личных серверов. Позволяет агентам запускать фоновые процессы без облака и кластеров Slurm.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Автор: musharna
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/musharna/jobd
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/mcp/jobd

## Что делает

jobd поднимает центральный брокер на FastAPI и базе SQLite. К нему подключаются воркеры с отдельных машин через Tailscale или локальную сеть. При поступлении запроса брокер сопоставляет доступные ресурсы: объём оперативной памяти, свободные ядра CPU, системные метки и видеопамять. Инструмент `jobd_submit` выполняет переданную агентом строку через `bash -c`, запуская расчёты на подходящем узле.

В системе реализовано вытеснение низкоприоритетных задач. При появлении срочной нагрузки работающий процесс получает сигнал `SIGTERM` и сохраняет промежуточные файлы в каталог `JOBD_CHECKPOINT_DIR`. По истечении времени ожидания брокер завершает процесс командой `SIGKILL`. Сама по себе вытесненная задача заново не стартует, её придётся перезапустить с указанием сохранённого чекпоинта.

Воркер собирает метрики памяти только с видеокарты с индексом 0. Поэтому балансировать задачи между несколькими GPU на одной физической машине брокер не умеет. Для работы компонентов требуется Python 3.11 или свежее.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `JOBD_URL`, `JOBD_API_TOKEN` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env JOBD_URL=<JOBD_URL> --env JOBD_API_TOKEN=<JOBD_API_TOKEN> --transport stdio jobd -- uvx jobd
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from jobd <команда>

### Codex

**Командой платформы**
```bash
codex mcp add jobd --env JOBD_URL=<JOBD_URL> --env JOBD_API_TOKEN=<JOBD_API_TOKEN> -- uvx jobd
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from jobd <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "jobd": {
            "command": "uvx",
            "args": [
                "jobd"
            ],
            "env": {
                "JOBD_URL": "<JOBD_URL>",
                "JOBD_API_TOKEN": "<JOBD_API_TOKEN>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from jobd <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "jobd": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "jobd"
            ],
            "env": {
                "JOBD_URL": "<JOBD_URL>",
                "JOBD_API_TOKEN": "<JOBD_API_TOKEN>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from jobd <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e JOBD_URL=<JOBD_URL> -e JOBD_API_TOKEN=<JOBD_API_TOKEN> jobd uvx jobd
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from jobd <команда>

## Когда брать
- распределять запуск вычислений по доступному объёму видеопамяти
- отслеживать логи и выполнение фоновых задач через агента
- прерывать долгие скрипты с сохранением промежуточных чекпоинтов
- организовать очередь задач на личных серверах без Slurm и Kubernetes

## Примеры запросов агенту
- Отправь команду `python train.py` на хост, где свободно не менее 16 ГБ видеопамяти
- Проверь статус задач в очереди `jobd` и покажи последние строки логов

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 392262
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33989
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81163
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119231
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47577
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43902

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
