How the graph is served
The graph is built into the orchestrator’s image rather than run as a separate service. At build time the image clones the graph’s repository and builds the graph from the snapshot committed there. When the container starts, it runs the query server that repository provides, beside the orchestrator. Nothing outside the container reaches that server directly. The orchestrator’s/mcp endpoint is the only way in.
Each orchestrator serves one graph, and every project configured on it shares that graph. The graph covers those projects, and each refresh adds any project repository it doesn’t yet include. A project that needs a graph of its own needs an orchestrator of its own.
The graph’s contents are fixed until the next build. Refreshing it means committing a new snapshot to the graph’s repository and redeploying the orchestrator.
Add a graph to an orchestrator
Before you start, you need:- the BuildDown skills installed in your project
- an orchestrator that deploys itself
- admin sign-in configured, including the MCP callback URI for each provider
1
Start creating the graph's repository
Run
bd-kg-create in your project. It creates a private repository from the BuildDown knowledge-graph template and sets what the graph covers.It then goes on to build and deploy the graph, which works only once the orchestrator can reach the new repository. Complete the next two steps before it deploys.2
Give the GitHub App read access to the graph's repository
If your GitHub App isn’t installed on all repositories, add the graph’s repository on the App’s settings page under Install App.Whenever the orchestrator deploys a new version of itself, it reads the graph’s repository through the App, with read-only access to that repository alone.Without that access, the orchestrator can’t deploy any new version of itself — whether or not the graph changed — until the access is fixed. The running version keeps running, but each attempt first pauses new work and waits for running jobs to finish.
3
Point the orchestrator at the graph's repository
Set It takes effect at the next deploy, not when you set it. An invalid value stops the orchestrator from deploying itself at all, rather than letting it fall back to a different graph.
KG_SOURCE_REPO to the graph’s repository, as owner/repo:4
Let bd-kg-create finish
Once the orchestrator can reach the graph’s repository, let
bd-kg-create carry on. It deploys the graph, then binds your project to it and runs a real search against the deployed graph — the check that the whole setup works.Check that a deployment is serving the graph
A deployment can come up without its graph — built without it, or with a query server that failed to start — and the orchestrator carries on regardless. After a self-deploy, the admin UI’s Deployments panel records whether the release came up with its graph, and shows a notice when it didn’t. Any other deploy records nothing. Request the orchestrator’s resource-metadata document:200 means the release came up with its query server, and 503 means it didn’t.
Probing /mcp itself can’t tell you this. It answers 401 to an unauthenticated request whether the query server is running or not.
A 200 confirms only that the query server started with this release — not that the graph holds anything, or that sign-in works. A real search, like the one bd-kg-create runs when it binds a project, checks both.
Keeping it current
Runbd-kg-refresh whenever the graph should reflect newly landed work. Each run commits a fresh snapshot and redeploys the orchestrator, so it needs someone with permission to deploy.
Any other deploy that builds the graph also picks up the latest committed snapshot, since the image clones the default branch of the graph’s repository each time.
When search is degraded
The graph’s semantic search is built separately from the graph itself, and a failure there doesn’t stop the image from shipping. The graph still loads, but search falls back to keyword matching alone. In a graph repository created from the BuildDown template, that is far narrower:- A result appears only when the whole query appears in its title or one of its tags, word for word.
- Issues can’t be found by search at all.
- Only learnings and decisions are matched, plus implementation and planning notes in repositories created or updated from the template on or after 2026-09-13.
- as
"kgDegraded": truein the orchestrator’s response toGET / - as a warning line in the deploy notification
- as
"degraded": trueon each search response
What’s next
Connect claude.ai
Add the orchestrator as a project connector, so claude.ai can search the graph too.
Bind another project
Point another project’s BuildDown skills at this orchestrator’s graph.