A collection of questions that pop up in issues, Slack, and code‑reviews. If yours isn’t answered here, open an issue or discussion!
A lightweight reverse‑proxy that swaps the caller’s short‑lived credential for the long‑lived credential required by an upstream API—so application code never needs to store 3rd‑party secrets.
No. Incoming plugins validate or inspect the token, derive a caller ID, then discard the credential before the request leaves the proxy.
config.yaml defines integrations (destination URL, outgoing auth plug‑in, rate‑limit window). allowlist.yaml maps caller IDs to the specific paths/methods—or higher‑level capabilities—they may access. denylist.yaml specifies request patterns that should always be rejected (even if the allowlist would otherwise permit them).
Either:
kill -s SIGHUP <pid>—or—start the proxy with -watch so it automatically reloads when the config, allowlist, or denylist files change.
Yes. For rate‑limiting accuracy you should point the pods at a shared Redis instance using the -redis-addr flag. Everything else is stateless.
Set in_rate_limit: 0 and out_rate_limit: 0 (or omit the fields entirely). Rate limits are disabled by default.
env:(environment variable)file:(volume‑mounted file)gcp:(Cloud KMS)aws:(AWS Secrets Manager)azure:(Azure Key Vault)vault:(HashiCorp Vault)
You can add more with ~50 LoC—see Secret Back‑Ends.
The proxy logs the error and exits with a non‑zero status so orchestration (systemd, Kubernetes) can restart or alert.
Update the value in your vault/provider and trigger a hot reload (SIGHUP or -watch). The proxy re‑resolves all secret URIs on reload.
Yes. Both protocols are proxied transparently so long as the upstream service speaks the same protocol. WebSocket upgrades and HTTP/2 gRPC calls work without extra configuration.
Remember limits are per caller ID and per integration. If your load‑test tool randomises caller IDs, each ID uses the limit configured in config.yaml. Consolidate IDs or raise the limit as needed.
- Liveness:
/_at_internal/healthz - Prometheus metrics:
/_at_internal/metrics
The health endpoint is always enabled. Metrics are exposed by default but you can
disable them with -enable-metrics=false and require HTTP Basic credentials via
both -metrics-user and -metrics-pass. If only one flag is set,
the proxy refuses to start. For a deeper dive into the available
metrics and log format see Observability.
Not built‑in. Most users expose Prometheus metrics to Grafana.
Run the proxy with -log-level DEBUG. Secrets are automatically redacted.