Changelog
v0.5.0 - 2026-09-08
Modules and coordination
- Added five public module operations:
patterns/install,catalog,source,update, andcall. Modules are editable run-local definitions, discovered from project files, user files, or packaged resources. Explicitly saved definitions can be loaded in a fresh run. See the migration guide. - Breaking change: Removed the previous named pattern wrappers. The bundled library now contains
relayandmailing-list;check-result,ralph,fix-loop,team, andclean-promptare retired. Callers compose shell work and configured agents explicitly. - Added immutable module installer ownership, explicit acknowledgment for another agent's edits, and dogfood journals for successful module installations and updates.
- Exposed direct mailing-list operations for subscriptions, posting, notification, message retrieval, digest, and acknowledgment. Initialization and list creation subscribe their caller atomically; child onboarding examples establish subscriptions before generation.
Tool results and context
- Breaking change: External tools return raw
{:ok … :out … :err …}envelopes, with applicable process/HTTP status. Automatic shortening and the:truncatedflag belong to serialization. Requested line ranges, character windows, and pagination select the result. See bounded results. - Replaced stored-output representations with ordinary bounded snapshots. Complete raw values remain available to computation; retain needed evidence explicitly before pruning context. Updated recovery and context guidance explains ephemeral bindings and durable observations.
Runtime and performance
Prevented duplicate completion notifications when rejoining a retained future after an unrelated wake. One subscription remains active through receipt; explicitly awaiting again after receipt delivers the completed value without repeating the computation.
Preserved queued messages through context compaction, corrected dormant-agent startup from computations, and reset consecutive-error limits after successful model turns.
Made Ctrl+C exit interactive runs and restore terminal state. Development workflow runners clean up their child processes on interruption and output failures.
Added a configurable five-minute deadline for complete Codex HTTP responses, including stalled response bodies. Timeout does not automatically retry the request.
Reduced trace-export allocation, removed verbose-only presentation delays, detached selected file lines from full-file backing storage, and avoided unnecessary parser sanitizer allocation. Added reproducible runtime benchmark workloads and measurements.
Fixed multiline-string corruption during comment normalization, character-literal and reader-comment balancing, and regex escape preservation.
Changed the CLI default provider to
codex-tc, using local Codex authentication. The default model remains GPT-6 Astra with medium reasoning.
v0.4.0 - 2026-09-06
Communication and context
- Each run now owns an atomic coordinator for agent lifecycles, mailboxes, requests, and wakeups. Concurrent runs keep their coordination state separate.
- Added immediate
agents/askandagents/spawn-ask: request results from one or more agents, continue working, then useagents/!waitoragents/!sleep. Multi-target requests collect one result per target. Replies identify their request, and unrelated messages can awaken a caller while its collections remain pending. See multi-agent communication. - Enforced an ordering rule for communication waits to prevent coordinator-wait deadlock, assuming fair scheduling and eventual external progress. Refused waits raise recoverable errors so agents can handle outstanding requests. Added atomic capacity admission through
:coordinator {:max-edges 10000}. - Added tracked terminal requests through
/ask,/requests, and/cancel. Users can collect results from several agents while continuing to exchange messages and answer clarification requests. - Made message receipt explicit for raw
!llm-selfcalls: messages remain queued unless{:receive? true}is supplied. Convenience wrappers receive automatically. Added(receive completion)to accept messages into a completed program without evaluating it. Waits and wakeups retain the latest resumable context, and recovery preserves the failing call's receipt policy. - Replaced the future-only
blocking/completion-promisehelper with atomicblocking/requesttokens. Requests from futures participate in the coordinator's dependency tracking. - Unified tool, agent-message, and MCP result rendering under
:context-max-chars, defaulting to 10,000 characters per contribution. Oversized values remain complete in run-local storage and can be inspected in smaller pieces. Negative local display limits now use the run cap. - Improved agent guidance for retaining continuations, checking which communication actions executed, recovering from refused waits, and answering outstanding requests before returning.
Models and providers
- Changed the CLI, OpenAI, and Codex model-profile defaults to GPT-6 Astra with medium reasoning. Added Astra aliases, model limits, and standard-tier cost tracking. Higher pricing above 272K input tokens is documented but not applied automatically.
- Fixed Codex streaming responses that deliver completed tool or message items before an empty final output list, while still rejecting failed or incomplete responses.
- Added opt-in Kimi K3 aliases and Fireworks pricing.
- Fixed retries for incomplete OpenAI Responses output when a response status is a string, preserving reported usage.
Documentation
- Added the VitePress documentation site, with guides, API reference, local search, and a production-build check. The README links to the documentation, and both landing pages introduce the communication model.
v0.3.0
- Changed the CLI and OpenAI model-profile default to GPT-5.6 Sol with medium reasoning, while retaining explicit provider and reasoning overrides.
- Removed the CLI launcher's unnecessary dependency on
rlwrapby invokingclojuredirectly. - Added a new-spec-only MCP
2026-07-28client with generated permissioned namespaces, Streamable HTTP and stdio transports, tools, resources, prompts, completion, subscriptions, and an explorer-stylespell mcpCLI. - Added a runnable MCP Everything-style example backed by the official Python SDK, including retained GPT-5.6 Sol real-model validation.
- Integrated MCP server-profile, permission, CLI, security, and supported-surface documentation into the public API and configuration reference.
- Added
--trace-dir DIRfor durable CLI traces and automatic agent/trace context on feedback entries. - Added
--dogfoodto expose the feedback namespace to the main agent and its workers only for explicit self-improvement runs. - Added
--agents-mdto prepend the current working directory'sAGENTS.md, capped at 32 KiB, to natural-language CLI tasks. - Added Agent Skills discovery with on-demand
SKILL.mddisclosure via a prompt-onlyskillsnamespace, removedreminders, renamed bundled skills tospell-*names where applicable, and added SnakeYAML for safe skill metadata parsing. - Changed error recovery so proven trailing-expression failures reopen in place, while other evaluation and reader failures use one-turn inert recovery context that is pruned before subsequent turns; added a public recovery guide.
- Added Claude Fable 5.1 model aliases, pricing, adaptive thinking support, and automatic tool choice.
v0.2.0
First public-facing software release.
Notable release-surface changes relative to v0.1.0:
- Added the public
spell.api/runentry point with explicit:model-profileand:agent-profileinputs. - Renamed checked-in runtime configuration to model profiles under
config/model-profiles/and agent profiles underconfig/agent-profiles/. - Curated the public examples to
hello-world,coin-flip,twenty-questions,telephone,auction, andchat. - Consolidated public documentation around
README.md,AGENTS.md, anddocs/api.md. - Removed the experimental React namespace/profile from the public release surface.
- Added repo-local Spell skills for setup, configuration, and source navigation.
v0.1.0 - 2026-05-06
Paper/reproducibility-oriented baseline release.