Repository navigation
Releases: jambuai/gpu4agents
Release list
v0.7.0: any GPU provider
Added
- Any GPU provider. An adapter can live in the project (
provider.plugin: ./gpu_providers/acme.py:AcmeProviderinjambu.yaml) or in an installed package that declares agpu4agents.providersentry point. Neither needs a change to gpu4agents. Vast.ai stays built in. gpu providers new NAMEwrites an adapter skeleton with every method that needs the provider's API marked.gpu init --provider NAMEwrites ajambu.yamlthat loads it.PROVIDERS.md, served atgpu4agents.jambu.ai/providers.md: the steps an agent follows to add a provider, from the skeleton to one test rental with the user's approval.- The provider contract has
credentials_urlandverify_credentials(), whichgpu loginuses for every provider. - Plugin manifests in the style of Humanizer: a Claude Code marketplace (
/plugin marketplace add jambuai/gpu4agents), a Cursor plugin, and Codex metadata inskills/gpu4agents/agents/openai.yaml. Each release attachesgpu4agents-skill.zipfor Claude.ai and Claude Desktop.
Changed
gpu loginworks with any provider:--provider NAMEpicks it (default: the project's, elseGPU_PROVIDER, else Vast.ai), it prompts for each credential the adapter declares, and it savesGPU_PROVIDERso account-wide commands outside a project use that provider.--jsonoutput now includesprovider.- The skill,
INSTALL.md, the MCP server's instructions and the installer no longer assume Vast.ai. When no account is connected, the agent asks which provider the user wants. - Docs and the website were edited for plain language.
Install
Paste into Claude Code, Codex, Gemini CLI or Cursor:
Set up GPU for Agents for me. I'm using Claude Code. Fetch https://gpu4agents.jambu.ai/install.md with curl and follow its steps.
Or install the skill the agent's own way: /plugin marketplace add jambuai/gpu4agents in Claude Code, npx skills add jambuai/gpu4agents --global --agent codex for Codex, gpu4agents-skill.zip below for Claude.ai and Claude Desktop.
To add a GPU provider: Add RunPod as a GPU provider to GPU for Agents. Fetch https://gpu4agents.jambu.ai/providers.md with curl and follow its steps.
GPU for Agents 0.6.0: agents install it themselves
Your agent installs GPU for Agents itself
Paste one line into Claude Code, Codex, Gemini CLI or Cursor:
Set up GPU for Agents for me. I'm using Claude Code. Fetch https://gpu4agents.jambu.ai/install.md with curl and follow its steps.
The agent installs the gpu command (uv brings its own Python: nothing to install first on Linux or macOS), the skill and the MCP tools, and rents nothing. You connect your GPU account in your own terminal, so the agent never sees the key:
gpu loginPrefer a terminal? curl -fsSL https://gpu4agents.jambu.ai/install.sh | sh, or npx skills add jambuai/gpu4agents for just the skill.
Added
install.sh: needs onlycurl. Installs uv if missing, thengpu4agentson a Python uv downloads when needed, removes an oldjambu-gputool, and sets up every agent runtime it finds (--agentto pick one).INSTALL.md(served at/install.md): the steps an agent follows from the pasted prompt.gpu login: hidden prompt, checks the key against Vast.ai, saves it in~/.gpu/credentials(mode 600).--checkreports whether a working key is found;--stdinreads it from a pipe.gpu agent install -t codex,-t geminiand-t auto. Codex, Gemini CLI and Cursor share the skill in.agents/skills/gpu4agents/; Codex gets the MCP server in~/.codex/config.toml, Gemini CLI in.gemini/settings.json.- The skill is published at
skills/gpu4agents/, works withnpx skills add, and now covers installing, connecting the account, monitoring (status,logs,events,ls,sweep) and exit codes.
Changed
- The skill is named
gpu4agents(wasgpu);gpu agent installreplaces the old folder it wrote before. - Cursor gets the skill in
.agents/skills/instead of.claude/skills/.
Validated: a headless Claude Code, in an empty home with no Python tools, installed and configured everything from the one-line prompt and sent the user to gpu login without asking for the key. See docs/ACCEPTANCE.md.
Full changelog: CHANGELOG.md
GPU for Agents 0.5.0
jambu-gpu is now GPU for Agents
Your agent rents the GPU it needs, on its own. You pay only while it works: we watch every machine and shut down the idle ones.
pipx install gpu4agents # or: uv tool install gpu4agents
gpu agent install # Claude Code; -t cursor, -t desktopWebsite and 1-minute video: https://gpu4agents.jambu.ai
Changed
- The package is
gpu4agentson PyPI and the module isgpu4agents. Thegpucommand, MCP tool names,jambu.yaml,.gpu/,~/.gpuand the labels on running instances are unchanged, so existing projects and machines keep working. - The repository moved to
jambuai/gpu4agents; old URLs redirect.
Added
gpu --version.- Code of Conduct, security policy, issue and PR templates, CI on Python 3.10 to 3.13, and a release workflow that attaches the wheel and sdist to each release.
Migrating from jambu-gpu
pipx uninstall jambu-gpu && pipx install gpu4agentsjambu-gpu 0.5.0 is a transition release that installs gpu4agents. Sweep timers that run python -m jambu_gpu keep working through an alias module; gpu sweep --install-timer rewrites them.
The VSL (gpu4agents-vsl.mp4) is attached for anyone who wants to share it.
Full changelog: CHANGELOG.md
v0.4.1
A stalled image pull no longer costs 30 minutes per host
gpu setup now replaces a host when its image pull shows no progress for health.pull_stall_timeout (default 10m): the provider's boot message is the same line, empty, or only Retrying in N seconds. Before, such a host was kept until health.boot_timeout (30 minutes), and live, none of the stalled hosts ever recovered. The host is destroyed, remembered as bad for 24h, and another is rented, as before.
- Healthy pulls measured live showed a new line at least every 8 minutes, hence the 10-minute default.
offdisables it; changing it needs no--recreate. - Replaying the live status log, the stalled hosts are dropped at 10, 11 and 27 minutes instead of 30; the healthy boots are untouched.
- A host that pulls slowly but steadily still waits for
boot_timeout.
pip install -U jambu-gpu==0.4.1v0.4.0 — coding agents can rent GPUs
New: Claude Code, Cursor and Claude Desktop
gpu mcp— a local MCP server (stdio, nothing hosted) with 13 tools:gpu_init,gpu_validate,gpu_offers,gpu_setup,gpu_status,gpu_connection,gpu_run,gpu_logs,gpu_lock,gpu_unlock,gpu_stop,gpu_destroy(needsconfirm=true),gpu_ls.gpu_setupruns in the background and re-attaches on each call, so a 15-minute first rent never hits a tool timeout;gpu_stop/gpu_destroycancel a setup in progress.- A bundled skill that teaches the agent to show the price and ask before renting, wait out a slow setup, never touch
VAST_API_KEY, and clean up. gpu agent install(-t claude|cursor|desktop,--global) writes the skill and registers the server, merging existing configs.
Guide: docs/AGENTS.md. Validated live: a headless Claude Code with no context rented a GPU, queried the model, destroyed it and checked the account was empty.
Fixes
gpu status/gpu logswork during a setup ("busy": true); a held project lock is now exit code 12.- The last host that failed when setup gave up is remembered as bad.
- On Vast the vLLM image defaults to
vastai/vllm:v0.32.0-cuda-13.0(cached on Vast hosts) instead of the 12 GB Docker Hub image that stalled 30 min per host. Pincompute.imageto keep the old one.
pip install jambu-gpu==0.4.0
v0.3.1
Fix
- Vast: floor GPU compute capability. The offer search only floored the host driver's CUDA, so old cards (GTX 1080, V100) behind a CUDA-13 driver were rented and vLLM crashed at startup. Cheapest-first ordering made this common. Now the runtime declares a minimum compute capability (vLLM: 8.0 on CUDA-13 images, 7.0 on CUDA-12), overridable with
compute.gpu.compute_cap_min, enforced in the Vast query and checked client-side.
pip install jambu-gpu==0.3.1
jambu-gpu 0.3.0
gpu keeps its files in .gpu/ (per project) and ~/.gpu (per user) instead of .jambu.
Upgrading is automatic: the first command renames an existing .jambu/ or ~/.jambu, so an instance a project already tracks is kept, not rented again. GPU_HOME overrides ~/.gpu (JAMBU_HOME is still read).
Includes everything in 0.2.0: per-instance endpoint keys, the JSON integration contract and docs/INTEGRATION.md.
pip install jambu-gpu==0.3.0
jambu-gpu 0.2.0
GPUs that cannot keep billing, and a contract any application can integrate.
Lifecycle
- The watchdog retries a failed stop (destroys after 30 min of failures), re-arms on every restart, and runs under a supervisor.
- Inference traffic counts as activity; stopped instances are destroyed after
lifecycle.stopped_ttl(default 24h). gpu lsandgpu sweep(with a systemd timer) guard every project by its own rules and clean up orphans.- Failed setups always clean up; bad hosts are replaced automatically and remembered for a day.
Integration
- The model endpoint now requires a key, generated per instance.
gpu --json setup/gpu envreturnbase_url,api_keyandmodelfor any OpenAI SDK.- docs/INTEGRATION.md: commands, JSON, exit codes, lifecycle, recipes for TypeScript, Python and shell.
- examples/typescript-client: a one-file helper that ensures the GPU and heals the connection after an idle stop.
Validated on real Vast.ai hardware: see docs/ACCEPTANCE.md.
pip install jambu-gpu==0.2.0
