SDK

Five languages. One wire protocol.

The SDK is a thin convenience around a signed POST to /api/ingest. Pick your language. If we don't have one yet, you can implement Cuitty support in fifty lines following the wire-protocol page.

Send your first event

Same payload, every language
import { createCuittyClient } from "@cuitty/sdk";
import { auditPlugin } from "@cuitty/sdk/plugins/audit";

const cuitty = createCuittyClient({
  portalUrl: "https://app.cuitty.com",
  projectId: process.env.CUITTY_PROJECT_ID!,
  apiKey: process.env.CUITTY_API_KEY!,
});
cuitty.use(auditPlugin());
cuitty.start();

await cuitty.emit("audit", {
  actor: "alice@example.com",
  action: "secret.rotate",
  resource: "stripe.live_key",
});

Live = compiled and tested against the real package. Preview = on the roadmap; the wire-protocol contract is final.

Module plugins

@cuitty/sdk/plugins/audit

Append signed records to the audit chain. Includes before/after diffs.

@cuitty/sdk/plugins/logs

Forward structured logs from any source. JSON-line ingestion.

@cuitty/sdk/plugins/deploys

Track deploys, releases, and rollbacks with health-check correlations.

@cuitty/sdk/plugins/repository

Index repo metadata and feature flags as first-class events.

@cuitty/sdk/plugins/secrets

Findings only — never the secret material. Notarization-ready.

@cuitty/sdk/plugins/configs

Configuration changes with diff payloads and rollback links.

@cuitty/sdk/plugins/costs

Multi-cloud cost metrics streamed in. Daily aggregation.

@cuitty/sdk/plugins/performance

CPU, memory, event-loop, GC. Service-level rollups.

Don't have a language? Use the wire protocol.

Cuitty's wire protocol is plain HTTP, plain JSON, and HMAC-SHA256. There's no proprietary framing, no required gRPC, no SDK gatekeeping. The protocol is the contract.

Read the wire protocol →