Skip to content

Submilli v0.5.0

Choose a tag to compare

@somdoron somdoron released this 25 Oct 20:18
· 7 commits to main since this release

Durable execution

Submilli 0.5.0 adds opt-in recovery for persistent HTTP and MCP session runs after a server crash or restart. The server retains the program, its inputs and completed native outcomes, then replays the run using those recorded outcomes. Completed native work is not repeated. Unfinished calls without a committed outcome may execute again, so external effects still require idempotency.

Enable durable_execution: true with persistent SQLite storage and an encryption key. Inspect runs with submilli server runs list and submilli server runs show RUN_ID; explicitly retry a stuck run with submilli server runs resume RUN_ID. Durable application-tool callbacks retain stable call IDs across recovery and accept idempotent result submissions. See run recovery for configuration, lifecycle states and supported operations. (#279, #300)

Code operations support idempotent recovery through the filesystem journal. Recovery also covers HTTP downloads. Durable writers sharing a named volume are serialized while their attempts remain active. Large effect-history entries move to private encrypted files, with their references committed alongside run progress. (#299, #301, #306, #309)

Durability is off by default. It requires one server process per database on supported Unix storage. Native Windows durability, ephemeral filesystems, EFS, multi-node sharing and Git idempotency are unsupported. Keep package contents unchanged while runs are unfinished. Preserve the database, complete volume root and encryption key together. Ordinary writers and external tools still need exclusive access to shared files.

Other improvements

  • Installed packages automatically rebuild when the compiler changes. (#304)
  • Strings can be concatenated with numbers and Error values using +. Cast diagnostics identify failed record keys and reject casts to host-backed types. (#307, #290, #291)
  • Embedders receive per-run model usage, and package finalizers use the engine finalizer API. (#297, #293)
  • Loading a skill lists its bundled files. Slack message metadata accepts a variable, and ScrapeCreators errors explain rejected responses. (#308, #303, #292)

Deployment and upgrades

Runtime 0.5.0 ships with Helm chart 0.4.5. The chart templates and values are unchanged.

helm upgrade --install submilli oci://ghcr.io/submilli/charts/submilli --version 0.4.5 --wait

Back up the stopped server's complete state volume and encryption key before upgrading from 0.4.3. SQLite migrations are forward-only; rollback requires the pre-upgrade backup. The package artifact schema advances to 13 and installed packages rebuild as needed. Enable durable execution explicitly after configuring persistent storage.

Compose users can download the tag-pinned compose.yaml and select ghcr.io/submilli/submilli-runtime:0.5.0.

All changes since v0.4.3