Module Reference

40+ built-in modules, zero dependencies. Use assay context <query> for LLM-ready docs on any module.

assay modules                    # list all modules
assay context "grafana health"   # get detailed docs for LLM

Rust Builtins

Available globally in all .lua scripts — no require needed.

HTTP & Networking

Module Key Functions Description
http http.get/post/put/patch/delete/serve HTTP client and server
ws ws.connect/send/recv/close WebSocket client

Serialization

Module Key Functions Description
json json.parse/encode JSON parse and encode
yaml yaml.parse/encode YAML parse and encode
toml toml.parse/encode TOML parse and encode
base64 base64.encode/decode Base64 encoding

System

Module Key Functions Description
fs fs.read/write Filesystem operations
env env.get Environment variables
sleep sleep(n) Pause execution
time time() Unix timestamp

Cryptography

Module Key Functions Description
crypto crypto.jwt_sign/hash/hmac/random JWT, hashing, HMAC
regex regex.match/find/replace Regular expressions

Database

Module Key Functions Description
db db.connect/query/execute/close SQL — Postgres, MySQL, SQLite

Templates & Async

Module Key Functions Description
template template.render/render_string Jinja2-compatible templates
async async.spawn/spawn_interval Async task execution

Testing & Logging

Module Key Functions Description
assert assert.eq/gt/lt/contains/not_nil/matches Assertions
log log.info/warn/error Structured logging

Stdlib Modules

23 embedded Lua modules loaded via require("assay.<name>"). All follow the client pattern: M.client(url, opts) → client object → c:method().

Monitoring & Observability

Module require() Description Client Pattern
assay.prometheus require("assay.prometheus") PromQL queries, alerts, targets prom.query(url, expr)
assay.alertmanager require("assay.alertmanager") Alert management, silences am.client(url)
assay.loki require("assay.loki") Log push, query, labels loki.client(url)
assay.grafana require("assay.grafana") Health, dashboards, datasources gf.client(url, opts)

Kubernetes & GitOps

Module require() Description Client Pattern
assay.k8s require("assay.k8s") 30+ K8s resource types, CRDs k8s.client(url, opts)
assay.argocd require("assay.argocd") Apps, sync, health, projects argo.client(url, opts)
assay.kargo require("assay.kargo") Stages, freight, promotions kargo.client(url, opts)
assay.flux require("assay.flux") GitRepositories, Kustomizations flux.client(url, opts)
assay.traefik require("assay.traefik") Routers, services, middlewares traefik.client(url)

Security & Identity

Module require() Description Client Pattern
assay.vault require("assay.vault") KV secrets, transit, PKI vault.client(url, opts)
assay.openbao require("assay.openbao") OpenBao (Vault API-compatible) bao.client(url, opts)
assay.certmanager require("assay.certmanager") Certificates, issuers, ACME cm.client(url, opts)
assay.eso require("assay.eso") ExternalSecrets, SecretStores eso.client(url, opts)
assay.dex require("assay.dex") OIDC discovery, JWKS, health dex.client(url)
assay.zitadel require("assay.zitadel") OIDC identity, JWT machine auth zitadel.client(url, opts)

Infrastructure

Module require() Description Client Pattern
assay.crossplane require("assay.crossplane") Providers, XRDs, compositions xp.client(url, opts)
assay.velero require("assay.velero") Backups, restores, schedules velero.client(url, opts)
assay.temporal require("assay.temporal") Workflows, task queues temporal.client(url, opts)
assay.harbor require("assay.harbor") Projects, repos, vulnerability scanning harbor.client(url, opts)

Data & Storage

Module require() Description Client Pattern
assay.postgres require("assay.postgres") PostgreSQL user/db management pg.client(url, opts)
assay.s3 require("assay.s3") S3-compatible storage, Sig V4 s3.client(url, opts)

Utilities

Module require() Description Client Pattern
assay.healthcheck require("assay.healthcheck") HTTP checks, JSON path, latency hc.check(url, opts)
assay.unleash require("assay.unleash") Feature flags, environments unleash.client(url, opts)

Custom Modules

Place .lua files in ./modules/ (project-local) or ~/.assay/modules/ (global). Or set ASSAY_MODULES_PATH to override the global directory. They are auto-discovered and appear in assay modules output.

./modules/
  myapi.lua        # require("assay.myapi")
~/.assay/modules/
  company.lua      # require("assay.company")

For LLM agents: llms.txt · llms-full.txt