Multi-model MCP routing fabric for local and cloud LLMs
Project description
AuraRouter: The AuraXLM-Lite Compute Fabric
Current Status: Production Prototype v3 (Feb 2026)
Maintainer: Steven Siebert / AuraCore Dynamics
Overview
AuraRouter implements a simplified role-based configurable xLM (SLM/TLM/LLM) prompt routing as an MCP server. AuraRouter is designed to orchestrate local and cloud resources for AuraCore development. It acts as an intelligent middleware for an MCP Client (ie Gemini CLI), allowing you to route code generation tasks to local hardware while maintaining a cloud safety net.
It implements an Intent -> Plan -> Execute loop:
- Router: A fast local model classifies the task (Simple vs. Complex).
- Architect: If complex, a reasoning model generates a sequential execution plan.
- Worker: A coding model executes the plan step-by-step.
Architecture
graph TD
User[Gemini CLI] -->|Task| Router{Intent Analysis}
Router -->|Simple| Worker[Coding Node]
Router -->|Complex| Architect[Reasoning Node]
Architect -->|Plan JSON| Worker
subgraph Compute Fabric [auraconfig.yaml]
Worker -->|Try| Node1[Local RTX 3070]
Node1 -->|Fail| Node2[Cloud Fallback]
end
Prerequisites
- Python 3.12+
- Ollama (Running locally with
qwen2.5-coder:7bor similar) - Google AI Studio Key (For cloud fallback/reasoning)
Installation
1. Environment Setup
Create the isolated environment with the required dependencies.
conda env create -f environment.yaml
conda activate aurarouter
2. Pull Local Models
We recommend the Qwen 2.5 series for consumer hardware speed/stability.
ollama pull qwen2.5-coder:7b
3. Configuration
Edit auraconfig.yaml to define your nodes and paste your API keys.
models:
local_3070:
provider: ollama
endpoint: http://localhost:11434/api/generate
model_name: qwen2.5-coder:7b
cloud_gemini:
provider: google
model_name: gemini-2.0-flash
api_key: "AIzaSy..." # Paste key here
4. Auto-Registration
Run the installer to inject AuraRouter into your Gemini CLI settings.
python aurarouter.py --install
Follow the prompts to auto-detect your settings.json.
Usage
Restart your Gemini CLI. You can now use natural language to trigger the fabric.
The "Fast Lane" (Local Only):
"Write a python function to calculate Fibonacci." (Routes directly to Local Qwen)
The "Heavy Lane" (Cloud Plan + Local Build):
"Create a distributed lock manager in C# with an interface and unit tests." (Routes to Cloud Architect for planning, then Local Qwen for execution)
Scaling Guide
When you add new on-prem xLM resources:
- Open
auraconfig.yaml. - Uncomment the
local_3090_deepseekblock undermodels. - Add it to the top of the
reasoningrole list. - Restart the router. No code changes required.
Troubleshooting
- "Empty response received": The local model is likely OOMing or timing out. Check the
timeoutsetting inauraconfig.yaml. - "Model not found": Ensure the
model_namein YAML matchesollama listexactly. - Installer fails: Manually add the
mcpServersblock to your~/.geminichat/settings.jsonpointing to theaurarouter.pyabsolute path.
License
Copyright 2026 AuraCore Dynamics Inc.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aurarouter-0.1.0.tar.gz.
File metadata
- Download URL: aurarouter-0.1.0.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1637415a50eeb9731cfba196a70195d7543a5a6d85a79b2ee904c7678e42458d
|
|
| MD5 |
3c9c2a4a0a2b63f3423dd591c1dd7afd
|
|
| BLAKE2b-256 |
15e32413fd63efc1bc73ebfa55829183b292e69b13674053dd092beb6e810846
|
Provenance
The following attestation bundles were made for aurarouter-0.1.0.tar.gz:
Publisher:
publish.yml on AuraCoreDynamics/aurarouter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aurarouter-0.1.0.tar.gz -
Subject digest:
1637415a50eeb9731cfba196a70195d7543a5a6d85a79b2ee904c7678e42458d - Sigstore transparency entry: 902186926
- Sigstore integration time:
-
Permalink:
AuraCoreDynamics/aurarouter@8e1c67b0c745f34d4e1948e5c3654da59ab3f583 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AuraCoreDynamics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8e1c67b0c745f34d4e1948e5c3654da59ab3f583 -
Trigger Event:
release
-
Statement type:
File details
Details for the file aurarouter-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aurarouter-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f220a5a4b0f7624ce323896a11e3b219d05019a838ee81190b52db076c0fce47
|
|
| MD5 |
ec2383894bf980ee44039c752844c046
|
|
| BLAKE2b-256 |
8551697f2b93f5260edf44354946b25559cf7fcebd8dcafc957ff73ff900be75
|
Provenance
The following attestation bundles were made for aurarouter-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on AuraCoreDynamics/aurarouter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aurarouter-0.1.0-py3-none-any.whl -
Subject digest:
f220a5a4b0f7624ce323896a11e3b219d05019a838ee81190b52db076c0fce47 - Sigstore transparency entry: 902186964
- Sigstore integration time:
-
Permalink:
AuraCoreDynamics/aurarouter@8e1c67b0c745f34d4e1948e5c3654da59ab3f583 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AuraCoreDynamics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8e1c67b0c745f34d4e1948e5c3654da59ab3f583 -
Trigger Event:
release
-
Statement type: