Network
The ports 3AM listens on and the connections it makes.
Inbound
| Port | Who connects | Purpose |
|---|---|---|
8700/tcp (configurable) | People's browsers, your automation, your load balancer's health check | Console and API |
8700/tcp | Optional: your monitoring or SIEM | Alerts pushed by webhook (POST /v1/alerts/<source>) (Alert webhooks) |
8700/tcp | Optional: your other installs of 3AM | Keychain sync, pairing, site keys and handovers (/v1/keychain/peer/*, authenticated by pinned keys, throttled) |
Otherwise no tool needs to reach 3AM: alerts and approvals are fetched by 3AM. The installer binds the console to
127.0.0.1 unless you choose otherwise; put it behind your reverse proxy for TLS.
A local model (GPU hosts) and 3am-causal run on an internal network with no published port; only 3AM can reach them.
Outbound
3AM connects only to the tools you configure, on the addresses in their settings:
| Tool | Typical destination |
|---|---|
| PagerDuty | api.pagerduty.com:443 (api.eu.pagerduty.com for EU accounts) |
| Slack | slack.com:443 |
| Twilio | api.twilio.com:443, studio.twilio.com:443 |
| Kubernetes | The API server, usually :6443 or :443 |
| Prometheus / Alertmanager | Usually :9090 and :9093 |
| Databases | MySQL :3306, PostgreSQL :5432, SQL Server :1433, Oracle :1521 |
| Git hosts, Jira, ServiceNow, Splunk, Datadog | Their HTTPS address |
| Model endpoints (every host without a GPU) | openrouter.ai:443, or your vLLM, Ollama or gateway for the investigator and System 1 (Models) |
| Your Keychain's home (members) | The home's console address, :443 or :8700 |
| Warden (licence confirmation, adding installs, trial codes) | warden.3am.si:443 (Licensing) |
While installing
| Who | Destination | Why |
|---|---|---|
| The installer | get.3am.si:443, and the download link it's given | The release, checked against its signature |
| The installer, when tools are missing | Your distribution's package mirrors; dl.k8s.io, get.helm.sh, get.k3s.io for Kubernetes | Podman, kubectl, Helm, k3s, each only with your say-so |
| Your cluster | us-central1-docker.pkg.dev:443 | 3AM's public images, for Kubernetes installs from the Helm repository |
3am-core preflight tests a TCP connection to every configured tool, so run it after opening the firewall.
The only calls to 3AM are to Warden, about the licence: confirming it (the licence, this install's fingerprint, 3AM's
version and signed usage counts), adding or removing installs (fingerprints and public keys), and redeeming a trial
code. Nothing about your estate is sent. In offline mode (THREEAM_LICENCE_CHECK=offline) 3AM never contacts
Warden, and the licence is verified offline alone.
Proxies
3AM honours the standard HTTPS_PROXY, HTTP_PROXY and NO_PROXY variables on its container. If you set a proxy,
list your internal tools and any local model in NO_PROXY (for example NO_PROXY=model,.bank.internal,10.20.30.40; host names, domain suffixes and single addresses, not CIDR ranges) so only
SaaS traffic goes through it.
Environment variables
Every THREEAM_* variable the 3AM container reads, with its default and meaning, grouped by area (core, intake and concurrency, models, investigation, causal, mail, licence, Keychain, syslog, FIPS).
Glossary
Every 3AM term in one place, A to Z, with where to read more. Admin token, autonomy, Keychain, member, pack, proven, restore move, site key, System 1, Warden and the rest.