> For the complete documentation index, see [llms.txt](https://docs.bitcoinos.build/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bitcoinos.build/technical-documentation/grail-pro-charms-zkbtc/technical-overview/grail-pro/grail-pro-system-architecture.md).

# Grail Pro - System Architecture

**System Architecture**

Grail Pro comprises three main components: operators, backend, and frontend, forming a trustless workflow where frontend initiates requests, backend processes and validates with ZK-proofs, and operators approve via secure hardware.

**Operator**

Description: A cloud-based or on-premise machine running in a secure execution environment (e.g., AWS Nitro Enclave, HSM, or other TEEs) to review and sign ZK-proof-backed requests.

Security: Cryptographic attestations (produced by the TEE provider) enforce platform and application code correctness; internal keys are generated and protected within the TEE, with messages signed for authenticity. Secrets never leave the environment. The system uses an m-of-n multisig (e.g., 12-of-16 threshold) to eliminate single points of failure—requiring at least 12 independently operated operators to be compromised for loss of service or funds.

Functionality: Receives signing requests backed by SNARKs (Succinct Non-interactive Arguments of Knowledge), verifying them against predefined rule-based strategies before signing. Supports roster management for adding/removing operators and updating thresholds.

Advanced Features: Operators can clone TEEs using a shared cloning secret for persistence across availability zones, creating clusters without exposing private keys. Cloning involves secure key transfer between identical TEE snapshots. Integration with zkVMs allows recursive proofs for efficient validation, ensuring compliance with app contracts (e.g., for zkBTC minting).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bitcoinos.build/technical-documentation/grail-pro-charms-zkbtc/technical-overview/grail-pro/grail-pro-system-architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
