Replaces your entire infrastructure scripting toolchain.
One 9 MB binary. 50 modules. Linux, macOS, Docker, Rust crate.
Modules Install
Kubernetes
30+ resources
ArgoCD
Sync, health
Prometheus
PromQL, alerts
Vault
Secrets, PKI
Grafana
Dashboards
GitHub
PRs, issues
OpenClaw
AI agent tools
Gmail
Search, send
Google Cal
Events CRUD
Loki
Logs
Unleash
Feature flags
S3
Object storage
Temporal
Workflows
cert-manager
TLS certs
Ory Stack
Kratos/Hydra/Keto
Zitadel
OIDC identity
+33
More
View all →
9 MB
Static binary
50
Modules
Lua 5.5
+ Rust/Tokio
5 ms
Cold start

Core Capabilities

HTTP Server & SSE

Build web services with async route handlers. Handlers can call http.get, sleep, and any async builtin. SSE streaming built in. Header values can be arrays for multiple Set-Cookie, Link, etc.

http.serve(8080, {
  GET = {
    ["/login"] = function(req)
      return {
        status = 200,
        headers = {
          ["Set-Cookie"] = {
            "session=abc; Path=/",
            "csrf=xyz; Path=/",
          },
        },
        json = { ok = true },
      }
    end
  }
})

Kubernetes & GitOps

30+ K8s resource types, ArgoCD, Kargo, Flux, Traefik. In-cluster and cross-cluster auth.

local k8s = require("assay.k8s")
local pods = k8s.list("default", "pod")
local argo = require("assay.argocd")
local c = argo.client(url, {token=t})
local apps = c:applications()

AI Agent Integration

OpenClaw platform tools, GitHub PRs/issues, Gmail, Google Calendar. Build AI-powered workflows.

local oc = require("assay.openclaw")
local c = oc.client()
c:send("discord", "#ops", "Done!")
local r = c:llm_task("Summarize")
c:state_set("key", {v="1.2"})

Monitoring & Observability

Prometheus, Grafana, Loki, Alertmanager. Query metrics, push logs, manage alerts and dashboards.

local prom = require("assay.prometheus")
local r = prom.query(url, "up")
assert.gt(#r, 0, "No targets")
local loki = require("assay.loki")
loki.push(url, "log line")

Security & Secrets

Vault, cert-manager, ESO, Dex, Zitadel. JWT signing, OIDC, secret management.

local vault = require("assay.vault")
local c = vault.client(url, {token=t})
local s = c:kv_get("my/secret")
local jwt = crypto.jwt_sign(
  {sub="svc"}, key, "HS256")

Infrastructure Testing

Builtin assertions, structured YAML checks with retry and backoff. Verify deployments, health endpoints, and service readiness.

# checks.yaml — retry + backoff
checks:
  - name: api-healthy
    type: http
    url: http://api:8080/health
    retries: 5
    backoff: 3s
    expect:
      status: 200

9 MB static binaryFROM scratch, 5 ms cold start, 14x smaller than postman/newman. See full size & speed comparison →

Two Modes

Auto-detected by file extension:

Lua Scripts (.lua)

#!/usr/bin/assay
local prom = require("assay.prometheus")
local result = prom.query("http://prom:9090", "up")
assert.gt(#result, 0, "No targets up")
log.info("Targets up: " .. #result)

YAML Checks (.yaml)

timeout: 120s
retries: 3
backoff: 5s
checks:
  - name: grafana-healthy
    type: http
    url: http://grafana:80/api/health
    expect:
      status: 200
      json: ".database == \"ok\""

Container Image Size

FROM scratch — no shell, no package manager, just the static binary:

RuntimeCompressedvs Assay
Assay9 MB1x
alpine/python17 MB2x
bitnami/kubectl35 MB4x
Node.js alpine57 MB6x
alpine/k8s60 MB7x

Install

Pre-built Binary

# Linux (x86_64, static)
curl -L -o assay https://github.com/developerinlondon/assay/releases/latest/download/assay-linux-x86_64
chmod +x assay && sudo mv assay /usr/local/bin/

# macOS (Apple Silicon)
curl -L -o assay https://github.com/developerinlondon/assay/releases/latest/download/assay-darwin-aarch64
chmod +x assay && sudo mv assay /usr/local/bin/

Docker

docker pull ghcr.io/developerinlondon/assay:latest

Cargo / Rust Library

# CLI tool
cargo install assay-lua

# As a Rust dependency
# Cargo.toml: assay-lua = "0.6"

mise

# .mise.toml
"github:developerinlondon/assay" = "v0.6.1"