The Architecture Council

February 23, 2026 · View on GitHub

An AI-powered Software Architecture Design Authority where specialised AI agents evaluate architecture decisions and codebases, producing scored reviews with reasoned rulings.

Python Next.js License CI

Overview

The Architecture Council creates a visual panel of AI agents — each powered by a different LLM — that analyse software architecture decisions and codebases, producing consensus-based rulings. Agents evaluate proposals against standards, community health, strategic alignment, and security implications, synthesising diverse perspectives into actionable guidance.

Like having a design authority board available 24/7 in under 60 seconds.

Two Modes

ADR Review

Submit an Architecture Decision Record proposal. Four specialist agents evaluate in parallel, the DA Chair synthesises, and you get a structured APPROVED / CONDITIONAL / REJECTED / DEFERRED ruling with scored findings.

Codebase Review

Point the council at any public GitHub repository. The system clones it, indexes it, and runs the full panel against the actual code — scanning for secrets, analysing imports, reviewing standards compliance, and assessing DX. Results are exported as a full markdown report.


The Council Panel

AgentLLMRoleNotes
Standards AnalystOpenAI GPT-4.1Code structure, naming, dependency health, lintingUses FileReader + PatternCheck tools
DX AnalystPerplexity Sonar ProREADME, docs, test coverage, onboarding frictionNo tools — Perplexity has built-in web search; repo metadata injected into task
Enterprise ArchitectAnthropic Claude Sonnet 4Coupling, service boundaries, API surface, import depthUses FileReader, ImportGraph, APIScanner tools
Security & Resilience AnalystPerplexity Sonar ProSecrets, vulnerable deps, auth, error handlingTools pre-run in Python; results + live CVE knowledge via Perplexity
DA ChairOpenAI GPT-4.1Evidence synthesis, conflict resolution, final rulingWeighted scoring across all specialist reports

Why different LLMs?

Deliberate diversity — each LLM has different strengths:

  • GPT-4.1: Strong instruction-following, reliable structured output
  • Perplexity Sonar Pro: Live web search for real-time CVE lookups and community health data
  • Claude Sonnet 4: Deep reasoning for architectural and integration analysis

LLM Tool Compatibility Note

Not all LLMs support tool calling in CrewAI's ReAct loop. Perplexity Sonar Pro rejects OpenAI-style function calling entirely. For agents using Perplexity, tools are pre-run in Python before the crew starts and results are injected directly into the task description — giving the agent full evidence without needing to call tools itself. This is intentional and documented in the agent source files.


Features

  • Multi-LLM Council: 3 different LLM providers for genuine perspective diversity
  • Real-time Streaming: Watch agents deliberate via Server-Sent Events
  • Parallel Evaluation: Specialist agents execute in parallel (sequential only for DA Chair synthesis)
  • Codebase Review: Clone any GitHub repo and run the full council against actual code
  • Secret Scanning: Pre-run secret scanner with file-level evidence injected into security analysis
  • Live CVE Lookup: Perplexity brings current vulnerability data to dependency assessments
  • Governance Config: Per-instance governance rules loaded at runtime
  • Export: Full markdown report export for every review
  • Ask Questions: Post-review Q&A against completed analysis
  • Docker Support: Full docker-compose setup for production deployment

Tech Stack

Backend

  • CrewAI — Multi-agent orchestration
  • FastAPI — REST API & SSE streaming
  • LiteLLM — Unified LLM provider interface
  • Python 3.11+ with uv

Frontend

Tools (Codebase Review)

  • FileReaderTool — reads source files from the cloned repo
  • SecretScannerTool — scans for hardcoded credentials and key files
  • ImportGraphTool — analyses Python/JS import graphs and coupling
  • APIEndpointScannerTool — catalogues API routes and surface
  • StructureAnalyserTool — directory structure and language breakdown
  • TestCoverageTool — test file ratio and framework detection
  • DependencyCheckTool — dependency health and vulnerability signals
  • ComplianceCheckTool — governance rule evaluation

Quick Start

Prerequisites

  • Python 3.11+
  • uv
  • Bun (or npm)
  • API keys for OpenAI, Anthropic, and Perplexity

Local Development

  1. Clone the repository

    git clone https://github.com/JustinNarracott/Architect-Council.git
    cd Architect-Council
    
  2. Set up environment variables

    cp .env.example .env
    # Fill in your API keys
    
  3. Install backend dependencies

    uv sync
    
  4. Install frontend dependencies

    cd frontend && bun install
    
  5. Start backend (from project root)

    uv run architecture-council
    # API available at http://localhost:8000
    
  6. Start frontend (separate terminal)

    cd frontend && bun dev
    # UI available at http://localhost:3000
    
cd docker
docker compose up --build -d
# Backend: http://localhost:8011
# Frontend: http://localhost:3011

Configuration

Required Environment Variables

VariableDescriptionUsed By
OPENAI_API_KEYOpenAI API keyStandards Analyst, DA Chair (GPT-4.1)
ANTHROPIC_API_KEYAnthropic API keyEnterprise Architect (Claude Sonnet 4)
PERPLEXITY_API_KEYPerplexity API keyDX Analyst, Security Analyst (Sonar Pro)

Optional

VariableDefaultDescription
HOST0.0.0.0Backend host
PORT8000Backend port
RELOADfalseHot reload (dev only)

Note: Google/Gemini is no longer used. The Enterprise Architect was migrated to Claude Sonnet 4 for more reliable tool calling in CrewAI's ReAct loop.


API Reference

ADR Review

MethodEndpointDescription
GET/healthHealth check
GET/api/panelList council members and their LLMs
POST/api/reviewStart ADR review
GET/api/stream/{id}SSE stream for review progress
GET/api/review/{id}Get completed review
GET/api/rulingsList past rulings

Codebase Review

MethodEndpointDescription
GET/api/codebase/panelList codebase council members
POST/api/codebase/analyseStart codebase review (GitHub URL or local path)
GET/api/codebase/stream/{id}SSE stream for codebase review
GET/api/codebase/review/{id}Get completed codebase review

Example: Start Codebase Review

curl -X POST http://localhost:8000/api/codebase/analyse \
  -H "Content-Type: application/json" \
  -d '{
    "repo_url": "https://github.com/your-org/your-repo.git"
  }'

Example: Start ADR Review

curl -X POST http://localhost:8000/api/review \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Add Redis caching layer to Customer API",
    "technology": "Redis 7.x (AWS ElastiCache)",
    "reason": "Reduce database load and improve p95 latency from 800ms to <200ms",
    "affected_services": ["customer-api", "order-service"],
    "data_classification": "OFFICIAL",
    "proposer": "Platform Team"
  }'

Project Structure

Architect-Council/
├── backend/
│   ├── agents/           # Agent definitions — one file per agent, one LLM per agent
│   │   ├── standards_analyst.py
│   │   ├── dx_analyst.py
│   │   ├── enterprise_architect.py
│   │   ├── security_analyst.py
│   │   └── da_chair.py
│   ├── crews/
│   │   ├── architecture_crew.py   # ADR review crew
│   │   └── codebase_crew.py       # Codebase review crew (with pre-run tool injection)
│   ├── tools/            # 8 evaluation tools for codebase review
│   ├── schemas/          # Pydantic models
│   ├── api/
│   │   ├── routes.py             # ADR review endpoints
│   │   ├── codebase_routes.py    # Codebase review endpoints
│   │   ├── governance_routes.py  # Governance config endpoints
│   │   └── query_routes.py       # Post-review Q&A endpoints
│   ├── indexer/          # Repo cloning and indexing pipeline
│   ├── governance/       # Governance rule loading and formatting
│   └── main.py
├── frontend/
│   ├── app/
│   │   ├── page.tsx              # ADR Review
│   │   ├── codebase/page.tsx     # Codebase Review
│   │   └── governance/page.tsx   # Governance Config
│   ├── components/
│   └── lib/
├── docker/
│   ├── docker-compose.yml
│   ├── Dockerfile.backend
│   └── Dockerfile.frontend
├── governance/
│   └── defaults/         # Default governance rules (YAML)
├── data/                 # Static config (tech radar, patterns, compliance rules)
├── .env.example
├── pyproject.toml
└── CLAUDE.md             # Scope control for AI-assisted development

How It Works

ADR Review Flow

  1. User submits an ADR (title, technology, reason, affected services, data classification)
  2. Four specialist agents evaluate in parallel (~30–60 seconds)
  3. DA Chair synthesises all assessments into a weighted ruling
  4. Result streamed live via SSE; full report available for export

Codebase Review Flow

  1. User submits a GitHub URL (or local path)
  2. Indexer clones the repo and builds metadata (file tree, language breakdown, dependencies, key files)
  3. Security tools (SecretScannerTool, FileReaderTool) are pre-run in Python and results injected into the security task description — this is required because Perplexity doesn't support function calling
  4. Four specialist agents evaluate in parallel against the indexed repo
  5. DA Chair synthesises with weighted scoring and produces a prioritised improvement roadmap

Governance

The council respects a governance configuration that can be set per-instance via the Governance Config UI or API. Governance rules influence agent scoring thresholds, mandatory findings, and compliance checks. Default rules are in governance/defaults/.


CI / Quality Gates

Every push runs:

  • Ruff lint check (uv run ruff check backend/)
  • mypy type check (uv run mypy backend/)
  • pytest test suite
  • Across Python 3.11, 3.12, and 3.13

Frontend CI runs bun lint and bun build on every push.


Contributing

Contributions welcome. Please read CONTRIBUTING.md first.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Commit with clear messages
  4. Ensure CI passes before opening a PR
  5. Open a Pull Request

License

MIT — see LICENSE.

Acknowledgements

  • CrewAI for multi-agent orchestration
  • OpenAI, Anthropic, Perplexity for LLM APIs
  • Inspired by real design authority boards and architecture review processes