Docs — Exorails Connect

Private networks, no inbound port.

A connector normally needs a public address it can dial. Exorails Connect lets it reach a host that is only visible from inside your network: a small agent on one of your machines keeps an outbound tunnel open, and only the routes you declare go through it.

How it works

Install (Linux, 2 minutes)

Open the environment's Private network tab and click Add a machine. You get a one-time enrollment token (valid 15 minutes) and the install command:

curl -fsSL https://api.exorails.net/connect/install.sh | sh -s -- --token exe_…

The script downloads the binary for your architecture (amd64 or arm64), verifies its checksum, installs it as a systemd service running as an unprivileged user, and enrolls the machine. The machine appears in the tab as soon as it connects. Without curl | sh, download exorails-connect-linux-amd64 or -arm64 from https://api.exorails.net/connect/dist/ and run:

exorails-connect up --token exe_… --name bastion-eu
exorails-connect status

Enrollment gives the machine its own credential, stored in /etc/exorails/connect.json (mode 0600). The enrollment token is consumed; it cannot be reused. The agent reconnects by itself after a network blip or a reboot.

Declare routes

From Machines (organization level) add the hosts the machine may reach. Private addresses are fine here, that is the point; loopback and cloud metadata addresses are refused. One machine can hold many routes and serve many environments.

db        10.0.1.12:5432     PostgreSQL in the VPC
analytics warehouse.internal:8443   ClickHouse
cache     10.0.1.40:6379     Redis

Use a route from a connector

In the environment's Tools tab pick a connector (PostgreSQL, MySQL, SQL Server, ClickHouse, Redis, MongoDB, Elasticsearch, SSH, Kubernetes, Prometheus, S3-compatible, REST or GraphQL API), choose the machine and route under Reach via, and paste the credential exactly as you would for a public host, using the private address:

postgres://readonly:…@10.0.1.12:5432/app?sslmode=require

The host in the credential must match the route; a mismatch is refused before any byte is sent. Everything else is unchanged: read-only by default, bounded output, one call logged per tool call.

Security model

Limits and roadmap

Back to connectors →