Quickstart
Get traffic flowing through Apoxy in under five minutes.
This guide gets traffic routing through Apoxy in five minutes. Every project comes with a
default Gateway and Proxy - you claim a hostname with a DomainRecord, then create a
Backend and an HTTPRoute.
A terminal with curl, an Apoxy Cloud account (free tier), and
an upstream you can route to - anything with a public hostname works.
Install the CLI
Pick a platform. The CLI is a single static Go binary; no runtime, no daemon.
# macOS and Linux - recommended for most workstations.
brew install apoxy-dev/tap/apoxy# Any macOS or Linux machine. Requires curl and jq.
curl -fsSL https://raw.githubusercontent.com/apoxy-dev/apoxy/main/install.sh | bashUpgrading
To pick up the latest release:
brew update && brew upgrade apoxyThe brew update step refreshes the Apoxy tap so that brew upgrade sees the latest release.
If you installed via the shell script, re-run it to pick up the latest release.
Log in
Authenticate to Apoxy Cloud:
apoxy authThis opens your browser to create a session token. You'll be prompted to create or join an organization.
Claim a hostname
The shared default Gateway accepts routes only for hostnames that your project has claimed.
Every Apoxy Cloud project gets its own zone under apoxy.app, so you can claim a hostname with no
DNS setup. Find the name of your zone:
apoxy domain zone listCreate a file called domain.yaml:
apiVersion: core.apoxy.dev/v1alpha3
kind: DomainRecord
spec:
zone: your-zone.apoxy.app
name: api.your-zone.apoxy.app
target:
ref:
group: gateway.apoxy.dev
kind: Gateway
name: defaultReplace your-zone.apoxy.app with your zone in both fields. Apply the DomainRecord before the
route:
apoxy apply -f domain.yamlTo use a domain that you own, see Custom domains.
Route traffic to a backend
Every project starts with a default Gateway listening on ports 80 and 443. Create a file
called route.yaml with a Backend and an HTTPRoute:
apiVersion: core.apoxy.dev/v1alpha2
kind: Backend
metadata:
name: backend-service
spec:
endpoints:
- fqdn: api.internal.example.com
---
apiVersion: gateway.apoxy.dev/v1
kind: HTTPRoute
metadata:
name: api-route
spec:
parentRefs:
- name: default
hostnames:
- api.your-zone.apoxy.app
rules:
- backendRefs:
- kind: Backend
name: backend-service
port: 8080Replace api.your-zone.apoxy.app with the hostname you claimed and api.internal.example.com
with the FQDN of your actual backend service.
Apply the configuration
apoxy apply -f route.yamlApoxy routes traffic through the default Gateway to your backend.
Verify it works
Check the status of the objects you just created:
apoxy domain list
apoxy gateway routes listSend a test request to the hostname you claimed. Apoxy runs DNS for your zone, so the name resolves to the gateway:
curl http://api.your-zone.apoxy.app/You should see the response from your backend. For self-hosted, port-forward to your Proxy and test locally.
Next steps
Now that you have the basics working:
- Advanced HTTPRoute rules - header matching, traffic splits, retries, and timeouts.
- Tunnels & QUIC - access services behind NAT via
connect-iptunnels. - TLS & DNS - custom domains, BYO certs, managed Let's Encrypt issuance.
See Core concepts to understand the architecture, or dive into the CLI reference for every flag and command.