DOCS / LOCAL DEVELOPMENT
Run your own development stack.
Run the local program demo
From the PairKey repository root, use Rust 1.88.0 with rustfmt and Clippy, Python 3.12+, Node 22.23.0 and curl. The installer supplies the pinned Solana, Anvil, and SBF tools locally.
python3 scripts/install-ci-tools.py
source .local/ci-tools/env.sh
bash experiments/silence-dkls23/bootstrap.sh build --release --locked
cargo fetch --locked
bash scripts/build-programs.sh
cargo build --workspace --features pairkey-worker/dev-simulation --locked
bash scripts/demo-program-jobs.sh
The demo starts local services, exercises program-authorized signing and EVM sessions, and runs restart, cancellation, and freeze cases. Expect several minutes, including deliberate rate-limit waits. A complete validation gate is available through bash scripts/ci.sh.
Public evidence is written beneath .local/. That directory also contains private development roots and identity material; only selected public reports are suitable for sharing.
What success looks like
The harness exits successfully after completing the program-controlled flows. It starts a local Solana validator, Anvil, two workers, and a coordinator, funds only local accounts, and stops its child processes on exit. Public results include multi-suite signing, EVM transfer execution, session revocation, and the job-lifecycle matrix.
The full gate also exercises v2 account and bound-identity approvals, authenticated program evaluation, atomic commit, durable recovery, all five browser-SDK signing flows, and the extracted downloadable program. Inspect the logs from your actual run in .local/ci-report/; historical reports do not establish the current checkout’s result.
If the demo refuses to run
- Missing tools: source
.local/ci-tools/env.shin your current shell after installation. - Missing native DKLS source: run the pinned bootstrap before root-workspace Cargo commands.
- Missing program artifacts: run
scripts/build-programs.sh; a host test alone does not compile SBF programs. - A deliberate native abort limit: the lifecycle harness may wait 61 seconds before an explicit fresh attempt. Do not weaken the limit to speed up the demo.
- An incident or ambiguous timeout: inspect the failure and reconcile state. Do not clear incident files or automatically retry a destination transaction.
Use your own application
Continue to Solana program integration. The browser demo teaches the flow; this local harness runs real signing code.