github MakazhanAlpamys/Soup v0.46.0
v0.46.0 — Deploy & Agent Autopilot

latest releases: v0.76.0, v0.75.2, v0.75.1...
5 months ago

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 accuracy

Parses 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.0

Security

  • Path containment (os.path.realpath + commonpath via shared is_under_cwd) on every new file write — recipe, deploy script, dataset output, predictions file.
  • os.lstat + stat.S_ISLNK TOCTOU rejection at every write target (matches v0.33.0 / v0.43.0 / v0.44.0 / v0.45.0 policy).
  • shlex.quote on shell-bound model_path in the generated deploy script; NUL / newline / oversize rejection on --base and --output-dir in agent train (defends against YAML key injection into the rendered recipe).
  • _MAX_PRED_LINES=1_000_000 DoS cap on agent eval, _MAX_SPEC_BYTES=5MiB on spec load, _MAX_ENDPOINTS=10_000 on 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

  1. Live Quant-Lobotomy auto-measure deferred to v0.46.1 — soup deploy autopilot writes 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.
  2. soup agent train is plan-only — prints the planned soup train invocation rather than re-entering Typer in-process (matches v0.44.0 soup quantize design — Typer commands aren't safe to re-enter). Users copy the printed recipe into agent_train.yaml and run the command themselves.
  3. soup agent eval is heuristic — scores tool-name match + arguments-key validity only. Live RLVR code_exec sandbox scoring against the spec deferred to v0.46.1.
  4. ExecuTorch packaging deferred to v0.54.0 — iphone-16 / pixel-9 profiles emit recipes + plan-only scripts; the actual ExecuTorch export pipeline lands in the mobile/edge release.
  5. $ref resolution in OpenAPI intentionally not done (file-read SSRF defence); users wanting full resolution should run openapi-spec-validator upstream 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

Don't miss a new Soup release

NewReleases is sending notifications on new releases.