Estate Agent

An open standard · v0.1.0

Your repos are the estate.
The AI is the agent.

Estate Agent tells an AI coding assistant where everything is, what it is allowed to touch, and what breaks if it changes something — across Java, Rust, .NET, Node, Swift, Kotlin, React, Roku and AS400.

No installation. No dependencies. Nothing leaves your machine.

The problem

AI coding agents are good inside one well-described repo and bad across an estate. An agent working in the Java payments API has no idea the Rust ledger and three phone apps depend on the endpoint it is about to change. It sees one folder. The person supervising it often cannot see further.

Estate Agent is four small tools against that: one context file per repo that every assistant reads, a map of which service calls which, guardrails that block irreversible actions, and a repair loop so none of it goes stale.

One file, five assistants

Maintain .agent/estate.yaml. Claude Code, Cursor, Copilot, Gemini and AGENTS.md are generated from it, and CI fails on drift.

A map with evidence

Every connection cites the file and line proving it. Anything ambiguous becomes a question rather than a guess.

Guardrails that block

Credentials and irreversible commands stopped at execution, not by policy. 32/32 caught, 0 false positives.

Notes that repair themselves

Stale commands, deleted repos and vanished evidence are found and fixed — without ever overwriting something you wrote.

The five levels

Adoption is a ladder, not a switch. Each level is worth having on its own, and you can stop at any of them. Click one to see what it gets you, what it costs, and — the part most descriptions leave out — what is still wrong once you are there.

Not sure where you are? Answer the four questions underneath and you will be told, along with the single next thing to do.

Levels are not tiers. A level is how far you have adopted. A tier is how much a single repo lets an agent do — read-only, pull requests, or merge on green. Tiers are explained here →

How the map works

No code-graph tool covers a real estate. The best available option parses Java, Rust, .NET, Node and Kotlin — but not Swift, not BrightScript, not RPG — and it does not link separate repositories or read API specs at all. That is half your repos and none of your cross-service connections.

So instead of trying to read ten languages, Estate Agent reads the contracts between them.

API specifications, generated client libraries, configured service URLs, and a handful of per-language call patterns. This works identically for Rust and for RPG, because it never has to understand either one. Every connection is ranked by how it was resolved and cites the line proving it. How the map works →

Measured, not asserted

Run python3 tests/run_all.py --report yourself:

Secret guard
  Real credentials blocked   32/32   (recall 100%)
  Ordinary code allowed      44/44   (false positive rate 0%)

Estate map, against a known answer
  Real connections found      8/8    (recall 100%)
  Phantom connections         0      (precision 100%)
  Sent for confirmation       1

Precision matters more than recall here. A missed connection gets added by hand and stays added. A phantom one destroys trust in the whole map, including the parts that were right.

Get started

git clone https://github.com/mutaaf/estate-agent ~/.estate-agent
export PATH="$HOME/.estate-agent/bin:$PATH"

cd ~/work/payments-api
estate doctor        # what is here and what is missing. Changes nothing.
estate init          # set it up. Folds in your existing CLAUDE.md.
estate scan ~/work   # map the whole estate

Or, using Claude Code, just say: read github.com/mutaaf/estate-agent and set this repo up. That works because AGENT.md is written for an agent to follow rather than for a human to skim.

Questions

How do you let AI coding agents work safely across many repositories?

Give each repo a single context file describing how to work there, map which services call which so an agent can see beyond its own folder, and block irreversible actions at the point of execution rather than by policy. Estate Agent does all three, runs locally, and needs no dependencies.

How do you stop an AI agent leaking secrets?

A pre-execution hook that inspects every tool call before it runs and blocks anything touching credentials, paired with a permission profile that denies force-pushes, deploys and secret-manager reads. Estate Agent's guard is measured at 32 of 32 real credentials blocked with 0 false positives across 44 pieces of ordinary code.

How do you know what breaks if you change an API?

Build a map of the estate from API contracts, generated client dependencies, configured service URLs and call sites, then query it. estate impact payments-api /v2/charge lists every affected repo including mobile and TV clients, and gives the order to ship in.

Why not use a code-graph tool to map the repos?

Because none of them cover a real estate. The leading option parses Java, Rust, .NET, Node and Kotlin but not Swift, BrightScript or RPG, and it does not link separate repositories or read API specs at all. Estate Agent reads the contracts between languages instead, which works identically for Rust and for RPG.

How do you keep AI context files from going stale?

Generate them from one source file, check them in CI, verify the documented commands still exist, and instruct the agent to correct the source whenever reality contradicts it — as part of the same pull request. The documentation then improves as a side effect of normal work instead of depending on someone remembering.

Does Estate Agent send our code anywhere?

No. There is no network code in the project. No telemetry, no account, no licence check. It is standard-library Python with zero dependencies, and the claim is enforced by a test in the project's own CI rather than asserted in a README.

Does it work with Cursor and Copilot, or only Claude Code?

All of them. One file — .agent/estate.yaml — generates CLAUDE.md, AGENTS.md, .cursor/rules, .github/copilot-instructions.md and GEMINI.md, so a team using different assistants gets the same guidance.

How do you handle a mainframe or AS400 in an AI workflow?

Describe it rather than parse it. No tool reads RPG reliably, and it is usually the highest-risk, least-tested system in the building. Estate Agent treats it as an opaque node with a declared interface — programs, tables, queues — and defaults to letting agents explain it and write callers against it, never modify it.