YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
ORTHO-32 Java SDK
Official JVM developer surface for ORTHO-32 β a deterministic, tensor-augmented ORTHO architecture.
Java Application β ORTHO Java SDK β ORTHO Protocol / Native Bridge β ORTHO Host Service β Transport β ORTHO Fabric β Hardware
Applications program against stable, typed Java APIs (OrthoDevice, FabricCommand, TensorJob, ExecutionTrace, TheoremResult) and never touch PCIe BARs, DMA windows, or raw MMIO. The SDK hides transport internals; the same code runs against a simulator, FPGA, ASIC, PCIe, USB, or Ethernet device.
What is ORTHO-32?
ORTHO-32 is a 32-bit ORTHO ISA with deterministic arbitration, a 4-cycle TMUL tensor unit, cycle-accurate tracing (H=0 determinism), and 12 mechanically-checked theorems (Lean4 + HOL Light). Fabric commands are logically addressed, epoch-ordered, and completed with architectural-cycle timestamps β not wall-clock time.
What this SDK provides
- Stable Java APIs over ORTHO system contracts:
org.ortho32,org.ortho32.device,fabric,compute,tensor,trace,verify,security,agent,system,transport,exceptions - Immutable value objects, records,
CompletableFutureasync,Flow.Publisherstreaming, typed exceptions,AutoCloseableresources - SimulatorTransport β deterministic fake fabric for offline development, CI, and tests (no hardware required)
- JSON Schemas for
FabricCommand,FabricCompletion,ExecutionTrace,TheoremResult,Attestation - Examples & integration tests validated against
SimulatorTransport
Quick-start (5 lines)
Add the SDK to your Gradle project and run with the simulator (Java 21):
dependencies { implementation("dev.ortho32:ortho32-sdk:0.1.0") }
try (OrthoRuntime runtime = OrthoRuntime.open();
OrthoSession session = runtime.openSession()) {
OrthoDevice device = session.devices().firstAvailable();
TensorJob job = TensorJob.builder()
.device(device)
.operation(TensorOperation.TMUL)
.inputA(matrixA)
.inputB(matrixB)
.build();
TensorResult result = session.tensor().submit(job).join();
System.out.println("cycles: " + result.cycles());
System.out.println("trace: " + result.traceHash());
}
No drivers, no hardware β OrthoRuntime.open() defaults to SimulatorTransport when no device is present. Swap to PCIe/USB/Ethernet by changing transport, not application code.
Module overview
| Module | Artifact | Purpose |
|---|---|---|
ortho-core |
org.ortho32 |
OrthoRuntime, OrthoSession, OrthoContext, OrthoVersion, OrthoResult |
ortho-device |
org.ortho32.device |
OrthoDevice, OrthoDeviceId/Info/Capabilities/State |
ortho-fabric |
org.ortho32.fabric |
FabricCommand, FabricCompletion, FabricAddress/Opcode/Epoch/Slot |
ortho-compute |
org.ortho32.compute |
Scalar compute submission |
ortho-tensor |
org.ortho32.tensor |
Tensor, TensorShape/Buffer/Job/Operation/Result, TensorLatency |
ortho-trace |
org.ortho32.trace |
ExecutionTrace, CycleRecord, TraceHash, TraceComparator |
ortho-verify |
org.ortho32.verify |
TheoremId, TheoremResult, VerificationStatus/Report, CrossVerificationResult |
ortho-security |
org.ortho32.security |
Capability, Permission, SecurityContext, Attestation |
ortho-agent |
org.ortho32.agent |
AgentIntent, AgentTask, AgentResult, AgentCapability |
ortho-transport |
org.ortho32.transport |
OrthoTransport (internal), SimulatorTransport, NativeHostTransport, PCIe/USB/Ethernet |
ortho-system |
org.ortho32.system |
System utilities, versioning |
Per-module JARs + aggregate ortho32-sdk.jar, sources JAR, Javadoc JAR, Maven publication metadata, reproducible builds, checksums, dependency locking.
Transport options
All transports expose the same OrthoSession API. Application code is transport-agnostic.
| Transport | Class | Use |
|---|---|---|
| Simulator | SimulatorTransport |
Deterministic fake fabric, offline tests, CI. Required. No hardware. |
| PCIe | PCIeTransport |
Native host service over PCIe BAR |
| USB | USBTransport |
USB-attached ORTHO device |
| Ethernet | EthernetTransport |
Remote ORTHO fabric over UDP/TCP |
| Native | NativeHostTransport |
JNI bridge to ORTHO Host Service |
// Explicit simulator (tests/examples)
OrthoRuntime runtime = OrthoRuntime.open(new SimulatorTransport());
// Production - auto-detect or inject via service loader
OrthoRuntime runtime = OrthoRuntime.open();
Rule:
FabricCommandis the logical API. Applications never write PCIe BAR registers.
Versioning
Semantic versioning for public Java APIs. Compatibility is a tuple:
SDK-Version + Fabric-Protocol-Version + Device-ABI-Version
Access via OrthoVersion:
OrthoVersion v = OrthoRuntime.open().version();
System.out.println(v.sdkVersion()); // e.g. 0.1.0
System.out.println(v.fabricProtocolVersion()); // e.g. 1
System.out.println(v.deviceABIVersion()); // e.g. 2
- SDK version β bumped on API change; follows SemVer
- Fabric protocol version β bumped on wire-format change
- Device ABI version β bumped on scratchpad / register map change
OrthoRuntimechecks compatibility onopenSession()and fails fast on mismatch
See CHANGELOG.md for history.
Build instructions
Requirements: Java 21 toolchain, Gradle 8.x
git clone https://github.com/ortho32/ortho32-sdk-java.git
cd ortho32-sdk-java
./gradlew build # all modules, tests with SimulatorTransport
./gradlew :integration-tests:test --info # integration tests only (no hardware)
./gradlew publishToMavenLocal # artifacts to ~/.m2
./gradlew javadoc # aggregated Javadoc
Reproducible builds, dependency locking (gradle.lockfile), checksums. Gradle Kotlin DSL.
Examples
All examples run without hardware via SimulatorTransport.
| Example | Path | Description |
|---|---|---|
| device-list | examples/device-list |
Enumerate and print available devices |
| tensor-run | examples/tensor-run |
Build TensorJob, submit TMUL, print cycles & traceHash |
| trace-replay | examples/trace-replay |
Capture trace, compute hash, replay, compare (H=0) |
| proof-verify | examples/proof-verify |
Verify 12 theorems via VerifyClient, table with Lean/HOL columns |
| agent-client | examples/agent-client |
Dispatch AgentTask via AgentClient, print result |
Run:
./gradlew :examples:device-list:run
./gradlew :examples:tensor-run:run
./gradlew :examples:trace-replay:run
./gradlew :examples:proof-verify:run
./gradlew :examples:agent-client:run
API style
- Immutable value objects;
recordwhere appropriate - No raw native pointers in public API
- No
Map<String,Object>when schema exists - Async via
CompletableFuture, streaming viaFlow.Publisher - Typed exceptions (
OrthoExceptionhierarchy) AutoCloseablesessions and transports
Contributing
- Fork, create feature branch
./gradlew buildβ must pass withSimulatorTransport(no hardware)- Add schema + Javadoc for new public types
- Update
CHANGELOG.md - PR with determinism proof (
TraceHashequality) where applicable
License: MIT. See LICENSE.
Sovereign Boundary
This repository operates under the SnapKitty Method: public by default, sovereign by construction.
CODE β PUBLIC (this repository)
PROOF β PUBLIC (Lean 4 / formal verification artifacts)
SPEC β PUBLIC (interfaces, schemas, invariants)
HISTORY β PUBLIC (cryptographic provenance, WORM-sealed)
AUTHORITY β SOVEREIGN (Bel Esprit D'Accord Irrevocable Trust)
STATE β SOVEREIGN (credentials, private data, operational secrets)
EXECUTION β AUTHORIZED (requires sovereign state β not in this repo)
"Here is the machine. You do not own the state it operates on."
Reading the source does not grant execution authority. Forking the repo does not grant deployment rights. The code is verifiable. The authority is not transferable.
β Full architecture: SOVEREIGN_METHOD.md
β License terms: LICENSE Β· β IP estate: NOTICE
Copyright (C) 2026 Bel Esprit D'Accord Irrevocable Trust (EIN 42-697643) Β· Ξ© = TRUST β§ CODE