SwitchTenderSwitchTender Docs

Benchmarks

Measured numbers for the questions people actually ask: how fast does it start, how much memory does it hold at idle, and how big is the binary. Every number below was measured on a release-flag build, the method is shown so you can reproduce it on your own hardware, and nothing here is a projection.

Measured on 2026-07-27 against v1.24.2 on an Apple Silicon laptop, natively and inside a Debian container on the same machine. Your hardware will differ; the method will not.

The numbers

Measurement Apple Silicon, native Debian container, same machine
Cold boot to serving, no encryption key ~37 ms ~110 ms
Cold boot to serving, credential encryption on ~75 ms ~140 ms
Resident memory at idle 32 to 38 MB 32 to 38 MB
Stripped release binary 29 MB 29 MB

Boot times are the median of five trials, first request to a live /healthz. The spread between the two boot rows is the credential key derivation: argon2id at 64 MiB memory cost, a deliberate security parameter, paid once at startup. The derivation arena is handed back to the operating system as soon as the key exists, so it does not stay in resident memory.

Reproduce it

Build with the release flags:

CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o switchtender .
ls -l switchtender

Time a cold boot to first served request:

START=$(date +%s%N)
./switchtender serve --db bench.db --addr 127.0.0.1:8080 &
until curl -sf http://127.0.0.1:8080/healthz >/dev/null 2>&1; do :; done
echo "$(( ($(date +%s%N) - START) / 1000000 ))ms"

Measure idle memory after a few seconds:

sleep 5
ps -o rss= -p $(pgrep -f "switchtender serve") | awk '{printf "%.0f MB\n", $1/1024}'

Run each a handful of times and take the median. Set SWITCHTENDER_ENCRYPTION_KEY and SWITCHTENDER_ENCRYPTION_SALT to measure the with-encryption boot path.

One platform note: on macOS, ps keeps reclaimable pages in its resident count, so the with-encryption idle number can read near 100 MB there even though the memory has been released and the OS takes it back under any pressure. On Linux, where servers actually run, the resident count drops immediately and idles in the same 32 to 38 MB band as the no-encryption path.

What this buys you in practice

About comparisons

We publish only numbers we measured ourselves, so there are no AWX or Semaphore columns above. What can be said factually: AWX requires a Kubernetes cluster, its operator, PostgreSQL, Redis, and Receptor before it runs a playbook, so a boot-time comparison is not even shaped the same, and that is the point. The comparison page covers the feature-by-feature picture, including where SwitchTender is still young. If you run these benchmarks and get materially different numbers, open an issue with your hardware and method and we will look.