What's New
Deploy & Agent Autopilot — two zero-config autopilots that close the gap between a fine-tuned model and a deployed agent.
Deploy Autopilot
soup deploy autopilot --target rtx-4090-24gb --base meta-llama/Llama-3.2-1B
# → writes deploy_autopilot.yaml (recipe) + deploy_autopilot.sh (planned deploy)Ten hardware profiles ship out of the box: mac-m3, mac-m4-pro, rtx-3060-12gb, rtx-4090-24gb, iphone-16, pixel-9, ollama-local, lm-studio, runpod-a100, hf-jobs-h100. Each one names the optimal runtime + quantisation + PEFT method + speculative-decoding flag for the target, validated against closed allowlists at import time. --list shows the full catalog.
Agent Forge
soup agent synth --spec api.yaml --output ds.jsonl # parse + synthesise dataset
soup agent train --spec api.yaml --base meta-llama/... # print planned soup train invocation
soup agent eval --spec api.yaml --predictions p.jsonl # score tool-call accuracyParses OpenAPI 3.x, MCP server manifests, or GraphQL introspection JSON straight into a tool-calling SFT dataset. Each row is {messages: [user, assistant_with_tool_call], tool, source_endpoint}. $ref strings in OpenAPI are left opaque (no external resolution — file-read SSRF defence), yaml.safe_load only, atomic JSONL write via staged-tempfile + os.replace.
Install / Upgrade
pip install --upgrade soup-cli==0.46.0
# Or via Docker:
docker pull ghcr.io/makazhanalpamys/soup:v0.46.0Security
- Path containment (
os.path.realpath+commonpathvia sharedis_under_cwd) on every new file write — recipe, deploy script, dataset output, predictions file. os.lstat + stat.S_ISLNKTOCTOU rejection at every write target (matches v0.33.0 / v0.43.0 / v0.44.0 / v0.45.0 policy).shlex.quoteon shell-boundmodel_pathin the generated deploy script; NUL / newline / oversize rejection on--baseand--output-dirinagent train(defends against YAML key injection into the rendered recipe)._MAX_PRED_LINES=1_000_000DoS cap onagent eval,_MAX_SPEC_BYTES=5MiBon spec load,_MAX_ENDPOINTS=10_000on parsed endpoints.- Rich markup escape on every spec-derived and profile-derived string surfaced to the terminal.
- 4 review passes (python / code / security / TDD); 1 CRITICAL + 4 HIGH + 3 MEDIUM findings fixed before merge.
Known Limitations
- Live Quant-Lobotomy auto-measure deferred to v0.46.1 —
soup deploy autopilotwrites the canonical PEFT+quant combo per profile but does not yet measure OK/MINOR/MAJOR via the v0.26.0 Quant-Lobotomy Checker before picking. The combo table is the lock-in; live measurement is the v0.46.1 deliverable. soup agent trainis plan-only — prints the plannedsoup traininvocation rather than re-entering Typer in-process (matches v0.44.0soup quantizedesign — Typer commands aren't safe to re-enter). Users copy the printed recipe intoagent_train.yamland run the command themselves.soup agent evalis heuristic — scores tool-name match + arguments-key validity only. Live RLVRcode_execsandbox scoring against the spec deferred to v0.46.1.- ExecuTorch packaging deferred to v0.54.0 —
iphone-16/pixel-9profiles emit recipes + plan-only scripts; the actual ExecuTorch export pipeline lands in the mobile/edge release. $refresolution in OpenAPI intentionally not done (file-read SSRF defence); users wanting full resolution should runopenapi-spec-validatorupstream and feed the bundled JSON.
Stats
- 5989 → 6126 tests (+137 net new)
- 165 → 167 test files
- 2 new modules, 2 new top-level commands (
soup deploy autopilot,soup agent {synth,train,eval}) - Full CI green on ubuntu / windows / macos × Python 3.9 / 3.11 / 3.12