Security & self-hosting
Your server. Your keys. Your rules for the agents.
Agents that work for days need room — and fences. Vancetope runs on your own machine or cluster, holds no account with anyone, and puts a gate wherever an agent could do real damage: on your files, your shell, your secrets and your budget.
Self-hosted
Runs where you put it. Talks to whom you tell it.
Two commands on a machine with Docker: one installs and starts the stack — MongoDB, Brain, web UI — the other sets up your tenant, user and model. The wizard generates strong secrets instead of shipping defaults, and pins the image version, so an update happens when you decide.
- No phoning home. No telemetry, no licence server, no account with us. The apps answer “Data not collected” in the stores — because it’s true.
- Your model, your contract. Vancetope ships no model; prompts go only to the endpoint you configured — or never leave the machine with a local one.
- Agent-installable. Both setup wizards run headless from a YAML config, fail-closed, with a dry run.
- Open source. GNU AGPLv3. Read what runs — and change it.
$ curl -fsSL https://www.vancetope.com/install.sh | bash wizard port · local or external access secrets generated · encryption · internal · mongo compose ~/.vancetope/docker-compose.yml image IMAGE_TAG=0.5.0 (pinned) $ curl -fsSL https://www.vancetope.com/setup.sh | bash tenant acme · user ada · provider your choice ✓ open http://localhost:9999
Encryption
Documents the server can’t read.
Some things shouldn’t be readable even by the machine that stores them. Encrypt a document with age and the server keeps only ciphertext — the key stays with you, as a passphrase or an identity file.
- Decrypt locally in Cortex, in the terminal view or the apps — never on the server.
- Agents respect it: tools refuse to treat ciphertext as text, and
doc_encryptchecks the write gate before it locks anything away. - Several recipients per document, standard age format — readable with the plain
ageCLI, too.
# what the server stores -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgy NTUxOSBQcmV2bGF4c0x1Z1dQb2N0R2ZqVEZ0 … -----END AGE ENCRYPTED FILE----- # what you see after unlocking private/keys.md · 2 recipients · 🔓 local only
Sandboxes & guards
A fence wherever an agent can act.
An agent that can run commands is only as safe as the gate in front of them. Vancetope has one on every surface — and a second opinion before the dangerous ones.
Deny, allow, ask
On your laptop — terminal or desktop app — every file and exec call goes through a policy with a default-deny floor. Unknown means ask.
desktopConfined & switchable
Agent tools in the desktop app stay inside a workdir and sit behind a per-account master switch.
server workspaceConfined on the server, too
Server-side file and exec tools are confined to the process workspace; subprocesses get a sealed environment and their own per-scope HOME.
Guards
Scripts at fixed points of a run — including a tool point that can stop an exec_run before it happens.
A second opinion
A decision model asks “is this command dangerous?” in milliseconds — cheap enough to ask every time.
app governanceApps need approval
Apps an agent builds run in a null-origin sandbox and are forbidden by default — each asks for approval through the inbox.
Access & secrets
Narrow by default.
People, agents and foreign tools each get exactly what they need — and secrets stay out of the model’s reach.
One permission gate
Every check goes through one resolver interface; the bundled provider is simple, and it can be swapped. Without a provider, nothing boots.
oauth 2.1OAuth for the doors
Consent, rotating refresh tokens and replay revocation for everything that comes in over MCP.
tokensPinned tokens
Integration tokens are narrowed to a profile and pinned to a project — intersection, never union.
secretsInvisible to agents
Password settings are encrypted at rest and agent-invisible in both directions; hidden settings resolve for scripts but never show up in a prompt.
vaultVault references
Reference a secret instead of copying it — from settings or an external vault like Infisical.
loginSane passwords
A NIST-style policy, BCrypt, and a brute-force lockout — no weak defaults to forget changing.
locksHands off
Lock a document against the AI, against people, or against kit updates — respected by every surface.
auditTraceable
Security-relevant events run through an audit pipeline into the consumers you configure.
tenantsKept apart
Tenants are separate worlds — work and personal on one server, without leaking into each other.
Limits
An agent that runs for days shouldn’t run up the bill.
Resource leases new
A quota funnel from global to tenant, project and user — defined as config documents, checked at the moment of use.
quotasToken quotas & usage
Per-call accounting with prices and cache tokens, and usage reports per scope.
model gatesModel gates
Bulk and persistent agents may only use the models you allowed — fail-closed.