SCL Protocol — Deterministic Identity for AI Run Declarations

SCL is the deterministic, cryptographic identity protocol for AI run declarations.

For the complete definition, see the SCL definition.

Verify AI Run Declarations

Explore the Protocol

Clarifying Boundaries

SCL defines identity for AI run declarations. It does not define execution behavior, orchestration, or workflow systems.

For boundary clarification, see SCL vs workflow systems and What SCL Is Not.

For formal definition, see SCL definition.

Processing pipeline

bytes → AST → canonical JSON → SHA-256

Identity function

Identity = SHA-256(canonical JSON bytes)

The SHA-256 identity is derived exclusively from canonical JSON bytes. No other representation, transformation, or intermediate form is permitted as input to the hash function.

The problem

Without a protocol-defined identity layer, AI run declarations cannot be made deterministically verifiable, produce identical canonical JSON bytes and SHA-256 identity across implementations, or be auditable in an implementation-independent manner.

Without deterministic identity, trustworthy AI systems cannot exist.

SCL replaces trust in identity with deterministic verification of declared execution representations.

With and without SCL

Without SCL

  • Execution is logged, not proven
  • Reproducibility is approximated
  • Identity depends on implementation

With SCL

  • Declaration identity is deterministic
  • Canonical form is implementation-independent
  • SHA-256 identity is stable across all compliant engines

Document structure

A valid SCL:V1 document consists of exactly three components in this exact order:

The document MUST begin at byte 0 with SCL:V1. No BOM or leading bytes are permitted. The document terminates at the closing brace of the scl block with no trailing bytes.

Protocol status

SCL:V1 is frozen.

Any change to SCL:V1 behavior requires a new protocol version (SCL:V2). No exceptions. No errata. No backwards-compatible amendments.

Implementations

Reference Engine

C (scl-core)

CLI: parse canon hash

SDKs

PythonGoJavaScriptRustC++C#JavaKotlinPHPRubyR

All implementations MUST produce identical canonical JSON bytes and identical SHA-256 identity for identical input bytes. SCL compliance is defined by the specification and verified against the Golden Documents.

Get started

curl -sSL https://sclprotocol.dev/install | sh

cat > hello.scl << 'EOF'
SCL:V1

handles {
  name("input")
  greeting("output")
}
scl {
  "Hello, World"
}
EOF

scl parse hello.scl
scl canon hello.scl
scl hash hello.scl

parse validates structure. canon emits canonical JSON. hash computes SHA-256 from canonical JSON bytes.

Reference example

SCL:V1

handles {
  input("data")
  output("result")
}
scl {
  @input " → " @output
}
SHA-256 identity:
8429083dfe564b5d147bad0d875a155235cb59bc419496dc057850025e3065b6

This hash is stable. Any compliant implementation processing the same input bytes will produce this exact hash. If it does not, the implementation is non-conformant.

Note: The example above is shown compacted for readability. According to the official SCL:V1 Specification (§3.2), each handle definition must be on its own physical line inside the handles { } block.

Verify AI Run Declarations

For the complete definition, see SCL definition.