# jobd

GPU-aware job broker for personal machines. Enables AI agents to schedule, route, and monitor workloads across a local network or Tailscale.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Author: musharna
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/musharna/jobd
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/jobd

## What it does

jobd operates a central FastAPI broker backed by SQLite to orchestrate jobs across connected machines. Worker nodes long-poll the queue and report available compute capacity. The broker assigns tasks based on free system RAM, CPU cores, host tags, and available video memory. Commands submitted through the `jobd_submit` MCP tool execute directly in `bash -c`.

The system supports workload preemption when higher-priority jobs arrive. An active task receives `SIGTERM` and gets a grace period to dump state into `JOBD_CHECKPOINT_DIR` before receiving `SIGKILL`. Preempted tasks will not resume on their own; you must start a replacement job pointed at the saved checkpoint.

Worker daemons query memory exclusively on GPU index 0. Multi-GPU hosts cannot distribute tasks across secondary cards through this broker. Running the broker or worker requires Python 3.11 or later.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `JOBD_URL`, `JOBD_API_TOKEN` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env JOBD_URL=<JOBD_URL> --env JOBD_API_TOKEN=<JOBD_API_TOKEN> --transport stdio jobd -- uvx jobd
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from jobd <command>

### Codex

**Platform CLI**
```bash
codex mcp add jobd --env JOBD_URL=<JOBD_URL> --env JOBD_API_TOKEN=<JOBD_API_TOKEN> -- uvx jobd
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from jobd <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "jobd": {
            "command": "uvx",
            "args": [
                "jobd"
            ],
            "env": {
                "JOBD_URL": "<JOBD_URL>",
                "JOBD_API_TOKEN": "<JOBD_API_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from jobd <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "jobd": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "jobd"
            ],
            "env": {
                "JOBD_URL": "<JOBD_URL>",
                "JOBD_API_TOKEN": "<JOBD_API_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from jobd <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e JOBD_URL=<JOBD_URL> -e JOBD_API_TOKEN=<JOBD_API_TOKEN> jobd uvx jobd
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from jobd <command>

## When to use it
- route heavy scripts to hosts with sufficient free VRAM
- track background execution and stream console logs via an agent
- preempt long workloads cleanly using checkpoint directories
- manage compute across personal hardware without Slurm or Kubernetes

## Example prompts
- Submit `python train.py` to any machine with at least 16 GB of free VRAM
- Check current tasks in the `jobd` queue and inspect output logs

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33989
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81163
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119231
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47577
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43902

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
