Five minutes · source-available SDK · no NDA

From signup to a signed receipt chain. Five steps.

Install the SDK, author a RuntimeAISpec, invoke runConstrainedAI, verify the resulting L12 chain. Same code path as the three live reference deployments — just yours.

step 1

Install the SDK

Source-available under BSL-1.1; bundled verify.mjs separately Apache-2.0 so regulators can audit it. Zero runtime dependencies — Node 18+ stdlib only. ~85 KB on disk after install.

# Stable URL — always the latest release:
npm install https://promethean.software/runtime-ai/latest.tgz

# Or pin a specific version:
npm install https://promethean.software/runtime-ai/promethean-runtime-ai-0.1.0.tgz
step 2

Author a RuntimeAISpec

The spec is the contract. Closed-enum category + pinned model identity + closed-enum output schema + reviewer-gate policy + deterministic fallback. The SDK enforces it at request-time and signs every decision.

// fraud-spec.ts
import type { RuntimeAISpec } from "@promethean/runtime-ai";

export const FRAUD_SPEC: RuntimeAISpec = {
  specId: "fraud-classifier-v1",
  displayName: "Fraud classifier",
  description: "Classify a transaction as high-risk or low-risk.",
  category: "classifier",                  // closed enum
  schemaVersion: "promethean-runtime-ai-spec-1.0",
  canonicalForm: "v1",
  inputSchema: {
    fields: [
      { name: "amount",   type: "number", required: true },
      { name: "merchant", type: "string", required: true },
      { name: "country",  type: "string", required: true },
    ],
  },
  outputSchema: {
    fields: [
      {
        name: "verdict", type: "enum", required: true,
        enumValues: ["approve", "review", "decline"],
      },
      { name: "confidence", type: "number", required: true, min: 0, max: 1 },
      { name: "rationale",  type: "string", required: true, maxLength: 280 },
    ],
  },
  promptTemplate: {
    system: "Classify this transaction.",
    user: "amount={{amount}} merchant={{merchant}} country={{country}}",
  },
  modelIdentity: {
    provider: "anthropic",                 // closed enum
    model: "claude-sonnet-4-5",
    version: "2026-05-01",
  },
  reviewerGate: "on-low-confidence",       // closed enum
  lowConfidenceThreshold: 0.75,
  maxLatencyMs: 5000,
  fallbackBehavior: "deterministic-default",
  deterministicDefault: { verdict: "decline", confidence: 0, rationale: "fallback" },
};
step 3

Invoke runConstrainedAI

One call. Input validated → LLM call (your client) → output validated against the closed-enum schema → reviewer gate evaluated → fallback if needed → L12 entry written, signed Ed25519, chained to the prior head.

import {
  runConstrainedAI,
  createSchemaShapedMockClient, // swap for a real Anthropic/OpenAI adapter
} from "@promethean/runtime-ai";
import { FRAUD_SPEC } from "./fraud-spec";

const result = await runConstrainedAI(
  FRAUD_SPEC,
  { amount: 1250, merchant: "acme-co", country: "NL" },
  {
    client: createSchemaShapedMockClient(FRAUD_SPEC),
    productId: "your-workspace-id",          // ← from /signup
    receiptLogPath: "./l12.jsonl",
    privateKeyBase64: process.env.PROMETHEAN_SIGNING_KEY!, // ← from /signup
  },
);

console.log(result);
// { verdict: "approve", confidence: 0.92, rationale: "...", entryHash: "13e..." }
step 4

Verify the chain

The verifier ships with the package as verify.mjs — plain Node 18+ stdlib, no npm install required to run it. A regulator clones your chain + runs one command on an air-gapped machine.

# From the bin alias (installed with the package):
npx promethean-verify ./l12.jsonl

# Or call verify.mjs directly (e.g. for a regulator who never installs the SDK):
node ./node_modules/@promethean/runtime-ai/verify.mjs ./l12.jsonl

# Sample output:
# Verifying ./l12.jsonl …
#   entries:               47
#   hash chain:            OK
#   signatures:            47/47 verified
#   trust anchor:          y6F3rt10CEcSakCrnJIYkGymA66x3VXm0zCWbPjRxP8=
#   head hash:             13e4274c831dc3a2525e31fb495c34adca7bfd93cde3...
#   products:              your-workspace-id
#   specs:                 fraud-classifier-v1
#   schema violations:     1
#   fallback triggers:     1
#   reviewer verdicts:     approved:5 rejected:0 amended:1
#   ids contiguous:        yes
#   timestamps:            monotonic
#
# PASS (exit 0)
step 5

Hand it to a regulator

Bundle the chain + the verifier into a directory. The regulator runs one command on an air-gapped machine, no Promethean install required, no Promethean infrastructure contacted. Hashes recompute, signatures verify, exit 0.

# Build an audit bundle (manual today; one-click in the dashboard
# once you upgrade — handoff packets at /workspace/[id]/handoff/[fw])
mkdir -p audit-bundle-2026-Q2
cp ./l12.jsonl audit-bundle-2026-Q2/chain.jsonl
cp ./node_modules/@promethean/runtime-ai/verify.mjs audit-bundle-2026-Q2/

# Or download the verifier directly from the canonical source:
curl -sLo audit-bundle-2026-Q2/verify.mjs https://promethean.software/verify.mjs

# Hand the directory to a regulator. They run:
cd audit-bundle-2026-Q2
node verify.mjs chain.jsonl   # one command, Node stdlib only

Ready?

Get an API key in 30 seconds.

Free Dev tier: 10,000 signed L12 entries / month · 1 spec · no credit card. Upgrade in-app when you need higher limits, multi-tenant, federation, or Annex III handoff templates.