← Tools
THE IDEA
An in-memory client that behaves like Arkiv (TTL expiry, attribute queries, batch, full-replace) so unit tests and CI run instantly and deterministically — no testnet, wallet, or gas.
The problem today
- Tests that hit the network are slow (block time), flaky (RPC), and need a funded wallet in CI.
- Expiry behavior is nearly impossible to assert quickly against a live chain.
- Today the faucet makes testnet testing easy enough — so this is a LATER tool, not a now tool.
What it would do
- In-memory store with the same API shape as the public + wallet clients.
- Reproduces TTL expiry, attribute predicate queries, mutateEntities batching, and full-replace updates.
- Vitest/Jest helpers: reset between tests, seed fixtures, fast-forward time to assert expiry.
- Marks tx hashes and finality as simulated — it's a test double, not a chain.
WHY IT’S A BETTER EXPERIENCE
- Deterministic, millisecond, offline tests — the loop every web2 dev expects, especially in CI.
- Lets you assert expiry behavior in a unit test, which is impractical on-chain.
HOW IT COMPARES
Firebase Emulator Suiteoffline/CI testing without prod — the feature Firebase devs love most.
Local L3 dev env (WIP at Arkiv)a real local chain for heavy/load testing. This is a fast in-memory double for unit tests — complementary.
FEASIBILITY — AND WHY THIS ISN’T HAND-WAVING
Medium to build
A faithful in-memory reimplementation of query predicates + TTL + full-replace. The honesty bar (simulated finality) matters more than the code.
Grounded in
- Arkiv DX audit lists "no local dev env" as a real gap; CI/determinism is the sharpest consequence.
- Semantics to mirror (full-replace, TTL, predicate query) verified live on Braga.
- Deferred per product call: testnet faucet is easy today; this matters at mainnet.
PAIRS WITH