v3.6.27
ruvnet/ruflov3.6.27May 4, 2026by ruvnet
AI Summary
This release adds Ollama as a Tier-2 first-class provider in the 3-tier model routing system (ADR-026), enabling end users on Anthropic Max plans and Ollama Cloud subscribers to use workflow_execute and other agent paths. The release was validated end-to-end against ruvultra running Ollama over Tailscale with successful results (611ms round-trip, 49 tokens).
Key Highlights
- Ollama is now a Tier-2 first-class provider in the 3-tier model routing system
- End users on Anthropic Max plans (which don't expose ANTHROPIC_API_KEY) can now use workflow_execute and other agent paths
- Provider auto-fallback logic: Ollama selected when RUFLO_PROVIDER=ollama OR when ANTHROPIC_API_KEY unset AND OLLAMA_API_KEY set
- Response shape normalized to AnthropicCallResult regardless of provider (success, model, output, usage, durationMs)
- Validated end-to-end against ruvultra over Tailscale (611ms round-trip, 49 tokens)
New Features
- Ollama Cloud support with configuration via ruflo providers configure -p ollama -k $OLLAMA_API_KEY
- Self-hosted Ollama support with OLLAMA_BASE_URL configuration
- Provider selection logic in callAnthropicMessages with explicit and auto-fallback modes
- Response normalization to AnthropicCallResult format for all providers
- Test command: ruflo providers test -p ollama for round-trip key validation
Full Release Notes
Single-issue release closing #1725. Validated end-to-end against ruvultra running ollama on a Tailscale tailnet.
## What's new
**Ollama is now a first-class provider** — Tier-2 in the 3-tier model routing per ADR-026. End users on Anthropic Max plans (which don't expose \`ANTHROPIC_API_KEY\`) plus Ollama Cloud subscribers can finally use \`workflow_execute\` and any other agent path that routes through \`callAnthropicMessages\`.
### Configure
```bash
# Ollama Cloud
ruflo providers configure -p ollama -k \$OLLAMA_API_KEY
ruflo providers test -p ollama # round-trips the key
# Self-hosted Ollama (this release validated against ruvultra over Tailscale)
export OLLAMA_API_KEY=local # sentinel — skip auth header
export OLLAMA_BASE_URL=http://ruvultra:11434 # any Ollama endpoint
export RUFLO_PROVIDER=ollama # or unset ANTHROPIC_API_KEY
```
### Provider selection logic
\`callAnthropicMessages\` now picks Ollama when:
1. \`RUFLO_PROVIDER=ollama\` (explicit), **OR**
2. \`ANTHROPIC_API_KEY\` unset AND \`OLLAMA_API_KEY\` set (auto-fallback)
Falls back to Anthropic when the env is right for it. Response shape is normalized to \`AnthropicCallResult\` either way — callers see \`{ success, model, output, usage, durationMs }\` regardless of provider.
### Validation against ruvultra (Tailscale)
- Installed ollama 0.23.0 on ruvultra (Ubuntu 24.04)
- Daemon bound to \`0.0.0.0:11434\`
- Pulled \`llama3.2:1b\`
- From local Mac, called \`callAnthropicMessages\` over Tailscale → 611ms round-trip, 49 tokens
- Response normalized correctly
## Packages
| Package | Version |
|---|---|
| \`@claude-flow/cli\` | 3.6.27 |
| \`claude-flow\` (umbrella) | 3.6.27 |
| \`ruflo\` (umbrella) | 3.6.27 |
## Verify
\`\`\`bash
ruflo verify
# → 55 fixes / 55 verified
\`\`\`
## Known gap (upstream)
\`agentic-flow config-wizard\` still hardcodes 4 providers (anthropic / openrouter / gemini / onnx). That's an upstream wedge in the \`agentic-flow\` npm package — out of scope for this repo. Workaround: set \`OLLAMA_API_KEY\` directly in the environment (not via \`agentic-flow config set\`); ruflo's runtime picks it up regardless of what the wizard thinks.