October 14, 2026
The Python SDK, CLI and MCP server 1.2.0 edit pods and storage like the console, open storage over SSH and start pods with a model set. They also add local storage created with a pod, a choice of CPU line, template port changes, storage usage warnings, starts that follow the console or wait for room, and failed pod creations reported right away.
Major features
Section titled “Major features”SDK, CLI and MCP server 1.2.0
Section titled “SDK, CLI and MCP server 1.2.0”- Edit pods.
update_pod(),meshive pod-update <workspace> <pod>and the newupdate_podtool change a pod like the console’s edit screen: name, template, rental type, GPU or CPU line and size, environment variables, ports, start command and storage — attach network storage or local storage on the pod’s machine, create new local storage, or detach. Send only what changes. The estimate (estimate_pod_update,--estimate, or the tool’s preview) lists the changes, the hourly price before and after, and whether the pod restarts: a running pod restarts with the new settings, a stopped pod uses them at its next start, and a rename alone doesn’t restart it. The pod type, premiums and image can’t change. - Moving a pod for an edit needs consent. If the pod’s machine can’t fit the change, nothing changes until you allow a move (
allow_node_migration, CLI:--allow-node-migration). A pod with unpreserved workspace files also needs the separate data-loss consent (allow_data_loss), and attached local storage keeps a pod on its machine until you detach it. An edit that detaches the storage holding watched folders asks you to confirm dropping those folders first. - Edit storage.
update_storage(),meshive storage-update <workspace> <storage>and theupdate_storagetool rename a volume, grow it — storage can’t shrink — and turn its usage warning on or off, showing the new price first. - SSH into storage.
connect_storage(),meshive storage-connect <workspace> <storage>and theconnect_storagetool open a volume for SSH and SFTP, like the console’s Connect, and return a one-time login. Encrypted storage is unlocked for this and locks again automatically after a while. - Model sets.
list_model_sets(),meshive model-sets <workspace> --template <id>and themodel_setstool list the model sets a template offers. Pass one asmodel_set(CLI:--model-set) when you create a pod. Its files are added before the pod is created, which can take several minutes; if any file can’t be added, no pod is created, and the files already added are reused next time. - Watched folders and input assets as on the console’s create screen. When you create a pod,
watched_template_folders(CLI:--watch-off) turns off the template’s own watched folders or changes their patterns from the start, a folder inwatched_folderscan be added turned off, and an input asset withpathscan keep the chosen files’ folder structure ("strip_prefix": ""), like the console’s Keep structure.
Code written for 1.0 keeps working. To use the new features, upgrade to meshive>=1.2,<2. Agents connected to the hosted MCP server need no changes; if you run the server yourself, use the meshive/meshive-mcp:1.2.0 or latest image.
Python SDK → · CLI → · MCP server →
Also in 1.2.0
Section titled “Also in 1.2.0”These were planned as 1.1.0. 1.1.0 was not released on its own, so they ship in 1.2.0.
- Local storage with a pod. Create local storage on the pod’s machine together with the pod:
local_volumesin the SDK and MCP server,meshive pod-create --local-volume scratch:/scratch:50in the CLI (add:encryptedto encrypt it). Each volume needs at least 10 GiB, and spot pods can’t have one. The estimate includes its hourly price. - Choose a CPU line.
list_cpus(),meshive cpusand the newcpustool list the CPU lines you can rent, with prices per vCPU and per GiB of RAM. Pass one ascpu_line(CLI:--cpu-line) to choose where a CPU pod runs; without it, the cheapest line that fits is used. - Starts that wait for room. Starting a stopped pod also takes the placements
wait_same_nodeandwait_any_node(CLI:pod-start --placement): the pod waits until a machine has room, then starts by itself.wait_any_nodecan move the pod, so it needs the same data-loss consent asany_node. - Failed creations reported right away. Pass
transaction_id=created.transaction_idtowait_for_new_podand a creation that fails — for example because the image can’t be pulled — ends the wait at once with the reason instead of running into the timeout.meshive pod-create --waitdoes this for you. - Template ports. Rename, renumber, expose or hide the ports a template opens, as on the console’s deploy screen:
template_ports=[{"port": 8080, "name": "ide", "new_port": 8443}]in the SDK and MCP server,meshive pod-create --template-port 8080:ide:8443in the CLI. Template ports can’t be removed;ports(--port) still opens new ones. - Storage usage warnings.
create_storage(..., usage_warning=True, usage_warning_threshold=0.8),meshive storage-create --usage-warning 80and thecreate_storagetool’susage_warningemail you when the storage fills past the threshold — 90% if you leave it out — like the console’s usage warning. - One operation by ID.
get_transaction(),meshive transaction <workspace> <id>and thetransactionstool withtransaction_idshow a pod operation’s status, steps and failure reason, even after it has dropped off the list of operations in flight.
Code written for 1.0 keeps working; starting a pod without a placement now follows the console (see below). To use the new features, upgrade to meshive>=1.2,<2. Agents connected to the hosted MCP server need no changes; if you run the server yourself, use the meshive/meshive-mcp:1.2.0 or latest image.
Python SDK → · CLI → · MCP server →
API changes
Section titled “API changes”These come with 1.2.0. Three of them are enforced by the server, so from October 15 they also apply to older SDK, CLI and MCP server versions: the same checks as the console, the larger default CPU pods, and storage created on its own being network storage of at least 10 GiB.
Pods and storage follow the console’s rules
Section titled “Pods and storage follow the console’s rules”- Same checks as the console. vCPU and RAM must be sizes the console offers, a port the template already opens or a port listed twice is refused, environment variables the template requires need a value, and a start command can be at most 4,096 characters. The error says what is allowed.
- Larger default CPU pods. CPU pods now get 8 vCPU and 32 GiB of RAM by default (or the nearest sizes the line offers), as in the console, instead of 2 vCPU and 4 GiB.
- Starting without a placement picks what the console would. A start without a placement (
start_pod,meshive pod-start, thestart_podtool) used to meansame_node. Now the server picks like the console’s Start button — the original machine, another machine when the original one can no longer run the pod, or a placement that waits when there’s no room right now or the pod is already waiting for any machine — and the result says which (SDK:ResourceAction.placement). A pick that would move a pod with unpreserved workspace files is refused with the data-loss consent error naming the placement; run it again with that placement andallow_data_loss=True(CLI:--allow-data-loss). Passsame_nodeto keep the old behavior. - Network storage on its own, local storage with a pod. Storage created on its own is network storage of at least 10 GiB, as in the console; a smaller size, or local storage created that way, is refused. A new pod’s
volumesattach existing network storage only — uselocal_volumesfor local storage. - The server decides which values are allowed. The SDK and CLI no longer check placements, storage types, disk types or the GPU count themselves, so new values work without upgrading.
- Unknown input asset keys are refused. An
input_assetsentry with a key the SDK doesn’t know, such asinclude_pathsinstead ofpaths, now raises an error instead of being ignored, which attached the whole asset. - The default watch rule stays with the pod. A pod created through the SDK, CLI or MCP server from a template that declares no output folders now keeps the
/outputsrule it was created with, as console-created pods do, so a later change to the template doesn’t change it when you edit the pod.
Deprecated: region and disk_type
Section titled “Deprecated: region and disk_type”These are still accepted but ignored. They warn — a DeprecationWarning in the SDK, a note in the CLI — and will be removed in 2.0.
regionon pods and storage, and--regiononpod-createandstorage-create. Pods and storage are placed without a region.disk_typeon storage, and--diskonstorage-create. Storage is always NVMe.