All notable changes to AuraRouter are documented here.
aurarouter-bitnetbackend plugin — CPU-only backend for BitNet ternary-weight models (1bitLLM/bitnet_b1_58); bundlesllama-serverwith BitNet supportdiagnostics.py: pure-Python CPU feature detection via ctypes (no subprocess); detects AVX2, AVX512 on x86 (WindowsIsProcessorFeaturePresent, Linux/proc/cpuinfo, macOSsysctl), NEON on ARM64run_diagnostic()returnscapable(architecture supported),optimised(SIMD available),supported(capable + binary present),features,binary_found,platformruntime.py: resolvesbin/win-x64,bin/linux-x64,bin/macos-x64, orbin/macos-arm64; setsPATHandos.add_dll_directoryfor companion libraries- Catalog artifact:
kind: model,compute_type: CPU, score 70 (higher than generic CPU 50, below GPU backends) get_catalog_artifact()for AuraGrid catalog push-registration
- Binary directory structure extended with
macos-arm64/alongside existingmacos-x64/(macOS ARM64 maps to its own directory)
- macOS ARM64 was incorrectly mapped to
macos-x64binary directory inruntime.pyanddiagnostics.py
- Per-provider circuit breaker:
CircuitBreakerandCircuitBreakerRegistryintegrated intoComputeFabric. Providers trip toopenafterresilience.failure_thresholdconsecutive failures and recover viahalf_openprobe afterresilience.reset_timeoutseconds (defaults: 5 failures, 60 s). - Last-resort probe: When every provider in a role chain has an open circuit breaker,
ComputeFabricnow probes the least-recently-failed provider (the one closest to itsreset_timeout) rather than returningNoneimmediately. Controlled by the existingopen → half_openstate transition. RuntimeModelRegistry: Background polling registry that aggregates provider telemetry (model state, VRAM, load). Started automatically byLifecycleCallbacks.startup()in all operating modes — standalone, GUI, and grid. Poll interval configurable viatelemetry.poll_interval(default: 15 s).AuctionListener: Inference auction participant for AuraGrid. Listens onaurarouter.inference_requests, evaluates bids using VRAM pressure and circuit breaker health, publishes responses onaurarouter.inference_bids.{request_id}.ComputeFabricpublic accessors:circuit_breakers(read-only registry reference) andprovider_cache(shallow-copy snapshot) properties.CircuitBreaker.seconds_since_last_failure()monotonic elapsed time helper.LifecycleCallbacksregistry ownership: Registry lifecycle (start/stop) is now exclusively owned byLifecycleCallbacks.mas_host.pyreadslifecycle.registryrather than creating a second registry.aurarouter-masentry point:aurarouter-masCLI command starts the MAS host directly (python -m aurarouter.auragrid.mas_hostalso works).- System tray + Windows auto-start: Minimize-to-tray on close (configurable via
gui.minimize_to_tray); optional Windows startup registration viagui.windows_autostart. - AuraGrid Installer catalog entry:
AppDeploymentStepmanifest for AuraGrid node deployment.
mas_host.py_cleanup()no longer callsstop_polling()directly — registry shutdown is delegated tolifecycle.shutdown().mas_host.pyaccesses circuit breaker registry and provider cache via publicComputeFabricproperties (nogetattron private attributes).
RuntimeModelRegistrywas never started in standalone/GUI mode — it now starts in all modes viaLifecycleCallbacks.ComputeFabric._execute_with_role_chain()silently returnedNonewhen all circuits were open; now performs a last-resort probe.
resilience:
failure_threshold: 5 # consecutive failures before circuit opens (default: 5)
reset_timeout: 60.0 # seconds before open circuit probes (default: 60.0)
telemetry:
poll_interval: 15.0 # registry polling interval in seconds (default: 15.0)pytest tests/ -q -p no:napari→ 1715 passed, 17 pre-existing failures (pricing type, onnx, session), 8 skipped
- Integrated ONNX sentence encoder: Merged
aurarouter-onnxsidecar package into the coreaurarouterpackage. Model artifacts (all-MiniLM-L6-v2) and tokenizer are now bundled as internal package data. - Organic ONNX Provider: New
ONNXProviderfor local, offline inference supporting classification, embedding, and basic sequence tasks. Supports custom model/tokenizer path overrides. - Fast-Path Intent Classification:
ONNXVectorAnalyzerrefactored to use internal resource resolution, ensuring out-of-the-box intent triage in air-gapped environments. - Savings Telemetry Persistence:
UsageStorenow persistssimulated_cost_avoidedandcomplexity_scorefor all locally-routed tasks. - ROI & Telemetry Dashboard: New high-visibility tab in the desktop GUI
MonitorPanelvisualizing cumulative counterfactual savings, hard-route ratios, and task complexity. - ROI Metrics API:
AuraRouterAPI.get_roi_metrics()provides aggregated return-on-investment statistics over configurable timeframes. - Complexity-Aware Usage Recording:
ComputeFabricnow extracts complexity and savings metadata fromRoutingContextandGenerateResultfor persistent auditing. - Automatic Schema Migration: SQLite
UsageStoreautomatically evolves existing databases to support ROI fields via runtimeALTER TABLEchecks.
UsageRecordmodel updated with ROI metadata fields.MonitorPanelUI expanded to five navigation tabs.UsageStore.record()andquery()updated to handle ROI metadata.
- Ephemeral ROI data loss: Savings and complexity metrics are no longer lost after the inference loop completes.
- Artifact Discovery Service: Unified Artifact Catalog now serves as a central discovery registry for downstream projects and test suites.
- JSON CLI Querying:
aurarouter catalog artifacts --jsonprovides machine-readable discovery of all registered compute resources. - AuraXLM Test Integration: Practical implementation of dynamic ONNX model discovery for AuraXLM unit and integration tests, eliminating brittle hardcoded paths.
- RAG enrichment pipeline with AuraXLM-backed context injection and graceful timeout fallback
- Sovereignty gate for prompt evaluation, local-only enforcement, and blocked execution when no compliant local models exist
- Response sanitizer with built-in PII patterns, configurable sovereignty patterns, and unified sovereignty audit logging
- Speculative decoding orchestration:
SpeculativeOrchestrator, speculative session/state tracking, and notional streaming support - Notional response protocol with correction events for verifier-driven rewind/replay
- AuraMonologue recursive generator / critic / refiner reasoning loop with MAS-score-gated node idling
- New MCP tools for
rag_status,sovereignty_status,speculative_execute,speculative_status,monologue_execute,monologue_status, andmonologue_trace - Cross-language serialization tests covering DraftTokenBatch, VerificationResult, LatentAnchor metadata, and unified sovereignty audit payloads
route_task()execution path now supports monologue and speculative execution mode selection in addition to standard routing- sovereignty decisions are now audited in a shared cross-project schema
- full test suite now runs clean with optional provider discovery tests skipped when
aurarouter-claude/aurarouter-geminiare not installed
pytest tests/ -q-> 1499 passed, 8 skipped
- Intent Registry:
IntentRegistryandIntentDefinitionclasses for central management of all known intents (built-in + analyzer-declared).build_intent_registry()factory populates the registry from the active analyzer'srole_bindings. - Custom domain intents: Analyzers can declare domain-specific intents via
role_bindingsin their catalog spec. Each key becomes a registered intent with higher priority than built-in intents. - Analyzer spec validation:
validate_analyzer_spec()andAnalyzerSpecValidationdataclass for validating analyzer spec fields (required fields, role binding targets, MCP endpoint format). Warn-only for backwards compatibility. list_intentsMCP tool: Returns all available intents (built-in + analyzer-declared) with target roles and sources as JSON.route_taskintent parameter: Optionalintentparameter to bypass auto-classification and force a specific intent.- CLI
intentsubcommand:aurarouter intent listandaurarouter intent describe NAMEfor intent discovery and inspection. - CLI
--intentflag:aurarouter run TASK --intent NAMEto force a specific intent during task execution. - Intent combobox (GUI): Workspace panel combobox for selecting intents before execution. Shows Auto, built-in intents, and analyzer-declared intents in grouped sections. Auto-refreshes on analyzer change.
- Intent display in Settings: Settings panel analyzer section shows declared intents as tag chips alongside built-in intents.
supported_intentson models:CatalogArtifact.supported_intentsfield allows models to declare which intents they are suited for.ComputeFabric.filter_chain_by_intent()narrows model chains based on declared support.- Routing advisors:
register_routing_advisor(),unregister_routing_advisor(),list_routing_advisors(), andconsult_routing_advisors()onComputeFabricfor intent-aware chain reordering by external MCP services. - Auto-registration of catalog advisors: Services with
routing_advisorcapability are auto-registered on startup. - Reference contracts:
contracts/auracode.py(AuraCode intents andcreate_auracode_analyzer_spec()) andcontracts/auraxlm.py(AuraXLM MoE advisor interface withANALYZE_ROUTE_PARAMSand response schema). - Analyzer Developer Guide: Comprehensive documentation at
docs/ANALYZER_GUIDE.mdcovering analyzer types, registration, spec schema, role bindings, MCP endpoint contract, intent lifecycle, routing advisors, and a worked SAR processing example. - In-app help topics: Four new help topics:
custom-intents(concept),intent-selection(how-to),analyzer-intents(reference),routing-advisors(concept).
ComputeFabricconstructor accepts optionalrouting_advisorsparameterComputeFabric.execute()consults routing advisors for chain reordering before model execution- Intent classification prompt now includes custom intents via
IntentRegistry.build_classifier_choices() CatalogArtifact.from_dict()andto_dict()handlesupported_intentsfield- GUI workspace panel now includes intent selector in the button row
- Settings panel analyzer section displays intent-to-role mappings as tag chips
- README updated with Intent Classification section,
list_intentstool, andintentCLI commands - GUI Guide updated with intent combobox and settings panel documentation
- Deployment Guide updated with semantic_verbs/role_bindings/supported_intents relationship
- Backend Plugins Guide updated with analyzer plugins comparison section
- All changes are additive. Existing configs without
role_bindingsorsupported_intentswork unchanged. - Intent auto-classification is the default; explicit intent selection is opt-in.
filter_chain_by_intent()returns the full chain when no models declaresupported_intents.- Built-in intents (DIRECT, SIMPLE_CODE, COMPLEX_REASONING) are always available.
- External provider packages:
aurarouter-claude(Anthropic Claude) andaurarouter-gemini(Google Gemini) as separate MCP server packages, discoverable viaaurarouter.providersentry-point group - XLM integration:
xlm:config section withprompt_augmentationandusage_reportingfeature flags;ComputeFabric._augment_prompt()callsauraxlm.queryfor RAG context injection with fail-safe fallback - ConfigLoader XLM accessors:
get_xlm_config(),is_xlm_augmentation_enabled(),is_xlm_usage_reporting_enabled(),get_xlm_endpoint() - Feedback loop:
FeedbackStore(SQLite-backed routing outcome store),ComputeFabric._record_feedback()for asynchronous recording of model success/failure/latency; adaptive triage weight adjustment based on historical outcomes - Cross-project integration tests:
test_cross_project_integration.pyvalidating entry-point discovery, XLM augmentation hooks, and feedback store integration
ComputeFabricconstructor accepts optionalxlm_clientandfeedback_storeparameterssavings.feedback:config section added for feedback loop configuration- Provider count updated: 4 built-in + 2 external MCP = 6 total
- Unified Artifact Catalog: Three-kind typed registry supporting models, services, and analyzers in a single
catalogsection ofauraconfig.yaml - Route Analyzers: First-class orchestration primitives that represent multi-model routing strategies (intent triage, MoE ranking, pipeline, custom)
- Built-in
aurarouter-defaultanalyzer: Auto-registered on startup, wraps the existing intent→triage→execute pipeline - Catalog MCP tools:
aurarouter.catalog.list,.get,.register,.remove,aurarouter.analyzer.set_active,.get_active - Analyzer-aware
route_task: When an analyzer is active, delegates routing decisions via MCP callback to the analyzer provider - Remote analyzer callback:
_call_remote_analyzer()calls external analyzers (e.g., AuraXLM) over MCP JSON-RPC - Config migration CLI:
aurarouter migrate-config [--dry-run]converts old-format configs to include catalog entries - ConfigLoader catalog CRUD:
catalog_get,catalog_set,catalog_list,catalog_remove,catalog_query - ConfigLoader missing methods: Implemented stub methods referenced by server.py (
is_savings_enabled,get_grid_services_config,is_mcp_tool_enabled,auto_join_roles, etc.)
route_task()now accepts optionalconfigparameter for analyzer-aware routingauraconfig.yamlupdated withsystem.active_analyzerandcatalogsection- MCP service connections from
grid_services.endpointscan now be migrated to catalog service entries
- Legacy
modelssection continues to work unchanged catalog_list(kind="model")includes entries from bothcatalogandmodelssections- All existing MCP tools (
list_models,register_asset,route_task) work identically - Old configs without a
catalogsection load without error
- Multi-model MCP routing fabric with automatic fallback
- Intent → Plan → Execute loop
- Provider support: Ollama, llama.cpp, Claude, Gemini, OpenAI-compatible
- PySide6 desktop GUI
- Savings subsystem: usage tracking, pricing, privacy audit, budget management
- Triage routing: complexity-based role selection
- MCP server with configurable tool enablement
- Session management with auto-gisting
- AuraGrid MAS deployment support
- Python SDK for grid integration