v0.42.2 — Workflows That Stay
Ten fixes from a day of running Sandcastle on real hardware (NVIDIA DGX Spark, Docker 29, plain-http LAN dashboard). Every one of them reproduced live before it was fixed, and verified live after.
Fixed
- Workflows persist.
WORKFLOWS_DIRis a shared volume (app_workflows) on the API, worker, and scheduler - user-created workflows previously vanished on every rebuild and each service saw its own copy. (Workflows created before this fix were stored in old containers and cannot be recovered; re-save once.) - Docker sandbox works on modern daemons. Newer Docker rejects
put_archiveinto aReadonlyRootfscontainer;/home/useris now an anonymous volume, keeping the rootfs read-only. - aiodocker 0.27+ compatibility for log streaming (
log(follow=True)API drift). - Sandboxed agent steps honour
workflow_default_model- they previously picked the Claude runner on local-first boxes and failed with "Not logged in". - Key-less rescue: hub templates hardcode cloud models; when the resolved provider's key is missing and a local default is set, the step runs on the local default with a warning. Keyed providers are never touched.
- The worker restores dashboard-managed settings from the DB at startup (shared
restore_db_settings) - provider keys and the default model previously applied only to the API process, never to the process executing steps. - Template runs are replayable: the workflow loader falls back to the template catalog, matched by the YAML's declared
name:. - Runner image ships
curl(+ ca-certificates, jq) - agents had no way to reach the web from bash steps. - Empty-final-message fallback in the OpenAI-compatible runner (last non-empty assistant text).
- Agent Memory works in Docker: the image includes the
memoryextras (mem0ai, fastembed).
Known issue
Step outputs of template/UI runs can display empty despite completing; diagnosed to the executor's result aggregation path, fix underway.
pip install sandcastle-ai==0.42.2