Skip to content

Run locally

The local simulator runs a credential-free control plane on your machine with a seeded corpus and a simulated agent fleet. It is useful for developing an integration without burning quota, and for tests that need a real socket rather than a mock.

Terminal window
make local-up

That brings up the offline devserver and the agent fleet loop under supervisord. It needs no credentials, no GCP project and no network.

The simulator prints its endpoint on startup. Export it the same way you would a hosted one, so the code you write against it is the code you ship:

Terminal window
export VECTADYNE_MCP_URL="" # printed by make local-up
export VECTADYNE_TOKEN="" # a seeded token, also printed

Nothing about your integration changes. That is the point — if a sample only works locally, it is not a sample of your integration.

TransportUse
vecin-process — calls the service directly, makes no HTTP callsoperator and CI tasks, the direct release gate
fleetMCP over HTTP — a real client over a real socketexercising the API exactly as your code will

They differ on purpose. vec proves the service logic; fleet proves the wire. A bug that only appears over HTTP — a header, a serialization, a timeout — is invisible to vec and caught by fleet.

Terminal window
make vec ARGS="memory query --query 'reconcile failures'"
make fleet ARGS="run --assert"

fleet run --assert exits 0 pass, 2 config, 7 transport, 8 drift. The exit codes are distinct so CI can tell “your integration is wrong” from “the server was unreachable”.

Terminal window
make e2e-all

Runs the direct gate (vec e2e) and the API gate (fleet run --assert) — in-process and over a real socket.

Local simHosted
Credentialsseeded, printedreal principals
Corpusfixture datayours
Machine principalsnot exercisedfull lifecycle
Rate limitsnot enforcedenforced

So the sim is right for integration shape and wrong for anything about credentials, quota or scale. Test machine principal flows against a real tenant.

The seeded endpoint and tokens are local-only. Never put them in code that reaches an environment where the real thing is expected — they are printed at startup precisely so they do not have to be written down anywhere.