October 30, 2026
Run a whole project folder or .zip as a task, choose which of a task's files to save, delete finished tasks, upload files while you attach them, and import environment variables from a file or pasted text.
Major features
Section titled “Major features”Run a project folder as a task
Section titled “Run a project folder as a task”The Script card on the task form now has a Script | Project switch. Drop a project folder or a .zip, choose the file to run and, if you like, a requirements file to install, and the task runs your project as it is instead of one pasted file.
- Uploaded for you. The project goes to Assets as one asset and is attached to the task as an input. Caches, virtual environments,
.gitand similar are skipped..envfiles aren’t uploaded, since assets aren’t encrypted; the console offers to load them into Environment & secrets instead. - Runs from the project folder. The working directory is the project, so relative paths and imports work. The requirements file is installed with
pipfirst, and a file inside a package runs aspython -m pkg.module. The exact commands are shown before you submit. - New files come back. Files the program creates inside the project folder are moved to
/outputswhen it exits, unless that would pass the 200-file output limit. After a Stop or when the max run time is reached, only what was written to/outputsdirectly is kept. - Limits. A project counts as one of a task’s 20 input assets, and a task can fetch about 500 files in total across its project and input assets.
- Re-run keeps it. Re-run with same config brings back the project and the input assets. The task page shows the project, its command and its requirements file in place of the code.
Choose which files a task saves
Section titled “Choose which files a task saves”The Output card on the task form now has the same Save from and Save to layout as a Pod template. Next to /outputs, click All files to turn on any mix of Images, Videos, Model files and Data & logs, or add your own patterns such as *.safetensors and samples/*.png. Check a path tells you whether a file would be saved.
- Only matching files are uploaded and become the task’s output asset. The rest are deleted when the task ends. All files saves everything, as before.
- If nothing matches, the task still succeeds, no output asset is created, and the task page says so.
- Unsaved files still use
/outputswhile the task runs, so they count toward its output disk. - Re-run keeps the filter, and the task page shows it.
The Files to save buttons on a Pod now work the same way: pick several at once, including the new Model files and Data & logs.
Delete finished tasks
Section titled “Delete finished tasks”You can now delete a task from its card, from a selection of several tasks, or from its page. The task leaves your list, and its script, environment variables and arguments are removed. Its log is removed at the next daily cleanup. Output assets and billing history stay. A task that’s still running or still uploading its outputs can’t be deleted yet.
The task list also loads page by page now, so older tasks no longer drop off after the latest 200.
Upload files while you attach them
Section titled “Upload files while you attach them”Wherever you attach assets, you can now add files that aren’t in Assets yet without leaving the form: a Pod’s Input assets in the create and edit forms and template details, Inject assets on a running Pod, and a task’s Input assets. Drop files or a folder on the section, or use Upload new at the top of My assets in the Add assets dialog.
- One drop, sensible assets. A folder becomes one asset, and several loose files dropped together become one asset.
- The row appears right away with upload progress, and you can cancel it or retry a failed upload from the row.
- Deploy, submit and inject wait for the upload. They don’t continue on their own when it finishes — click the button again.
- Same permission and limits as web upload. Files go to managed storage and are billed as storage, like any other upload.
Import environment variables
Section titled “Import environment variables”In a task’s Environment & secrets card and in the Environment variables section of a Pod or template, you can add many variables at once:
- paste
KEY=VALUElines, JSON or YAML into a variable name; - paste a block of
KEY=VALUElines into a value; - drop a file on the card; or
- click Import from file and choose a file.
Names that already exist get the new value. Names that look secret, such as ones containing TOKEN, SECRET, PASSWORD or API_KEY, come in as secrets, and on a task you can click the Variable or Secret pill to change that. The format is recognized from the content: .env, shell and PowerShell scripts, JSON, YAML (including Docker Compose and Kubernetes), TOML, .properties, INI and more. If a file holds several sets of variables, you pick which one to import. A line under the card sums up what was imported.
Save folders on more Pods
Section titled “Save folders on more Pods”- Templates without an output folder. Inference servers such as NIM or vLLM can now save folders too, as long as the Pod has storage to hold them.
- Move a template’s output folder. Type a different path when you deploy, and
MESHIVE_SYS_OUTPUT_DIRand the folder’s storage move with it. On a running Pod, use Save a different folder instead. - Older Pods. Pods from these templates that have no uploader show Turn on folder saving in Assets → Watched folders. A running Pod restarts once, after you confirm.
SDK, CLI and MCP server 1.5.0
Section titled “SDK, CLI and MCP server 1.5.0”The SDK, CLI and MCP server can now filter task outputs with output_include (--output-include in the CLI), and they cover the new folder options, such as --watch-move and --enable-folder-saving. Code written for earlier 1.x releases keeps working.
Improvements
Section titled “Improvements”- Load a script by dropping it. On the task form, drop a
.pyfile on the Script card to load it into the editor, with an Undo if it replaced your code, or arequirements.txtinto the requirements editor. Open file in the editor bar replaces the old Upload file tab. - The Run summary shows the real command. Its Entrypoint row now shows what will run, such as
python -m mypkg.train, instead of alwayspython main.py. - Tasks start with a name. The form fills in a random name such as
steady-willow-9ec9, so you can submit without inventing one. You can change it, and Re-run keeps the previous task’s name. - Uploads take the type of their slot. A folder you upload into a Dataset slot is saved as a dataset, even if its largest file looks like a model.
- Dropping on an inject dialog uses the path you picked. If you opened Inject assets from a path’s +, files dropped anywhere in the dialog go to that path.
- Long commands get a clear error. A template or Pod command that’s too long is now rejected right away with a clear message, instead of a generic error or a deploy that fails later.
- Flatten works on task inputs. When you attached part of an asset with Flatten, its files kept their original folders instead of the path the picker showed. They now land where the picker says.
- Scrolling up in task logs. Scrolling up with the wheel or scrollbar now stops following new lines and shows Jump to latest. Before, the next log line pulled you back to the bottom.
- Log pages keep their width. Task pages and Pod logs no longer stretch the page far past the window, which also broke full-page screenshots.
- No
ERR 404at the end of task logs. A finished task’s log could end in a raw error, so a successful task looked failed. It now ends with a short notice that the log stream ended. - No “No input paths” flash. The Assets tab of a Pod no longer shows this message for a moment while it loads.
- Storage labels. Pods and template cards no longer say assets are kept for 10 days. Assets stay until you delete them.
- Workspace emails. The email for a new workspace could say “Workspace: None” and link to a broken page. It now names your workspace.
- Watched folders with complicated include patterns no longer slow down saving or shutting down on Pods started from now on.
- Pricing page. Only the GPUs available as Pods are now labeled as Pods.