Overview
Install the headless Formal Endpoint package on Debian or Ubuntu. The package adds theformal CLI and a systemd user service that runs
formal agent --headless. Enable Transparent Mode to intercept host
traffic, including traffic from coding agents.
For Kubernetes, use the Kubernetes egress sidecar
instead of this package.
Prerequisites
- A Debian or Ubuntu host with
sudoand systemd - A Formal API key from API Keys
- Outbound HTTPS to
static-assets.formalcloud.netandapi.joinformal.com
amd64 and arm64.
Install
1
Download and install the package
The latest package URL includes the host architecture:Pin a versioned package URL when your rollout requires a fixed version.Verify:
2
Grant access to the local CA directory
The Endpoint writes its local CA to
/var/lib/formal/ca. Your user must
be able to write that directory:3
Configure the API key and Transparent Mode
Create Replace
~/.formal and store the API key in formal.env. The user
service loads that file on start.<YOUR_API_KEY> with a key from
API Keys. See
Configuration for other
config.toml keys. To skip long-lived keys, use
OIDC.4
Enable lingering and start the service
Lingering lets systemd start the user service without an interactive
login. This is required on servers and VMs.Verify:
Verify
formal auth whoami should show the user that owns the API key. The
Transparent Mode status should be enabled.
Write network rules to select which flows
Transparent Mode intercepts. On Linux, match a hostname or
is_llm_hostname. Linux has no process signing identity.
Troubleshooting
The user service is not running
The user service is not running
Confirm lingering is enabled with
loginctl show-user "$(id -un)". Set
XDG_RUNTIME_DIR="/run/user/$(id -u)" and read failures with
journalctl --user -u formal.service. Then run
systemctl --user enable --now formal.service.CLI cannot connect to the Formal app
CLI cannot connect to the Formal app
Error:
WARNING: CLI cannot connect to the Formal app.The CLI talks to the user service over a local socket. Confirm
formal.service is active, then retry formal auth whoami.The local CA directory is not writable
The local CA directory is not writable
The Endpoint must write Then restart the service.
/var/lib/formal/ca. Re-run:Transparent Mode does not intercept traffic
Transparent Mode does not intercept traffic
Confirm
~/.formal/config.toml sets transparent_proxy.enable = true.
Confirm formal transparent-proxy status is enabled. Confirm a
network rule matches the destination.
Without a matching rule, the Endpoint forwards the connection without
inspecting it.Next Steps
Formal Endpoint
Review authentication and connection options
Configuration
Set config.toml keys for the Endpoint
Network Rules
Select which traffic Transparent Mode intercepts
Cloud Agents
Run the Endpoint inside Cursor and Devin agents