Introducing Achronyme — a language for zero-knowledge proofs. Read the announcement

Projects & Sessions

Templates, session persistence, export/import, and project configuration in the playground.

Templates

The playground offers three project templates, matching ach init --template:

vm

A general-purpose program. This is the default template.

// src/main.ach
let name = "Achronyme"
print("Hello from " + name + "!")

circuit

A ZK circuit with inline proving.

// src/main.ach
let a = 6
let b = 7
let out = a * b

let proof = prove multiply(out: Public) {
    assert_eq(a * b, out)
}

print("Proof generated!")
print("Verified: " + verify_proof(proof).to_string())

prove

A program using Poseidon hashing with a prove block.

// src/main.ach
let secret = 0p42
let expected = poseidon(secret, 0p0)

let proof = prove check(expected: Public) {
    let h = poseidon(secret, 0p0)
    assert_eq(h, expected)
}

print("Proof: " + proof.to_string())
print("Valid: " + verify_proof(proof).to_string())

Select a template from the dropdown in the sidebar footer. Switching templates creates a fresh project.

Project configuration

Every project includes an achronyme.toml file:

[project]
name = "my-project"
entry = "src/main.ach"

[build]
backend = "r1cs"

The playground reads this file to determine:

  • entry — which file to compile and run (default: src/main.ach)
  • backend — proving backend: r1cs (Groth16) or plonkish (Halo2)

See Project Configuration for all available options.

Session persistence

Your work persists across page reloads and browser restarts.

Auto-backup: every 3 seconds, all project files are backed up to localStorage. If the server loses your session (after a restart or TTL expiration), the playground automatically restores from this backup.

Session restore flow:

  1. Try to reconnect to the existing server session
  2. If the server lost it, create a new session and restore files from the localStorage backup
  3. If no backup exists, load the default vm template

Layout preferences (sidebar width, panel position, panel visibility) are also persisted in localStorage.

Export & Import

Export

Click Export in the sidebar footer to download your project as a project.ach.json file. This includes all files and their contents.

Import

Click Import to load a previously exported project. The playground creates a fresh session and writes all files from the JSON.

The export format is simple JSON:

{
  "files": {
    "achronyme.toml": "[project]\nname = \"demo\"\nentry = \"src/main.ach\"\n",
    "src/main.ach": "print(\"Hello!\")\n"
  },
  "exportedAt": "2026-03-29T12:00:00.000Z"
}

Limits

ResourceLimit
Files per project20
File size32 KB
Total workspace256 KB
Allowed extensions.ach, achronyme.toml
Session TTL2 hours (inactive)
Max concurrent sessions200
Instruction budget100M instructions
Heap size256 MB
Execution timeout10 seconds
Print output1 MB
Navigation