This repository provides an offline deterministic decision matrix for evaluating agent framework trade-offs under explicit production constraints.
It is an offline, deterministic decision matrix. It scores framework records against explicit project constraints. It is not a benchmark, does not call external services, and does not claim that one framework is right for every context.
- Loads framework capability records from
data/frameworks.yml. - Loads scenario constraints from
data/constraints.yml. - Validates the schema before scoring.
- Applies weighted scoring and minimum capability gates.
- Prints a ranked result for the selected scenario.
The .yml files intentionally use JSON-compatible YAML so they can be parsed with Python's standard json module. This keeps the project dependency-free and deterministic.
The framework notes are conservative summaries based on official documentation verified on 2026-06-03:
- LangGraph reference: https://reference.langchain.com/python/langgraph/overview
- OpenAI Agents SDK guide: https://platform.openai.com/docs/guides/agents-sdk/
- OpenAI Agents JS guide: https://openai.github.io/openai-agents-js/guides/agents/
- Google ADK: https://adk.dev/
- Google ADK docs redirect: https://google.github.io/adk-docs/
- Microsoft Agent Framework: https://learn.microsoft.com/en-us/agent-framework/
The scoring values are review inputs for a constraint analysis, not measured performance numbers.
python3 -m src.decision_matrix --scenario regulated_enterprise
python3 -m src.decision_matrix --scenario graph_heavy_orchestration --jsonpython3 -m pytest -o cache_dir=/tmp/agent-framework-decision-matrix-pytest-cache
python3 -m ruff check .
python3 -m compileall src testsEach framework has capability scores from 1 to 5. Each scenario provides:
weights: importance per criterion.minimums: required minimum score per criterion.disqualify_on_minimum_failure: whether a failure should remove the framework from eligible results.
The normalized score is:
sum(capability * weight) / sum(5 * weight)
Minimum failures are reported separately so readers can understand whether a low rank is a weak fit or a hard constraint miss.