Deterministic AI execution platform with tenant isolation, replay, and audit.
This guide will show you Requiem's core value: guaranteed deterministic execution and replay.
The easiest way to get started is with the interactive quickstart command. It will check your environment, start the database, and run a demo.
pnpm exec reach quickstartIf you prefer to run commands manually:
git clone https://github.com/reachhq/requiem.git
cd requiem
pnpm install
cp .env.example .env
docker-compose up -dExecute a command through the Requiem CLI (reach). Every deterministic execution returns a unique, verifiable hash.
pnpm exec reach run system.echo "Hello, Determinism!"You will see output that includes an executionHash. This is the cryptographic proof of your execution.
You can now use this hash to verify the execution. Requiem will re-run the command in a hermetic sandbox and verify that the new output cryptographically matches the original.
pnpm exec reach verify <paste-your-execution-hash-here>You should see a ✅ Replay Successful message. You have just proven that your command's execution is reproducible.
Visualize your executions and audit logs in the local dashboard.
pnpm exec reach uiFor a full list of available commands, see the CLI Reference.
At its heart, Requiem is a system for creating, storing, and verifying records of execution. The data model reflects this simple purpose. This is the Prisma schema that powers the ReadyLayer dashboard:
// ready-layer/prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
}
// ─── Audit Log ────────────────────────────────────────────────────────────────
model AuditLog {
id String @id @default(cuid())
tenantId String @map("tenant_id")
actorId String @map("actor_id")
action String
resourceId String? @map("resource_id")
traceId String @map("trace_id")
metadata Json?
createdAt DateTime @default(now()) @map("created_at")
@@index([tenantId, createdAt])
@@map("audit_logs")
}
// ─── AI Cost Records ──────────────────────────────────────────────────────────
model AiCostRecord {
id String @id @default(cuid())
tenantId String @map("tenant_id")
actorId String @map("actor_id")
provider String
model String
inputTokens Int @map("input_tokens")
outputTokens Int @map("output_tokens")
costCents Int @map("cost_cents")
latencyMs Int @map("latency_ms")
traceId String @map("trace_id")
phase String?
createdAt DateTime @default(now()) @map("created_at")
@@index([tenantId, createdAt])
@@map("ai_cost_records")
}
// ─── Replay Records ───────────────────────────────────────────────────────────
model ReplayRecord {
id String @id @default(cuid())
hash String @unique
tenantId String @map("tenant_id")
toolName String @map("tool_name")
toolVersion String @map("tool_version")
inputHash String @map("input_hash")
integrity String
createdAt DateTime @default(now()) @map("created_at")
@@index([tenantId, hash])
@@map("replay_records")
}This repository contains a comprehensive verification suite.
pnpm run verify: Runs all fast, essential checks (lint, typecheck, boundaries). Run this before committing.pnpm run verify:ci: Runs the complete CI suite, including slower integration and determinism tests.
For more details on the architecture, see the Architecture Overview.
See CONTRIBUTING.md and CODE_OF_CONDUCT.md.