Security & architecture

Nothing leaves your network.

Octotor is self-hosted: one VM, yours, holding your data and your credentials. For a product that touches every machine you manage, "trust us" is not an answer — so this page answers the real questions concretely: where secrets live, what traffic leaves the VM and when, and how to verify that what you install is what we built.

Where your credentials live

The Credentials Vault stores every secret encrypted with AES-256-GCM inside the instance's own PostgreSQL database. The key is unique to your instance, and every encryption uses a fresh random nonce. The key is generated at install, lives only in the VM's environment file, and is never written to logs, jobs, or the database. Nothing outside your VM can decrypt the vault — including us. Inside it, the key is readable by root, as it is on any self-hosted system: treat access to the VM as access to the vault, and protect it accordingly. If the key is lost, the vault stays sealed. That is the design, not a limitation.

What leaves the VM

DestinationWhenWhat
Your targets — SSH, WinRM, SNMP, ping on your networkAlways — this is the productThe jobs and checks you run
get.octotor.comOnce a day — switchable off in SettingsAn anonymous version check: a plain GET of a public version file. No query parameters, no identifiers, no instance data
Microsoft GraphOnly if you connect a Microsoft 365 tenantCertificate-based, application-only reads of your own tenant
Mail relay · Telegram · webhooksOnly if you configure themThe alert and report text you configured
Cloud AI providerOnly if you enable it, with your own API key — default is the local model, or offThe prompts you send to the assistant

That is the complete list. There is no telemetry, no analytics, no usage reporting, and no license phone-home.

Licensing works offline

The license is a signed file (Ed25519), verified locally on your VM against a public key baked into the images. It is bound to your install — there is no activation server, no periodic check-in, and no network dependency. Air-gapped installs work: the license travels as a file, in both directions.

Hardened by default

Ports and protocols

DirectionPortPurpose
Inbound8443/tcp (configurable)The operator console, TLS. The only inbound port.
Outbound22/tcpSSH to Linux, network appliances, Check Point
OutboundWinRM (per-asset configurable)WinRM to Windows targets — Negotiate authentication encrypts at the message layer
Outbound161/udpSNMP v2c / v3 polling
OutboundICMPPing monitoring
Outbound443/tcpDaily version check · Microsoft Graph, if connected
OutboundMail relay portNotifications, only if configured

Reaching the console

The console is the only inbound surface, so it is protected accordingly: local accounts with role-based access, optional multi-factor authentication (TOTP) that can be enforced instance-wide, per-action passwords on sensitive operations, rate-limited logins, and API tokens that are scoped and revocable. Details on request.

Privilege model

Octotor uses the accounts you give it, stored per-customer in the vault. Monitoring needs no credentials at all (ping, TCP, SNMP read community). Inventory and remediation use what the job genuinely requires — a WinRM account for Windows collection, an SSH user for Linux. In the console itself, role-based access separates admins, operators and viewers, and every user can be scoped to specific customers.

Backup and recovery

A nightly job dumps the database; restoring an instance takes the dump plus the environment file, which holds the vault key. Keep the environment file in your own secret store, separately from the dumps — a database backup alone cannot open the vault, and that is deliberate. Lose the VM and you rebuild from the dump + key on a clean install. The license is bound to your install: rebuild on new hardware and we reissue it at no charge — normally within one business day (licensing@octotor.com).

Read the source

Octotor ships with readable source code, and the license grants an explicit right to inspect it on your instance — security review, compliance verification, understanding exactly how it works. For a product that holds credentials across your whole client base, you shouldn't have to take this page's word for anything: you can read it.

Verify what you install

Two signatures cover the supply chain. The publisher key is served from a separate origin to the release bundles, so no single compromised host can serve you both a forged artifact and a matching key. Fingerprints are published here; check them before you trust a key.

Fingerprints are the SHA-256 of the public key in DER form. To reproduce the publisher-key fingerprint from any machine:

$ curl -fsSLO https://www.octotor.com/octotor-release.pem $ openssl pkey -pubin -in octotor-release.pem -outform DER | openssl dgst -sha256

Install bundle — every release ships with a detached signature. The publisher key (octotor-release.pem, fetched above):

bundle key · 51c828a84936b5d49674255847708aae96d5e14193b4b84c7fc83439cda02605

Container images — every image is Cosign-signed; the installer verifies each one before anything runs, and refuses the install on any mismatch. The signing key ships inside the install bundle as octopus-pub.key (kept at /opt/octopus/octopus-pub.key on an installed system) — the same openssl command reproduces its fingerprint:

image key · 0f8d5bd4cc004f3bbe3dd218d42f720f19409565fc537866c605e2260181dc69

The verified install steps are on the deploy page; system prerequisites are on the requirements page.

Reporting a vulnerability

Security disclosures go to security@octotor.com — every report gets a response.

Further detail on architecture, security design and deployment is available on request — security@octotor.com.