Melso Agents is available only internally or by private invitation. Agents-specific features require existing access. For the autónomo fiscal service, see Get started.
admin company API key; nothing is configured per Task. Every member can see which network is connected, whether it is on, and when it was last verified.
Only overlay networks that enroll a machine unattended can join a disposable sandbox. Melso supports two: Tailscale and Headscale, the self-hosted Tailscale control server.
Tailscale
For each Run, Melso uses an OAuth client to mint a single-use, ephemeral, pre-authorized device key for your tags. The key expires after five minutes, and the client secret never leaves the Melso API.-
Create a tag for Runs. In your tailnet policy file, add a tag such as
tag:melsoand grant it exactly what agents may reach. Access control stays in the policy: a Run can reach what the tag can reach, nothing more.Applytag:agent-https-serviceonly to the specific HTTPS services agents may reach. Replace it with your own restricted destination tag. Add database ports or subnet routes only when the work requires them; a subnet router must advertise any route you allow. -
Create an OAuth client. In the Tailscale admin console, generate an OAuth client with the Auth Keys scope set to Write and the tag from step 1. Copy the client ID and the client secret (
tskey-client-…); the secret is shown once. -
Connect it. In Settings → Network, choose Connect, then Tailscale. Paste the client ID and secret, and enter the tags, separated by commas. Saving checks the client: Melso exchanges it for an access token with the
auth_keysscope and your tags. If Tailscale refuses, nothing is saved and Settings shows why.
Headscale
For Headscale, each Run receives the same reusable pre-auth key you configure. Use a dedicated user or tags whose network policy allows only the services and ports agents need.-
Create a user for Runs, or use tags from your Headscale policy:
-
Create a reusable, ephemeral pre-auth key with an expiry. This example uses 24 hours; choose a shorter window if practical. Add
--tags tag:melsoif your policy uses tags. -
Connect it. In Settings → Network, choose Connect, then Headscale. Enter the login server as an HTTPS origin with no path, such as
https://headscale.example.com, and paste the key.
What a Run gets
- The Run’s worker joins the network before any harness, checkout step or skill runs, and leaves it when the Run completes, fails or is cancelled.
- Each Run is its own ephemeral device named
melso-followed by the first eight characters of the Run ID. On Tailscale it carries the configured tags; the control plane removes the device after the Run. - Subnet routes are accepted and MagicDNS names resolve by default. Turn off Accept subnet routes or Use network DNS in Settings to change that.
- Kernel mode is used when the sandbox allows it (a TUN device and passwordless
sudo): every program reaches the network transparently. Otherwise the worker falls back to userspace networking and points the harness at a local HTTP and SOCKS5 proxy on127.0.0.1:1055throughALL_PROXY,HTTP_PROXYandHTTPS_PROXY. Only programs that honor those variables reach the network then. The Run’s brief says which mode applies. - A Run that cannot join fails before its harness starts, with
failure_reasonprivate_network_unavailableand “This task could not join the company network.” It never runs half-connected. Check the credential, its tags and the tailnet policy, and the Last error in Settings.
Limits
- One network per company.
- Corporate VPNs that require interactive sign-in, MFA or device posture checks (Cisco AnyConnect, GlobalProtect, Zscaler, Fortinet) cannot enroll a sandbox. Run those tasks on a worker inside the company network instead.
- In userspace mode, programs that ignore proxy variables cannot reach the network.
Settings API
These routes accept people and admin keys: a signed-in browser session, a personal access token (mel_…) sent with X-Workspace-ID, or a company API key created with admin scope (see Credential types), which acts as a company admin here. tasks API keys, Run tokens and MCP credentials are rejected. Any member can read the settings; only owners, admins and admin keys can change them. No response ever contains a client secret or pre-auth key, and provider response bodies are never returned or logged.
The examples use the variables from Authentication with MELSO_TOKEN set to a personal access token.