# portfolio-optimiser > A generic, open Python framework on Microsoft Agent Framework (MAF) that finds cost savings > inside each project of a portfolio of independent projects. A swarm of agents proposes candidate > measures; a mandatory deterministic validator (solver + Monte Carlo) decides the numbers; domain > experts judge the outcomes; and the system learns from their verdicts across runs. Solo-maintained, > fork-and-own, MIT. Python >=3.10, installed from source with `uv`. One start command. The clone is the documented path — the walkthrough in the README points at files in the tree: ```bash git clone https://git.fromaitochitta.com/open/portfolio-optimiser.git cd portfolio-optimiser uv sync ``` ## Docs - [README.md](README.md): what the framework is, an offline walkthrough of the whole chain (no API key, no network), and the task API. - [shared/method-spec.md](shared/method-spec.md): the framework-neutral method specification the implementation is measured against. - [docs/extending.md](docs/extending.md): the extension points — domains, data sources, ingest connectors — and what is deliberately unbuilt. - [docs/knowledge-base-recipe.md](docs/knowledge-base-recipe.md): how to build a knowledge-base bundle the run path can navigate. - [docs/kunnskapsbase-for-en-kjoring.md](docs/kunnskapsbase-for-en-kjoring.md): what one concrete run's knowledge base must contain (Norwegian). - [docs/bestille-en-kjoring.md](docs/bestille-en-kjoring.md): what a requester supplies to order a run (Norwegian). - [DEPLOY.md](DEPLOY.md): running the hosted entry point (`python main.py`) and the environment it needs. - [CLAUDE.md](CLAUDE.md): the invariant ledger — each design decision, the measurement that forced it, and the test that turns red when it is undone. ## Optional - [CHANGELOG.md](CHANGELOG.md): release history. - [SECURITY.md](SECURITY.md): how to report a vulnerability, and what is supported. - [CONTRIBUTING.md](CONTRIBUTING.md): issues welcome as signals; pull requests are not accepted.