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.

View MCP Comparison → Install Now ↓
9 MB
Binary size
(vs 50–250 MB containers)
40+
Built-in modules
15 ms
Context query latency
5 ms
Cold start time

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.

View full MCP comparison →

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)