How a call travels
Major Vault runs on Scaleway, in four parts. Only the first is public.
| Part | What it is | What it does |
|---|---|---|
| Front | A small service at vlt.majortom.ai |
Signs people in, answers the first questions from a store, forwards every other call, and receives GitHub’s webhook. |
| Instance | One container per installation | Runs the MCP server for that installation’s repositories. Only the front reaches it. |
| Index | One Postgres database per installation | Holds the notes of every chosen repository, for reading and searching. |
| Jobs | The indexer and the catalogue | The indexer brings the index up to date after a push. The catalogue builds the answers the front serves from its store. |
Two installations never share an instance or a database.
One call, step by step
- The assistant connects to
vlt.majortom.ai/acme. Without a token it is sent through sign-in. - The front learns who is calling. It asks GitHub which of Acme’s chosen repositories the person’s token can read. That one request also checks the token. The answer is kept for 15 minutes.
- The tool list comes from a store. The catalogue job builds the
answers to
initializeandtools/listin advance, one for each set of readable repositories, with the same code the instance runs. The front answers at once and wakes the instance at the same moment, so nobody waits for it to start. - Each tool call goes to the instance, with the person’s token unchanged. The instance checks the token with GitHub itself and keeps it only for that call.
- Reading comes from the index, limited to the repositories the person can read.
- Writing goes through GitHub. A writing tool commits through GitHub’s API with the person’s token: one change, one commit. The instance reads its own write back at once, before the index has caught up.
Keeping up with GitHub
GitHub sends every push in the installation to the front. The front checks the signature and starts a job:
- every push starts the indexer for that repository;
- a push that changes
.vault/, and every change to the installation, also starts the catalogue, because the tool list may have changed.
When nobody calls
Instances and databases sleep when idle and wake on the next call. The stored tool list hides the wake-up: the assistant has its tools at once, and by the time its model makes the first call, the instance is up.