Data & privacy
Exactly what leaves your machines, and what never does — grounded in the code, not the marketing. Every runner logs its outbound calls, and those logs stay on that machine's disk, so you can check it yourself.
Your runners
Reading your runners…
Leaves your machine
- Entries you writeThe decisions, specs, and notes you author. This is the point — they're shared because you wrote them to be.
- Session activityWhen a session starts and stops, the model it's running, and its working directory — so it shows up live on the dashboard.
- Activity pulsesTool names only, never their inputs or outputs. Sent so the helper cards pulse; nothing is stored.
- PresenceA heartbeat with your hostname and runner version, so a machine reads as alive.
- Files a helper editsWhen you start a helper on a task, the files it edits are sent, so its work survives a crash before it's committed. Only files the helper touches are sent, never the files in your own sessions. Toggle it off below.
- Crash logsIf a helper's task crashes, its last output lines go to telemetry. They are secret-scrubbed on the server and never go into your entries.
- AuthPairing and session tokens, plus the approval requests for supervised helpers.
Never leaves your machine
- Your codebaseNever uploaded. The one exception is files a helper you started edits (see left), and only when you start one.
- Files you edit yourselfThe contents of files in your own sessions never leave. Capture is scoped to helpers, not you.
- Tool inputs and outputsThe activity feed carries the tool name and nothing else.
- Local model inferenceRun a local model and its prompts and completions stay on your hardware.
- Runner logsThey stay on that machine's disk. Read them where they are — nothing is uploaded to show them.
File capture
When a helper you start edits a file, the new contents are sent so the work survives a crash before it's committed. Turn it off and nothing from a helper's edits leaves that machine. You trade the crash-recovery net for maximum privacy.
It's set per machine, on the machine: put "capture_disabled": true in that runner's config.json, or export VINCULUM_CAPTURE_DISABLED=1 before starting it. The capture hook re-reads config on every write, so it takes effect immediately — no runner restart.