Sign inSign up

maxoperf/outpost-agent

By maxoperf

β€’Updated about 12 hours ago

Run MaxoPerf load tests on your own infrastructure β€” self-hosted runners for Docker & Kubernetes.

Image
0

10K+

maxoperf/outpost-agent repository overview

⁠MaxoPerf Outpost β€” self-hosted load testing runners for Docker and Kubernetes

Run performance tests from inside your own network. MaxoPerf Outpost is a lightweight agent that turns any Docker host or Kubernetes cluster into a private load-testing runner pool β€” BYOC (bring your own cloud). Point it at staging behind your VPN, at an internal API with no public route, or at a service that only accepts traffic from your VPC. MaxoPerf runs the scheduling, results ingestion, and reporting; your traffic and your test data never leave your infrastructure.

The agent dials outbound only. No inbound ports. No firewall exceptions. No VPN peering.

  • πŸ”’ Outbound-only gRPC β€” one long-lived control stream to MaxoPerf; nothing listens on your network
  • 🐳 Docker or ☸️ Kubernetes β€” one image, both runtimes
  • πŸ§ͺ Taurus-powered β€” JMeter, k6, Gatling, Locust, Selenium and more, from one YAML config
  • πŸ“Š Hosted results β€” live metrics, trends, and failure criteria in the MaxoPerf console
  • βš™οΈ Capacity you control β€” cap concurrent runners, CPU, and memory per datacenter

πŸ“š BYOC Outpost guide⁠ Β· πŸš€ Start free⁠ Β· 🌐 maxoperf.com⁠


⁠Quick start (Docker)

Generate an install JWT in the console (Private datacenters β†’ Generate install JWT), then:

docker run -d --name maxoperf-outpost-agent --restart unless-stopped \
  -e MAXOPERF_API_BASE_URL=https://api.maxoperf.com \
  -e MAXOPERF_CONTROL_GRPC_URL=grpc.maxoperf.com:443 \
  -e MAXOPERF_PDC_ID=<your private datacenter id> \
  -e MAXOPERF_OUTPOST_INSTALL_JWT=<install JWT from the console> \
  -v /var/run/docker.sock:/var/run/docker.sock \
  docker.io/maxoperf/outpost-agent:latest agent

The agent enrolls, reports ready, and starts accepting runs. Watch it come online in the console.

The Docker socket mount lets the agent start and stop runner containers on your host. On Kubernetes it uses a scoped Role/RoleBinding instead β€” no socket, no privileged pod.

⁠Quick start (Kubernetes)

The console generates a complete, one-shot manifest β€” Namespace, ServiceAccount, Role, RoleBinding, Secret, Deployment β€” with the install JWT already embedded:

kubectl apply -f maxoperf-outpost-install.yaml

Helm remains the advanced path when you need overlays, image pre-pull, or GitOps.

:latest is a moving tag. For reproducible installs, pin the digest:

docker pull docker.io/maxoperf/outpost-agent@sha256:<digest>

Copy the digest from the Tags tab above, or read it back yourself:

docker buildx imagetools inspect docker.io/maxoperf/outpost-agent:latest

⁠Supported tags

TagMeaning
latestNewest published build. Moving tag β€” pin a digest in production.
<build>-<sha>Immutable build, e.g. 256-87dcb28. Maps 1:1 to a commit.

Platform: linux/amd64.

⁠Configuration

Environment variableRequiredDescription
MAXOPERF_API_BASE_URLβœ…MaxoPerf Platform API origin, e.g. https://api.maxoperf.com
MAXOPERF_CONTROL_GRPC_URLβœ…Control-stream endpoint, e.g. grpc.maxoperf.com:443
MAXOPERF_PDC_IDβœ…Private datacenter id from the console
MAXOPERF_OUTPOST_INSTALL_JWTβœ…Long-lived install credential minted in the console
MAXOPERF_OUTPOST_MAX_CONCURRENTβ€”Cap on simultaneous runner containers
MAXOPERF_OUTPOST_DEFAULT_CPU_LIMIT_MILLISβ€”Per-runner CPU limit (millicores)
MAXOPERF_OUTPOST_DEFAULT_MEMORY_LIMIT_MIBβ€”Per-runner memory limit (MiB)
MAXOPERF_LOG_LEVELβ€”info (default) or debug for heartbeat/poll/retry detail
MAXOPERF_LOG_FORMATβ€”human (default) or json for log collectors

Raise verbosity or switch to JSON logs without rebuilding the image β€” both are plain env vars.

⁠Security

  • Outbound only. The agent opens one gRPC control stream to MaxoPerf. Nothing binds an inbound port, so no ingress rule, port-forward, or VPN peering is required.
  • Your traffic stays yours. Load is generated inside your network, against your targets. MaxoPerf receives metrics and run state, not your payloads.
  • Treat the install JWT like a password. Store it in a Kubernetes Secret or a Docker secret β€” never in a ticket, a chat message, or a committed file. Rotate it from the console.
  • Logs are redacted. Credentials and registry auth never appear in agent output.

⁠Pull rate limits

Anonymous Docker Hub pulls are rate-limited per IP. If you pull the agent from CI or across a large fleet behind a single NAT address, run docker login first, or pre-pull the image into an internal registry or cluster cache.


MaxoPerf is a performance-testing platform: load testing, browser testing, synthetic monitoring, and real-user monitoring, with runners you can host yourself.

Tag summary

Content type

Image

Digest

sha256:128e15682…

Size

210.7 MB

Last updated

about 12 hours ago

docker pull maxoperf/outpost-agent