AI Control Plane for orchestrating models, memory, and evaluation
Project description
Unified
An AI Control Plane for orchestrating models, memory, and evaluation across your projects.
What is This?
Unified is infrastructure for AI-assisted development. Instead of hardcoding model choices and losing context between sessions, unified provides:
- Registry - Catalog of available models, tools, and skills
- Router - Selects the right model based on task type and constraints
- Memory - Persistent storage for decisions, patterns, and project knowledge
- Evaluator - Quality gates that validate AI output against checklists
- Audit Log - Complete record of routing decisions and evaluations
See docs/concepts.md for the full mental model.
Installation
# Clone the repository
git clone https://github.com/youruser/unified.git
cd unified
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
Coming soon: pip install unified-controlplane
Quick Start
# Check system status
python src/cli.py status
# Route a task to the appropriate model
python src/cli.py route "Generate unit tests for user authentication" --type code
# Run full control plane loop (dry run with mock output)
python src/cli.py dry-run "Refactor the payment module" --type code --role lead
# Run with real model (requires API key)
export ANTHROPIC_API_KEY=your-key-here
python src/cli.py run "Explain this error message" --type analysis
CLI Reference
route
Select the appropriate model for a task without executing.
python src/cli.py route "task description" [OPTIONS]
Options:
--type TEXT Task type: code, review, documentation, architecture, analysis
--role TEXT Role: lead, reviewer, advisor
-c, --constraint Constraints: low-cost, fast, high-accuracy, local-only
--dry-run Show decision without executing
run
Execute the full control plane loop with real model output.
python src/cli.py run "task description" [OPTIONS]
Options:
--type TEXT Task type (default: code)
--role TEXT Role (default: lead)
-c, --constraint Constraints (can specify multiple)
--model TEXT Override model selection
dry-run
Execute full loop with mock output (for testing workflows).
python src/cli.py dry-run "task description" [OPTIONS]
status
Display control plane status: registry contents, memory stats, audit log info.
python src/cli.py status [OPTIONS]
Options:
--check-health Verify model availability (may be slow)
evaluate
Run quality checklists against output.
python src/cli.py evaluate [OPTIONS]
Options:
--file PATH File containing output to evaluate
--task-type TEXT Task type for checklist selection
--task-brief TEXT Brief description for alignment checks
-c, --checklist Specific checklist(s) to run
config-validate
Validate registry configuration.
python src/cli.py config-validate [OPTIONS]
Options:
--path TEXT Path to registry.yaml (default: configs/registry.yaml)
Configuration
Registry (configs/registry.yaml)
Define available models, tools, and skills:
models:
claude-sonnet:
provider: anthropic
capabilities: [code, reasoning, review, documentation]
cost_tier: medium
is_local: false
adapter: claude
model_id: claude-3-sonnet-20240229
ollama-llama3:
provider: ollama
endpoint: http://localhost:11434
capabilities: [code, reasoning]
cost_tier: free
is_local: true
adapter: ollama
model_id: llama3
tools:
run_tests:
description: "Run pytest on specified path"
module: tools.testing
function_name: run_pytest
parameters:
type: object
properties:
path: { type: string }
required: [path]
skills:
review:
description: "Run reviewer checklist against work output"
template_path: .claude/skills/review.md
applicable_to: [code, documentation, architecture]
Environment Variables
| Variable | Description | Required |
|---|---|---|
ANTHROPIC_API_KEY |
API key for Claude models | For Claude adapter |
OLLAMA_HOST |
Ollama endpoint (default: http://localhost:11434) | For Ollama adapter |
Project Structure
unified/
├── src/
│ ├── cli.py # Command-line interface
│ ├── core/
│ │ ├── registry.py # Model/tool/skill catalog
│ │ └── memory.py # Persistent project knowledge
│ ├── models/
│ │ ├── base.py # Abstract ModelAdapter
│ │ ├── claude.py # Anthropic Claude adapter
│ │ └── ollama.py # Local Ollama adapter
│ ├── governance/
│ │ ├── evaluator.py # Quality checklist runner
│ │ └── audit.py # Decision and event logging
│ ├── supporting/
│ │ ├── router.py # Model selection logic
│ │ └── context.py # Prompt pack assembly
│ └── tools/ # Callable tool implementations
├── configs/
│ └── registry.yaml # Model, tool, skill definitions
├── checklists/ # Quality review templates
├── memory/ # Persistent memory storage
├── audit/ # Audit log files
├── tests/ # Unit tests
└── docs/ # Documentation
Running Tests
pytest tests/ -v
Documentation
- Conceptual Guide - Why a control plane? Mental models and workflows
- Control Plane Spec - Detailed architecture specification
- Pip Packaging Plan - Roadmap for standalone distribution
- Decision Log - Architectural decisions and rationale
License
MIT
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 unified_controlplane-0.1.0.tar.gz.
File metadata
- Download URL: unified_controlplane-0.1.0.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3a5dd818af0f8990f0df917ec20ea49bf8ce130a37744ccc0ef9faf42194c5a
|
|
| MD5 |
bb5d6597bb3acf4fcf1ac5043ba704a0
|
|
| BLAKE2b-256 |
55a9c617be45b80fbef280f3b9630c46aafec220b0a1cc4ad137c3481cbb42a2
|
File details
Details for the file unified_controlplane-0.1.0-py3-none-any.whl.
File metadata
- Download URL: unified_controlplane-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a093924b11f381568756f1d2e4cb11843d4d9da6e46f008e16a04ca00d42dd08
|
|
| MD5 |
9ac180286357100eb1dff4b834ed859d
|
|
| BLAKE2b-256 |
ad9914a86fd1446af607c24a7343a497b2467832bf37e25c1b5f88f55d03f390
|