Installation
Octopus ships as a single binary, octopus, and as a multi-arch container image. The same binary
serves traffic, validates configuration, generates clients, and — when kubernetes.enabled is set —
runs the in-process operator.
Prerequisites01
Docker (for the container image), or Rust 1.75+ and a C toolchain (to build from source).
Operating system: Linux or macOS. The container image targets
linux/amd64andlinux/arm64.For Kubernetes, a cluster with
kubectlconfigured and Helm 3.8+.
Installation methods02
docker pull ghcr.io/xraph/octopus:latesthelm install octopus oci://ghcr.io/xraph/charts/octopus \
--namespace octopus --create-namespaceVerify the installation03
# Print version information
octopus version
# View help
octopus --helpCreate a configuration file04
The only required section is gateway with a listen address. A minimal static config — one
upstream and one route:
gateway:
listen: "0.0.0.0:8080"
workers: 0 # 0 = one worker per CPU core
upstreams:
- name: example-service
lb_policy: round_robin
instances:
- id: example-1
host: 127.0.0.1
port: 8081
routes:
- path: /api
methods: [GET, POST]
upstream: example-service
strip_prefix: /apiValidate it without starting the server, then run it:
octopus validate -c config.yaml
octopus serve -c config.yamlConfiguration may be YAML, TOML, or JSON, and -c/--config accepts multiple files or a directory
(merged in order). See the Configuration reference for the full schema and
CLI for every command and flag.
Health and metrics endpoints05
Once running, the gateway serves Kubernetes-style health probes on the listen port and Prometheus metrics on the metrics endpoint:
curl http://localhost:8080/livez # liveness — 200 while the process is alive
curl http://localhost:8080/readyz # readiness — 200 when ready to serve traffic
curl http://localhost:8080/startupz # startup — 200 once the listener has bound
curl http://localhost:9090/metrics # Prometheus metricsSee Health probes and Metrics for details.
Upgrading06
Docker
docker pull ghcr.io/xraph/octopus:latest
docker restart octopusFrom source
cd octopus
git pull
make release
sudo install -m 0755 target/release/octopus /usr/local/bin/octopusHelm
helm upgrade octopus oci://ghcr.io/xraph/charts/octopus -n octopusNext steps07
Troubleshooting08
Command not found
If octopus is not found after installing from source, make sure the install directory is on your
PATH (or run the binary by its full path, e.g. ./target/release/octopus):
echo "$PATH"Port already in use
If the gateway fails to bind with "address already in use", find the process holding the port or
change gateway.listen in config.yaml:
lsof -i :8080gateway:
listen: "0.0.0.0:8081" # bind a different portFor runtime debugging via logs and metrics, see Observability. For task-focused walkthroughs, see the Guides. You can also open an issue.