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.
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
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" },
};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..." }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)
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.