Write programs.
Limit authority.
Prove claims.
Structured host programs and zero-knowledge circuits, with explicit authority and proving trust.
Three machines, one explicit pipeline.
Each VM owns a different responsibility instead of hiding execution, witness generation, and constraint construction behind one runtime.
Runs the language, structured tasks, owned resources, closures, and proof blocks. Interpreter, JIT, and AOT share the same authority boundary.
Executes deterministic witness programs, including multi-subprogram Circom lowering and native bigint operations for ECDSA-scale circuits.
Stages template expansion, deduplicates shared bodies, and emits constraint IR without forcing every repeated subgraph into memory at once.
Concurrent host programs
Closures, collections, structured tasks, bounded channels, and owned file or TCP resources run under explicit grants and runtime limits.
// Binary search — full VM mode
fn binary_search(arr, target) {
mut lo = 0
mut hi = len(arr) - 1
while lo <= hi {
let mid = (lo + hi) / 2
if arr[mid] == target { return mid }
if arr[mid] < target {
lo = mid + 1
} else {
hi = mid - 1
}
}
return -1
}
let sorted = [2, 5, 8, 12, 16, 23, 38]
assert(binary_search(sorted, 23) == 5) $ ach circuit vote.ach --inputs "..." --backend r1cs
Compiling vote.ach...
IR: 18 instructions
Optimized: 3 eliminated (constant folding + DCE)
Boolean propagation: 2 proven
R1CS generated:
Constraints: 2,179
Public inputs: 4
Private inputs: 5
Wrote vote.r1cs (932 bytes)
Wrote witness.wtns (236 bytes) — verified OK Exact circuit artifacts
Compile Achronyme and Circom inputs to optimized constraints and witnesses that can be checked independently with standard tooling.
Detached and on-chain verification
Export snarkjs-compatible artifacts, generate Solidity Groth16 verifiers, or verify detached BN254 and BLS12-381 proof JSON from the CLI.
$ ach run proof.ach --prove-backend r1cs --insecure-dev-setup
Development key selected (not for production)
Proof generated (Groth16)
Proof verified — 5 constraints
$ ach circuit proof.ach --solidity Verifier.sol
Wrote Verifier.sol (Solidity Groth16 verifier)
// Deploy and verify on-chain let secret = 0p12345
let blinding = 0p98765
let commitment = poseidon(secret, blinding)
let proof = prove(commitment: Public) {
assert_eq(poseidon(secret, blinding), commitment)
}
// proof is a first-class value
let json = proof_json(proof)
assert(verify_proof(proof)) Proofs with an explicit key source
Proof blocks remain first-class values, but generation now fails unless development setup or a circuit-bound trusted key store is selected.
Development speed without production ambiguity
Use an explicit local setup while iterating, then switch to the exact ceremony-bound store for production.
# Local iteration only
$ ach run commitment.ach \
--insecure-dev-setup
Development key selected
Single-party setup is explicit.
The resulting artifacts are not
trusted for production.
Proof generated (Groth16)
Proof verified let secret = 0p12345
let blinding = 0p98765
let commitment = poseidon(secret, blinding)
prove(commitment: Public) {
assert_eq(poseidon(secret, blinding), commitment)
}
// Proof generated + verified (Groth16) $ ach run commitment.ach \
--trusted-key-dir ./keys/commitment
Circuit-bound key accepted
Proof generated (Groth16)
Proof verified — 361 constraints