One Binary. 40+ Modules. Zero MCP Servers.
Assay is a ~9 MB static binary that replaces 50–250 MB Python/Node/kubectl containers and dozens of MCP servers in Kubernetes Jobs.
(vs 50–250 MB containers)
What is Assay?
Assay is a universal API execution engine — a lightweight Lua runtime purpose-built for Kubernetes. It runs in two modes, auto-detected by file extension:
Lua Script Mode
Run any Lua script with all builtins available — HTTP, JSON, crypto, database, and 23 embedded stdlib modules:
-- Lua mode: query Prometheus directly
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 Check Mode
Structured verification with retry, backoff, parallel execution, and JSON output:
# YAML mode: orchestrated checks
assay checks.yaml # retry, backoff, parallel, structured JSON output
# 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
Assay ships as a FROM scratch container — no shell, no package manager,
just the static binary. Compare compressed pull sizes:
| Runtime | Compressed | vs Assay |
|---|---|---|
| Assay | 6 MB | 1x |
| Python alpine | 17 MB | 3x |
| bitnami/kubectl | 35 MB | 6x |
| Python slim | 43 MB | 9x |
| Node.js alpine | 57 MB | 12x |
| alpine/k8s | 60 MB | 10x |
Replace Your MCP Servers
Assay replaces 42 popular MCP servers. Instead of running 10 separate npx -y processes
consuming 500 MB of npm dependencies, use one 9 MB binary with 40+ modules built in.
Every MCP server you remove is one fewer process to manage, one fewer node_modules
to update, and one fewer attack surface in your cluster.
Install
Pre-built Binary (fastest)
# Linux (x86_64, static — runs on any distro)
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
cargo install assay-lua
Quick Example
A complete health check script — JWT auth, HTTP request, assertion — in 10 lines:
#!/usr/bin/assay
local token = crypto.jwt_sign({
iss = "assay", sub = "health-check",
exp = time() + 300
}, env.get("JWT_SECRET"), "HS256")
local resp = http.get("https://api.example.com/health", {
headers = { Authorization = "Bearer " .. token }
})
assert.eq(resp.status, 200, "API health check failed")
log.info("API healthy: " .. resp.body)