v0.7.12 — coordinated stable release
Released: 2026-05-26 · Codename: Stable Foundations
Why v0.7.12 matters
v0.7.12 is the largest release since the project began — a single, coordinated promotion that takes every alpha/beta provider to its first stable line and ships the cross-cutting native-tool observability that powers it. After this release the project returns to a bug-fix / single-provider cadence.
Highlights
- 🟢 Five packages graduate to Stable (
Development Status :: 5 - Production/Stable) in one release:nucleusiq-anthropic 0.2.0,nucleusiq-ollama 0.2.0,nucleusiq-groq 0.1.0,nucleusiq-mcp 0.1.0. Core (nucleusiq 0.7.12) and the already-stablenucleusiq-openai 0.7.0/nucleusiq-gemini 0.3.0ship aligned, with every provider flooring onnucleusiq>=0.7.12. - 🧠 Anthropic Phase B feature-complete —
AnthropicTool.web_search()/web_fetch()/code_execution(), prompt caching (cache_system/cache_tools), extended thinking (thinking="low"|"medium"|"high"|"max"), andstrict_tools/disable_parallel_tool_use. Backed by 6 live integration tests against the real Anthropic API. - 🔎 Native-tool observability in core — every traced tool call carries
executed_by: Literal["local", "provider"];LLMCallRecordgainsprovider,request_id,organization_id,stop_reason,cache_read_input_tokens,cache_creation_input_tokens, and a genericmetadatadict. Populated by every provider in this release. - 👁️ Ollama vision wire — multimodal
contentlists withimage_urlparts are split into Ollama'smessage.content+message.imagesfields, withdata:URL decoding and HTTP-URL warnings. - ✅ 3 705+ tests passing across the monorepo — including 79 Groq, 98 Ollama, 151 Anthropic + 6 live, 232 OpenAI, 292 Gemini, and 235 MCP unit tests.
Package matrix
| Package | Before | Now | Status | Floor |
|---|---|---|---|---|
nucleusiq |
0.7.11 |
0.7.12 |
🟢 Core release | — |
nucleusiq-anthropic |
0.1.0a1 (alpha) |
0.2.0 |
🟢 Stable | nucleusiq>=0.7.12 |
nucleusiq-ollama |
0.1.0a1 (alpha) |
0.2.0 |
🟢 Stable | nucleusiq>=0.7.12 |
nucleusiq-groq |
0.1.0b1 (beta) |
0.1.0 |
🟢 Stable | nucleusiq>=0.7.12 |
nucleusiq-mcp |
0.1.0b1 (beta) |
0.1.0 |
🟢 Stable | nucleusiq>=0.7.12 |
nucleusiq-openai |
0.6.4 |
0.7.0 |
🟢 Stable | nucleusiq>=0.7.12 |
nucleusiq-gemini |
0.2.6 |
0.3.0 |
🟢 Stable | nucleusiq>=0.7.12 |
Anthropic 0.2.0 Stable — Phase B feature-complete
What's new
nucleusiq-anthropic graduates from alpha to Production/Stable with full Phase B support. 151 unit tests + 6 live integration tests, 95.91% coverage (gate ≥ 95%).
| Capability | API surface |
|---|---|
| Native server tools | AnthropicTool.web_search() · AnthropicTool.web_fetch() · AnthropicTool.code_execution() |
| Prompt caching | AnthropicLLMParams(cache_system=True, cache_tools=True) |
| Extended thinking | AnthropicLLMParams(thinking="low"\|"medium"\|"high"\|"max") |
| Strict tools | AnthropicLLMParams(strict_tools=True) |
| Single-tool turn | AnthropicLLMParams(disable_parallel_tool_use=True) |
| Server-tool observability | AnthropicLLMResponse.server_tool_calls: list[ServerToolCall] (auto-emitted as ToolCallRecord(executed_by="provider")) |
LLMCallRecord enrichment |
provider, request_id, organization_id, stop_reason, cache_read_input_tokens, cache_creation_input_tokens |
Live integration tests (6 / 6 passing)
| Test | Validates |
|---|---|
test_live_web_search_emits_server_tool_calls |
web_search server-tool emission |
test_live_code_execution_emits_server_tool_calls_with_result |
code_execution round-trip + result parsing |
test_live_prompt_caching_reads_cache_on_second_call |
Cache write → cache read on consecutive calls |
test_live_extended_thinking_completes[low] |
Thinking budget low (2 000) |
test_live_extended_thinking_completes[medium] |
Thinking budget medium (8 000) |
test_live_disable_parallel_tool_use_emits_single_tool_call |
Single-tool turn semantics |
Default model: claude-sonnet-4-5-20250929 (override with ANTHROPIC_PHASE_B_MODEL=<id>).
→ Deep-dive guides: Native server tools · Prompt caching · Extended thinking.
Ollama 0.2.0 Stable — vision wire
OpenAI-style multimodal messages now work natively
nucleusiq-ollama/_shared/wire.py adds _split_data_url and _extract_text_and_images helpers; sanitize_messages now produces:
# in:
{"role": "user", "content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBORw0K..."}},
]}
# out (Ollama wire shape):
{"role": "user", "content": "What's in this image?", "images": ["iVBORw0K..."]}
- Direct
imagesarrays pass through untouched. - Raw-string
imagesentries are accepted. data:image/...;base64,...URLs are decoded.- HTTP image URLs trigger a warning and are dropped — NucleusIQ does not fetch remote images on your behalf.
98 unit tests, 99.85% coverage. Vision now requires a multimodal Ollama model (llama3.2-vision, llava, bakllava, …).
→ See the Ollama provider guide.
Native-tool observability (cross-cutting)
One observability signal across every provider
Adding ToolCallRecord.executed_by makes it trivial to split locally-run vs provider-run tools — no matter which LLM the agent used:
local = [tc for tc in result.tool_calls if tc.executed_by == "local"]
provider = [tc for tc in result.tool_calls if tc.executed_by == "provider"]
| Provider | Native tool wire types surfaced |
|---|---|
| Anthropic | server_tool_use + per-tool *_tool_result (e.g. code_execution_tool_result, web_search_tool_result) |
| OpenAI | web_search_call, code_interpreter_call, file_search_call, computer_use_call, image_generation_call |
| Gemini | executable_code + code_execution_result (paired → code_execution), grounding_metadata (→ google_search) |
| Groq | message.executed_tools parsed into GroqLLMResponse.server_tool_calls (stub today; full hosted-tool Responses API in 0.2.x) |
→ See Native server tools and Observability.
Migration from v0.7.11
Zero breaking changes
v0.7.12 is additive only for application code. All new fields default to safe values (executed_by="local", cache_*_tokens=0, optional strings = None).
The only required action is to bump pins:
pip install -U \
"nucleusiq>=0.7.12,<0.8" \
"nucleusiq-openai>=0.7.0,<0.8" \
"nucleusiq-gemini>=0.3.0,<0.4" \
"nucleusiq-anthropic>=0.2.0,<0.3" \
"nucleusiq-groq>=0.1.0,<0.2" \
"nucleusiq-ollama>=0.2.0,<0.3" \
"nucleusiq-mcp>=0.1.0,<0.2"
Test gate
| Suite | Tests | Coverage |
|---|---|---|
nucleusiq core |
1 543 unit | ≥ 95% |
nucleusiq-openai |
232 unit | ≥ 95% |
nucleusiq-gemini |
292 unit | ≥ 95% |
nucleusiq-anthropic |
151 unit + 6 live integration | 95.91% |
nucleusiq-groq |
79 unit | 92.51% |
nucleusiq-ollama |
98 unit | 99.85% |
nucleusiq-mcp |
235 unit + 13 live integration | 98.68% |
→ Full per-package breakdown lives in the Changelog and the monorepo CHANGELOG.md.
What's next
After v0.7.12 the project returns to a bug-fix / single-provider cadence:
nucleusiq-anthropic 0.3.x— Phase C (Memory tool,computer_use,bash).nucleusiq-groq 0.2.x— Groq Responses API + hosted tools.nucleusiq-mcp 0.2.x— MCP resources & prompts, sampling, progress callbacks.nucleusiq 0.7.13+— operational polish, bug fixes, retry tuning.
See also
- Changelog — full v0.7.x history
- Native server tools
- Prompt caching
- Extended thinking
- Observability
- Monorepo
CHANGELOG.md