What's New / The Log · Shipped code or nothing

# The Log.

Every version ships something you'll actually use. No roadmap fluff, no "coming soon" — shipped code or nothing. This is the running record.

Latest release
v0.43.0
Polish Under Pressure
July 22, 2026 Read ↓

v0.43.0 July 22, 2026 ★ Latest

## Polish Under Pressure

Two days of running Sandcastle hard on real hardware, folded back into the product. This release rolls up the 0.42.x line and a day-two batch: sandboxed steps that actually persist and replay, a Run Assistant with a model behind it, and a long tail of fixes you only find by clicking through your own product on a box with no cloud keys.

- runs · headline

  ### Download run outputs as PDF

  Every run's outputs render to a branded, formatted PDF next to the JSON and TXT downloads - long links, JSON blobs, and typographic characters included.

- evolution

  ### Evolution that respects your browser

  Starting an evolution validates instantly and runs the mutation and eval loop in the background. Empty eval suites are refused loudly instead of burning twenty iterations on 0.0 scores.

- quality

  ### The long tail, fixed

  Comma-separated array inputs, scrollable onboarding for input-heavy templates, working docs links, and a PDF renderer hardened against everything a real model actually outputs.

v0.42.0 July 21, 2026

## Your Box, Your Default

Born on real hardware: deploying to an NVIDIA DGX Spark exposed how much of the local-first story assumed bare metal. Now the Docker deployment discovers what your box actually runs - a host Ollama, a local vLLM - lists its models in the onboarding wizard, and one click makes one the default for every step that doesn't name a model. Cloud keys stay one paste away, side by side.

- local · headline

  ### Default model picker

  New `workflow_default_model` setting: steps without an explicit `model:` use it instead of the built-in default. Pick it in the wizard from detected local models or set it via `PATCH /api/settings` - values are validated against the model registry before they can ever break a run.

- local

  ### Any Ollama model, first-class

  `ollama/<tag>` now resolves dynamically like `nim/<id>` always has - any locally pulled model at `$0/run`, region local, with the same injection-safe character discipline. Base URLs honour `OLLAMA_HOST` everywhere.

- discovery

  ### Docker finds your local models

  Provider discovery (0.41.2) respects `OLLAMA_HOST` and probes `NIM_BASE_URL`, so a containerized Sandcastle detects the host’s Ollama and any OpenAI-compatible vLLM. `/health/providers` now returns each local provider’s model list. And Spark Mode works in Docker via the new `docker-compose.gpu.yml` override (0.41.1).

v0.41.0 July 21, 2026

## Trust, Verified

A full adversarial audit of the engine, API, persistence, dashboard, and deployment — and a hardening pass on everything it found. Closed an authentication bypass on admin endpoints, made workflow file reads tenant-safe, reconciled the PostgreSQL schema with the ORM down to enum labels, made retries honest about what they cost, and put the whole suite on randomized-order soak: 17,000+ tests, three consecutive clean runs, zero flakes. Includes breaking changes — read the upgrade notes and plan a short maintenance window for the database migration.

- security · headline

  ### Admin surface locked down

  `/admin/environments` no longer bypasses API-key auth, `is_admin` requires a genuinely authenticated key, and the server refuses to bind a public interface without `AUTH_REQUIRED=true` unless you explicitly opt out. Tool connectors and code steps run with minimal, credential-scoped environments.

- security

  ### Tenant-safe file reads

  HTTP step `@file:` references now require an admin-trusted run and stay confined to `DATA_DIR` — no more cross-tenant artifact reads via injected workflow bodies. Webhook delivery pins the validated IP at connect time, closing the DNS-rebinding window for good.

- engine

  ### Honest retries, honest budgets

  `retry:` now works on every step type, fatal errors (4xx, validation, policy) stop retrying instead of re-paying for doomed calls, and paid LLM cost is counted even when a step fails after the API call — budget limits hold to the cent, including across approval pauses and resumes.

- db

  ### PostgreSQL reconciled

  Migrations 015–017 create the missing tables and columns, convert legacy lowercase enum labels to the ORM's member names, and align JSONB and indexes. `alembic check` runs in CI against a live Postgres with an enum round-trip smoke test, so schema drift can't ship silently again.

- dashboard

  ### Dashboard that matches the backend

  Evolution page speaks the real API (tenant-scoped `GET /api/evolution`), admin SSE streams authenticate properly, generated YAML is injection-safe, and a contract test fails CI if the frontend ever calls an endpoint that doesn't exist.

- ci

  ### Soak-tested, Docker-built

  The suite now runs randomized-order in development (three environment/state pollution classes fixed at the root), and CI builds the main, runner, and E2B images and boots the API against a health check on every change.

v0.40.0 June 11, 2026

## Build Once, Run Anywhere

Describe what you want in plain English and Sandcastle builds the workflow. Run it on any model — Claude, GPT, Mistral, a local model on your own box — and move it between them with one line. Deploy it your way: cloud, your server, fully air-gapped, EU-only. And it gets better over time, on its own. This release rebuilds the whole experience around that loop — a new Omnibox, a three-verb navigation, a self-explanatory builder, a fresh look — and adds the machinery behind it: a signed Black Box audit trail, an Architect that writes workflows until they actually work, self-healing, a Model Time Machine, and a private Mesh across your own machines. The biggest drop yet.

- feat · headline

  ### The Omnibox — describe it, ship it

  The dashboard now opens with one input: "What should your agent do?" Write a task in plain English, Sandcastle generates the workflow, you run it. Also one keystroke away with `⌘K`. The shortest path from an idea to a running agent.

- feat · dashboard

  ### Three verbs, not thirty doors

  Navigation collapses to Build / Run / Improve (plus a quiet Operate) with a three-tier density control — Essentials / Standard / Everything — replacing the old binary Lite/Full toggle. Simple at the top, the full depth one click down.

- feat

  ### The Black Box — a flight recorder for agents

  A tamper-evident, signed hash-chain over every recorded run, a `black_box` compliance mode, and `sandcastle audit verify`. A replayable, verifiable audit trail — built for the EU AI Act era.

- feat

  ### The Architect — generate until it works

  Generate → run → judge → refine, in a loop, until the workflow actually passes — then ship it with a recorded cassette as a Proven template. Describe a result tonight, wake up to a verified workflow.

- feat

  ### Self-Healing Workflows

  A failed run gets an LLM diagnosis, a patched workflow version behind an approval gate, and regression tracking — so the same break doesn't happen twice. Workflows that fix themselves overnight.

- feat

  ### Model Time Machine

  New model dropped? Replay your real recorded workload against it and get a quality / cost / latency delta — decide on data, not benchmarks. Dry-run pricing is free; live replay runs under a hard budget.

- feat

  ### Sandcastle Mesh — your own private cloud

  Register multiple machines and route steps by capability — `requires: [gpu, browser]` — across your own hardware. A Fleet view shows node health. GPU steps to the box with the GPU, browser steps to the box with the browser.

- feat · dashboard

  ### Night Shift & Mission Control

  Night Shift shows what your agent learned overnight — adapter lineage, nightly eval deltas. Mission Control is a full-screen live run theater: the DAG lights up as it executes, with live cost and a thought stream.

- feat · templates

  ### Verified template bundles

  Every shared template can carry a replayable proof it works. `sandcastle template verify` replays the bundled cassettes offline, $0, and reports PASS/FAIL — check it works locally before running anything live. No more "trust me" YAML.

- feat · builder

  ### A builder that explains itself

  Every step type now has a hover card — what it does, when to use it, an example, a cost note — plus inline field help, a plain-English summary of each step, and live validation on the canvas. Build complex workflows without reading the docs.

- design

  ### A new look — and a new site

  A warm "Sand & Ink" identity: instrument-panel layout, control-room status lights, illustrated empty states, and a settle-based motion system. The marketing site got an editorial Manifesto rebuild end to end.

- fix

  ### No more garbled steps

  LLM steps now pin a low temperature, so output stays deterministic across providers — some endpoints default to 1.0 and produce garbage. An empty model response now fails with a clear message instead of a silent "completed". And `/generate` works with any configured provider, not just one — it tells you up front when none is connected.

- fix · security

  ### Signed releases & a security policy

  A `SECURITY.md` with coordinated disclosure, and releases now ship `SHA256SUMS` with keyless cosign signatures — verify what you downloaded is what we published.

- milestone
  21 Branches integrated
  17.9k Tests green (py + web)
  8 New features shipped
  1 Workflow, any model, anywhere

v0.33.0 June 4, 2026

## Your Box, Your Brains

Every agent you've ever run phoned home, sent your data somewhere, billed you by the token. The deal just changed. NVIDIA put a Grace-Blackwell supercomputer and 128 GB of unified memory on a desk — most teams will run a demo and screenshot the tokens-per-second. We made Sandcastle treat it like home. Plug in a DGX Spark and it knows: Spark Mode lights up, defaults flip to local-first, and inference goes first-class local through a new `nim/*` provider at `$0.00/run`, data that never leaves the box. Then it learns — Overnight Self-Tune trains a task-specific LoRA on your own eval data while you sleep. You wanted to stop renting. Here's the deed. And Spark is only the headline: this drop also bundles offline cassettes, run permalinks, a one-command local runner, a Template Hub explosion, a provider-neutral dashboard refresh, the 2026-06 model wave, and a security & reliability sweep. Roughly three weeks of work in one release.

Runs local on ▸ NVIDIA DGX Spark

- feat · headline

  ### Spark Mode — your box, zero flags

  Sandcastle auto-detects an NVIDIA DGX Spark (GB10 Grace-Blackwell, 128 GB unified memory) and flips to local-first defaults on its own — no flag, no config. A startup banner, a dashboard badge, and `GET /api/runtime` all say the same thing: you're running on your own silicon. Your data, your box, your rules.

- feat

  ### Local inference, first-class

  A new `nim/*` provider (NVIDIA NIM, OpenAI-compatible) joins `ollama` and `oMLX` — every one at `region=local`, `$0.00/run`, data-stays-on-box. On a detected Spark the bare default model auto-routes to the local NIM. No token meter. No egress.

- feat

  ### Overnight Self-Tune

  The evolution loop can train a task-specific LoRA adapter on a workflow's own eval data and route to it — the box gets better at your task, on your data, for $0. Train it overnight, wake up to a model tuned to your workflow.

- feat

  ### Deterministic cassettes

  Record a run once, replay it offline at $0 — identically, provider-free, with a tamper-evident signature. A new strict mode hard-fails on a modified cassette. Demos that never call an API; tests that never flake on the network.

- feat

  ### Shareable run permalinks

  Loom-for-workflows: a public, secrets-scrubbed link to any run, with a 30-day TTL. Send the result, not a screenshot — no login, no replay cost, nothing private leaks.

- feat

  ### `sandcastle run --local`

  One command, in-process, zero external dependencies — no server, no queue, no Redis. First-run onboarding now picks your engine for you. The fastest path from `pip install` to a finished workflow.

- feat · templates

  ### Template Hub explosion

  The biggest content drop yet. New categories — Automation & RPA, plus several more — and dozens of provider-neutral browser / computer-use RPA workflows that run on whatever model you point them at. A living community gallery seeded with 31 workflows from 19 authors, synced to the web hub. Three viral creative use-cases too: Action Figure Me, Glow-Up Restore, Ad Creative Factory.

- feat

  ### Tool step + UGC Studio

  A first-class `tool` step type and a self-healing UGC Studio flow with a vision judge — reference-image creative that checks its own output and retries until it passes.

- feat · models

  ### 2026-06 model refresh

  The June wave wired in: GPT Image 2, Gemini 3.5, and GPT-5.2 — with retired models cleaned out so nothing routes to a dead endpoint.

- feat · dashboard

  ### Provider-neutral, dark-first dashboard

  A refresh that tells the real story: Sandcastle runs on any provider, not one. Dark-first design, demo runs seeded with real provider models, and recovery from stale-deploy chunk misses instead of a dead-end "Connection error".

- docs

  ### Built for code assistants

  `llms.txt` + `llms-full.txt` ship in the repo and on the site, so a code-generating assistant can read Sandcastle's surface and scaffold a correct workflow on the first try.

- fix · hardening

  ### Security & reliability sweep

  A browser-step SSRF guard blocks requests to internal/disallowed hosts. Share tokens carry a TTL; dynamic `nim/*` model ids are validated; an auth pepper and a step-cache cap landed. The sync run endpoint no longer reports `completed` when persistence fails — it retries and returns `verification_pending`. Browser dom / computer-use / lightpanda modes stop crashing on a never-defined `sandbox_exec`. Packaging gained its missing runtime deps, and the last test-isolation flakes are gone.

- milestone
  20+PRs shipped since v0.32.2
  $0 Local inference / run
  3 Local providers (nim/ollama/oMLX)
  0 Tokens leaving the box

v0.32.2 May 19, 2026

## Your Sandbox, Your Silicon

Anthropic shipped a managed-agents update on May 19. Most teams will read the blog post and move on. We extracted everything. Self-hosted sandboxes that keep your org key inside your boundary. A Memory MCP server that fills the gap Anthropic left when they declared memory_stores incompatible with self-hosted runs. MCP tunnels with WIF token exchange so your private Jira can be reached by a managed agent without static secrets. Live work-queue telemetry in the dashboard. Three production case-study blueprints. Five sandbox cookbooks. 150 new tests, validated across six iterations. Zero regressions. You wanted control over where your model runs. Here it is.

- feat · headline

  ### Self-hosted sandboxes — your code, your silicon

  Five providers in the runtime enum: `cloudflare`, `daytona`, `modal`, `vercel`, `docker`. Each gets a cookbook under `deploy/cookbooks/` with a copy-paste-ready spawn script and image. Your org key never leaves your boundary — the worker refuses to start if `ANTHROPIC_API_KEY` is present in the sandbox env. Only `sk-ant-oat01-` environment-scoped keys get past the gate. A foot-gun that would have leaked your org budget now raises before the first network call.

- feat

  ### Memory MCP server

  Anthropic explicitly documented that `memory_stores` cannot be combined with self-hosted sandboxes. We filled the gap. `sandcastle.engine.memory_mcp_server` wraps mem0 + persistent Qdrant + Anthropic Haiku for memory decisions. Four tools, two resources, one prompt. Helm chart + docker-compose. NetworkPolicy egress to Cloudflare CIDR only.

- feat

  ### MCP tunnels with WIF auth

  Gated beta, header `mcp-client-2025-11-20`. Your internal Jira / Snowflake / Confluence is reachable from a managed agent through a cloudflared tunnel authenticated with WIF tokens. No static secrets. 60s skew-cached token exchange. Manual cert mode also supported for air-gapped setups.

- feat

  ### Live work-queue dashboard

  `WorkQueuePanel` on the run detail page, SSE-driven. Depth, sparkline (Recharts), pill (green < 5, amber 5–50, red > 50), `aria-live="polite"`, exponential backoff up to 30 s. You see the backlog before the pager fires.

- feat

  ### Webhook-driven workers

  New `session.status_run_started` event in `SUPPORTED_EVENTS`. A worker can now run as a webhook handler instead of a long-poll loop — saves RAM, latency, and your AWS bill. HMAC verification round-trips `sha256=` prefix and bare digest forms.

- feat · templates

  ### Three production case studies

  Not tutorials. Blueprints. Amplitude designer (multiagent + accessibility specialist + computer-use + Cloudflare). Clay GTM (project_manager + researcher / writer / qualifier + Daytona). Rogo analyst on private data (Vercel + WIF tunnel + risk_level high + mandatory approval + eval gate).

- feat · quality

  ### Tested six different ways

  150 new tests. Sequential re-run, file isolation, randomized + pollution cluster, pytest-repeat 10x stress, module + CLI smoke, consolidated verdict. Zero flakes. Zero new regression categories. Documented in the PR.

- milestone
  150 New v0.32.2 tests
  5 Sandbox cookbooks
  6 Validation iterations
  0 Regressions

v0.32 May 16, 2026

## Claude Agents Deep Integration

You shipped the agent. The client wants the integration. The auditor wants the trail. The user wants you to ask the next question without restarting the whole workflow. v0.32 is the answer to every one of those. Sandcastle now exposes every Anthropic Managed Agents primitive shipped under the managed-agents-2026-04-01 beta umbrella, plus the things Anthropic doesn't ship: cryptographically verifiable trajectory replay, a Skills publisher that turns workflows into uploadable Claude Skills, and an Agent SDK runtime for teams that want in-process execution. Two weeks of work, 169 new tests, one release.

- feat · headline

  ### Every Anthropic primitive surfaced

  Memory Stores, Multiagent coordinator, Outcomes API, Webhooks. All four came out from Anthropic under the same beta header in April and May 2026; Sandcastle now wires each one into the YAML and the dashboard so a single workflow can attach versioned memory, spawn 20 parallel specialist agents, define outcomes the eval pipeline reads automatically, and emit lifecycle events to a webhook endpoint.

  Add three lines of YAML, get a multi-agent system that meets your eval gate.

- feat

  ### Skills Publisher

  `sandcastle publish-skills --upload` converts every workflow into a tar.gz SKILL.md package with strict frontmatter and uploads to `/v1/skills`. Your workflows are now callable from every Anthropic Skills-aware client. Pair with v0.31 MCP-first publishing and Sandcastle covers both major distribution channels.

- feat

  ### Trajectory Replay

  New `type: trajectory-replay` step computes SHA-256 over a recorded tool-call sequence and diffs against a candidate run. Sandcastle's audit trail is a hash chain, so the replay is cryptographically verifiable. EU AI Act auditors love this.

- feat

  ### Agent SDK runtime

  `runtime: "agent-sdk"` swaps Managed Agents for in-process Claude Agent SDK. For EU sovereignty, air-gapped, regulated teams who can't send session state to Anthropic's hosted infra. Lazy-imports the SDK; graceful error when not installed.

- feat · polish

  ### Live Agent Reasoning panel

  Run detail page now subscribes to an SSE event stream and shows agent.thinking, agent.tool_use, and agent.message events as they fire. Thread-grouped, collapsible. The dashboard finally shows what the agent is actually doing.

- fix

  ### Five wire fixes (table stakes)

  tools_enabled finally reaches the API (was parsed but ignored). temperature, max_tokens, thinking_budget on ManagedAgentConfig. stream config field actually used. Pricing table mapping every Claude 4.x model. Fallback chains of up to 5 templates.

- feat

  ### Tool Search + examples convention

  Mark tools with `defer_loading: true` and 1–5 invocation examples per tool. Anthropic's own measurements: tool-selection accuracy 49% to 74%, usable context up 85%, parameter accuracy 72% to 90%. New docs/tool-examples-convention.md.

- feat

  ### Computer Use + MCP Elicitation

  New `type: computer-use` step type with the `computer_20251124` beta + an 8-item safety pre-flight (prompt-injection guard, page-load deadline, screenshot bounds). Plus the 6th MCP primitive (Elicitation, spec rev 2025-11-25) lets workflows ask the user for a missing input mid-run.

- milestone
  15,176 Tests passing
  169 New v0.32 tests
  9 New modules
  24 Step types

v0.31 May 14, 2026

## Compliance & Connections

Eighty days. That is how long you have until the EU AI Act's general-purpose obligations go live. After 2 August 2026, "we'll figure it out later" stops being an acceptable answer. v0.31 is the answer you can ship today: a dedicated EU AI Act landing your CISO can actually read, ten ready-made compliance workflow templates mapped to specific Articles and Annex IV, eval gates that block a regressing model from getting promoted, and MCP-first publishing that turns every workflow you've already built into a first-class tool inside Claude Desktop, Cursor, Windsurf, or any MCP client. The work was quiet. The result is loud.

- feat · headline

  ### Built for August 2, 2026

  The EU AI Act deadline is on the calendar whether you like it or not. v0.31 ships a dedicated landing page mapping every Sandcastle control to a specific Article (9, 11, 12, 14, 25, 49, 50, 73) and Annex IV, plus ten production-ready compliance workflow templates: DPIA, vendor risk assessment, incident reporting, bias audit, model card generator, AI inventory, risk register, GDPR data-subject request, human oversight log, and Annex IV transparency report.

  Bring the templates. Customize the prompts. Hand the auditor the audit trail. Done.

- feat

  ### MCP-First Publishing

  One command: `sandcastle publish-mcp researcher`. Paste the snippet into Claude Desktop, Cursor, or Windsurf. Your workflow is now a tool the AI client can call. Every workflow you already built becomes reachable from every MCP client in the ecosystem — the full five-primitive spec (tools, resources, prompts, sampling, roots) and a `.well-known/mcp.json` discovery manifest included.

- feat

  ### Eval gates that block bad models

  Define a golden dataset of inputs and expected scores. Set a minimum threshold. Promote with `?strict=true` and Sandcastle runs the gate before flipping the production version. The new model regresses by even a hair? Promotion fails closed. Eval-driven development is no longer a future plan.

- fix · polish

  ### A dashboard that doesn't crash

  Overview page split into twenty focused components, each wrapped in its own error boundary. One slow API endpoint no longer wipes the page. Every section that loads stays loaded. The 2,261-line monolith is now a 241-line orchestrator.

- fix

  ### Cost estimates that tell the truth

  The token estimator used to assume 1,000 tokens per run for every workflow on Earth. Now it reads each workflow's actual run history, blends the price per million, and gives each one its own number. Evolution makes better keep/discard calls. AutoPilot stops lying about the cost of an experiment.

- fix · security

  ### Codex Audit Rounds 9 + 10

  Five HIGH findings closed: tenant-scoped cache and Mem0 scope, XSS-safe report config, SSRF-guarded WeasyPrint URL fetching, A2A budget enforcement, version-list 404 correctness. Plus one MEDIUM: cross-tenant prompt injection in the workflow generator. `tenant_id` threaded through every executor path so neighbouring tenants cannot see each other's cache hits, memory reads, or prompt context.

- fix · a11y

  ### Dashboard accessibility pass

  `aria-expanded`, `aria-controls`, `aria-hidden`, focus-visible rings, sr-only labels on every search and filter input, modal widths that scale up on tablet, disabled opacity bumped to WCAG-AA contrast, and localStorage wrapped in try/catch so private browsing degrades gracefully. Eight separate polish items in one release.

- feat

  ### Per-workflow stats API

  `GET /api/workflows/stats` returns run count, success rate, average cost, and last-run status for every workflow visible to your tenant. Cached in-process for 30 seconds. The dashboard grid now shows real metrics instead of placeholder data.

- milestone
  15,014 Tests passing
  10 Compliance YAMLs
  5 MCP primitives
  80 Days to deadline

v0.30 April 10, 2026

## Agents Unleashed

v0.30 is the biggest Sandcastle release yet. Claude Managed Agents are now workflow steps. Pick from 15 built-in agent templates — or describe what you need and AI designs the agent for you. Combine cloud agents, local models, OCR, and PDF reports in one YAML file. Plus: GLM-OCR with 94.6% accuracy runs locally for free, and every run now tells you exactly where your tokens go.

- feat · headline

  ### Claude Managed Agents as Workflow Steps

  Delegate to Anthropic's cloud agent runtime. Agents get bash, files, web search, code execution. Use them alongside Mistral, oMLX, or any other provider. One YAML, best tool per step.

- feat

  ### 15 Built-in Agent Templates

  researcher, coder, analyst, writer, reviewer, scraper, tester, devops, translator, designer, sql_expert, seo_specialist, legal_analyst, financial_analyst, project_manager. One line: `agent_template: researcher`

- feat

  ### Describe Mode

  Don't pick a template. Describe what you need: "Data analyst who creates charts from CSVs." AI designs the agent automatically — system prompt, tools, packages, network.

- feat

  ### Agent Chaining

  output_format (json/files/markdown), shared_files between agents, fallback_template on failure. Agents collaborate in multi-step pipelines.

- feat

  ### GLM-OCR Engine

  0.9B model, 94.6% accuracy, #1 on OmniDocBench. Runs locally via Ollama. Free. Handles tables, handwriting, math, code blocks. 4th OCR engine alongside pymupdf and Chandra.

- feat · perf

  ### Token Waste Detection

  Every run generates a token efficiency report. Detects duplicate file reads, duplicate prompts, oversized context. output_max_tokens limits what passes between steps. Cache-aware execution.

- milestone
  21 Step types
  15 Agent templates
  4 OCR engines
  325 New tests

v0.28.1 April 1, 2026

## Every Step Knows Its Story

v0.28.1 is about making what you've built understandable. Steps explain why they exist. Errors tell you what went wrong. The CLI shows you what's happening in real-time. And LLM steps can now pull in fresh context from memory, web, or files before they run.

- feat · headline

  ### Self-Describing Workflows

  Every step can declare its `responsibility`, `source_hint`, `owner`, and `added_date`. Three new CLI commands: `sandcastle describe`, `sandcastle lint`, `sandcastle owners`. Audit trail enriched. Dashboard shows metadata on steps and workflow cards.

- feat

  ### context_query — Dynamic Context for LLM Steps

  Steps fetch relevant context before execution. Four sources: Agent Memory (semantic search), web (Tavily), local files (keyword search), custom (shell command). Available as `{context}` in prompts.

- feat · ux

  ### sandcastle run --stream

  Live terminal output with colors: green for done, yellow for running, red for failed. Shows step timing, cost, and responsibility. Ctrl+C runs in background.

- feat · ux

  ### Real-Time Step Progress

  Dashboard shows live checkmarks via SSE as steps complete. No more refreshing to see progress.

- feat · ux

  ### Detailed Errors + PDF Download

  Full error messages in red callout boxes (not just "failed"). Download PDF button for report steps.

- feat

  ### Batch Cancel + Semantic Search

  Cancel running batches mid-flight. Template search with "Did you mean…" fuzzy suggestions.

- feat · quality

  ### 540 New Tests

  280 template e2e tests (top 20 templates). 260 provider integration tests (all 7 providers). Full validation coverage.

v0.28 March 29, 2026

## Batch, Monitor, Report.

v0.28 is where Sandcastle stops being a tool and becomes a platform. Batch-process thousands of items. Monitor your schedules. Generate beautiful PDF reports with charts. Parse scanned documents with AI. Auto-update without downtime. And now — run everything locally on Apple Silicon with oMLX.

- feat · headline

  ### Auto-Update System

  CLI: `sandcastle update`. Dashboard: one-click with rollback. Stable/beta/pinned channels. Blackout windows. Enterprise approval policies. Never manually pip install again.

- feat

  ### Batch Run

  Upload 1000 items, Sandcastle fans out into parallel runs. Progress tracking, per-item results, aggregate cost. `POST /workflows/{name}/batch`

- feat

  ### PDF Report Engine

  New step type: `type: report`. Professional-grade PDFs with cover page, table of contents, charts, KPI boxes, callouts. 3 themes. WeasyPrint under the hood. `pip install sandcastle-ai[report]`

- feat

  ### Schedule Monitor

  Dashboard page showing all cron schedules: last run, next run countdown, success rate, pause/resume. No more guessing what failed overnight.

- feat

  ### Chandra OCR

  Parse scanned documents, handwriting, tables from images. 90+ languages including Czech. `ocr_engine: chandra` in parse step. `pip install sandcastle-ai[ocr]`

- feat

  ### oMLX — Local AI on Apple Silicon

  7th provider. Run Llama 4, Mistral, Gemma, Qwen locally. Zero cloud costs. Zero data leaving your machine. OpenAI-compatible.

- feat

  ### Workflow Version Diff

  Every edit versioned. Compare any two versions with YAML diff highlighting. See exactly what changed.

- feat · ux

  ### Activity Feed + Run Compare

  Real-time activity stream on dashboard. Select 2 runs and compare side-by-side.

- feat

  ### Deep Research Pipeline

  OpenVLAW-inspired 6-step template: parallel research, judge, verify, typeset, audit. Built-in.

- milestone
  7 AI providers
  20 Step types
  125 Templates
  44 New oMLX tests

v0.2666b1 March 27, 2026

## Hardened

v0.2666 was the vision. v0.2666b1 is the proof. We shipped universal advisor, EU data residency, smart failover. Then we spent a week trying to break it. 1,875 new tests. 90 bug fixes. 10 security patches. Every edge case we found — fixed.

- feat · ai

  ### AI Assistant got smarter

  Generates workflow, finds errors, fixes them automatically. Suggests matching templates. Learns your style from existing workflows. Knows which tools you have configured.

- feat · ux

  ### First 60 seconds redesigned

  Auto-detects Ollama and API keys on first load. One-click demo workflow runs in 10 seconds. Onboarding wizard: 2 steps, not 5.

- feat

  ### Failover Dashboard

  See when and why providers failed over. Per-workflow cost recommendations with savings amounts.

- feat

  ### Agent Memory Page

  Search, browse, delete agent memories. Importance scores and decay visualization.

- fix · security

  ### Security hardened

  Admin auth on evolution endpoints, template injection prevention, EU residency enforced on every LLM call, rate limiting, credential logging sanitized.

- fix · perf

  ### Faster everywhere

  GZip compression, 2-phase dashboard loading, cache headers, database indexes, search debounce.

- milestone
  1,875 New tests
  90 Bug fixes
  10 Security patches
  14,361 Total tests

v0.2666 March 26, 2026

## Your AI, Your Rules, Your Borders

The release where Sandcastle stopped being an orchestrator and became a platform. You used to choose a provider and hope for the best. Now you describe what you want and the system figures out the rest — which model, which provider, what it costs, where the data lives, and what happens when something breaks.

- feat · headline

  ### Universal Advisor — one setting changes everything

  Set `SANDCASTLE_ADVISOR_PROVIDER=mistral` and every AI feature — generation, evolution, evaluation, quality scoring — switches to Mistral. Tomorrow you want Claude? Change one line. Ollama on your laptop? Same line. Six providers, one setting, zero code changes.

- feat · compliance

  ### EU Data Residency

  Set `DATA_RESIDENCY=eu`. That's it. All AI processing routes through EU providers or stays local. Try sending data to a US provider with EU mode on — Sandcastle won't let you. Not a promise. Enforcement.

- feat · reliability

  ### Smart Auto-Failover

  Provider hits a rate limit at 3 AM? Sandcastle switches to the next one. No error. No alert. No intervention. You wake up, check the dashboard, see "Failover activated 2x overnight. $0.12 additional cost." That's the whole story.

- feat

  ### SLO-Aware Routing

  Critical analysis gets Claude Opus. Simple formatting gets Haiku. Not because you configured 47 rules — because Sandcastle matches model quality to task importance automatically. You set the priorities. It picks the brain.

- feat · cost

  ### Cost Intelligence — you'll finally know where the money goes

  Per-provider cost breakdown. "Last 30 days: $120 via Claude. Same workloads via Mistral: $45." One click to see the math. And proactive recommendations that actually make sense — "Switch these 3 workflows to Mistral and save $75/month with EU residency included."

- feat

  ### OpenClaw Integration

  New step type: `type: openclaw`. Your workflows can now call OpenClaw agents as a step in any pipeline. One more thing you don't have to build yourself.

- feat

  ### Document Parser

  New step type: `type: parse`. PDF, DOCX, XLSX at 576 pages per second. No external service. No API key. No monthly bill. Just `pip install sandcastle-ai[parse]` and go.

- feat · ux

  ### Dashboard that gets out of your way

  Getting Started checklist for new users. Quick Run cards — jump straight to results. Collapsible sidebar. Step palette with categories. Backend configurator with copy-paste .env snippets. Lazy loading. The dashboard got simpler by getting smarter.

- milestone
  6 AI providers
  20 Step types
  576 Pages/sec parsed
  0 Lines to switch providers

v0.25.0 March 20, 2026

## Evolution

- feat · headline

  ### Workflow Evolution

  Your workflows optimize themselves. Set an eval suite, click "Evolve", and Sandcastle autonomously mutates prompts, swaps models, and simplifies steps — keeping only changes that improve your score.

- feat

  ### Composite Scoring

  `quality * confidence - cost_penalty - latency_penalty`. Every mutation is evaluated mechanically. No subjective judgments.

- feat

  ### Mutation Operators

  Three strategies: prompt refinement (LLM-guided), model swapping (haiku <-> sonnet based on quality/cost), and simplification (the AI learns that less is more).

- feat

  ### Evolution Dashboard

  Track every iteration. See the score evolve. Compare baseline vs best. Accept the winner with one click.

v0.24.0 March 19, 2026

## Ecosystem

- feat · headline

  ### Workflow as API

  Your workflows are now production APIs. One click to publish, one curl to call. Your customers hit the endpoint, you see every run in the dashboard. `POST /api/v1/lead-enrichment` with a Bearer key and a JSON body.

- feat

  ### Living Dashboard

  The dashboard shows real data now. Real-time sparklines update on every run. Anomaly detection catches cost spikes and error streaks automatically. Heatmap shows 6 months of activity — click any day to drill down into individual runs.

- feat

  ### Agent Marketplace

  Publish your workflows to the community hub. Others rate them, install them, remix them. Think npm for AI agents. One command to publish, one click to install.

- feat

  ### Multi-Agent Delegation

  Agents that call other agents. Dynamic routing: the output of one step picks which workflow runs next. Full depth tracking, real-time progress events at every level of delegation.

- feat

  ### File Upload

  Workflows accept real documents now. Drop a PDF, CSV, or image into the run modal. Text files are inlined into prompts. Binary files are passed as references to your agent steps.

v0.23.0 March 18, 2026

## Enterprise Trust

- feat · compliance

  ### EU AI Act Compliance

  Risk classification per EU AI Act categories. Compliance mode that blocks high-risk workflows without human approval. Transparency reports (Article 13), Annex IV technical documentation, global emergency stop.

- feat · security

  ### Tamper-Evident Audit Trail

  SHA-256 hash chain on every event. Each entry links to the previous — if anyone modifies a record, the chain breaks. Verify integrity via API. 7 executor hooks + 9 admin action hooks. 3 query endpoints.

- feat · privacy

  ### Privacy Router

  7 PII patterns: email, phone, SSN, credit card, IP address, IBAN, date of birth. Per-workflow or per-server config. Redact sensitive data before it touches your LLM, or run in audit-only mode.

- feat · infra

  ### Browser Modes

  LightPanda (10x faster CDP, zero memory bloat) and Browserbase (cloud, zero cold-start) join E2B, Docker, and local as sandbox options. Playwright pre-baked in the Dockerfile. Switch backends with one env var.

- feat · observability

  ### OpenTelemetry

  Workflow and step-level OTLP spans. Cost, duration, and token counts on every trace. Compatible with Jaeger, Tempo, Honeycomb, Datadog. `pip install sandcastle-ai[otel]`

- feat · integrations

  ### 5 New Connectors

  Langfuse (LLM observability), Qdrant (vector search), GCS (Google Cloud Storage), Azure Blob Storage, and Exa (semantic web search). 63 total connectors.

v0.22.0 March 17, 2026

## Reliability & Cost

- feat · cost

  ### Cost Estimation

  `POST /runs/estimate` tells you what a workflow will cost before you run it. Per-step breakdown with model pricing baked in. Set budget guardrails. Workflows that would exceed the budget are blocked before a single token is spent.

- feat · security

  ### Secret Scrubber

  Catches credential URLs, PEM keys, Azure AccountKey, and JSON-quoted secrets before they reach logs or LLM context. Two-layer defense. Idempotent — safe to run multiple times on the same payload.

- feat · quality

  ### Eval Framework

  Detects quality regressions with IEEE 754-safe integer basis points. No more floating-point false positives that cause flaky CI. Define expected outputs, run evals on every commit, catch regressions at 0.01 percentage point precision.

- feat · integrations

  ### Composio Integration

  500+ business app actions through a single step type. Gmail, Slack, Notion, Salesforce, HubSpot, and more — all wired in via the Composio connector. One auth flow, any tool, zero custom code.

The log keeps growing. So does the build.

## Run the latest in one command.

$pip install sandcastle-ai Copy
Docs ↗ PyPI ↗ GitHub ↗ Home