Docs
Run a worker.
Workers are the open-source engine behind Arkivate. Anyone can run one; each one is just an address that writes receipts. More independent workers means nobody can switch the system off.
Quickstart · Node 22, pnpm 9
git clone https://github.com/NatX223/Arkivate.git && cd Arkivate corepack enable && pnpm install pnpm wallets # prints fresh keys + addresses; writes nothing cp .env.example .env # WORKER_NAME, WORKER_PRIVATE_KEY, ARKIV_ACCESS_KEY, PUBLIC_ENDPOINT # fund the worker address with testnet GLM: https://hub.arkiv.network/faucet pnpm worker
01Registers
Writes a worker entity with its name and public hand-off URL, and keeps it alive with heartbeats. A dead worker simply disappears.
02Watches
Loads every live public trigger and its accepted sealed jobs, follows entity events over WebSocket, and sweeps for expiries, which Arkiv never announces.
03Fires and proves
Posts a notice, reactivates (extends) the watched entity, or delivers a private alert. Every firing writes a burned receipt that anyone can check.
Transparency
What's on Arkiv, and what stays private.
On Arkiv · public
Public triggersThe full spec: what is watched, the condition and the action.
ReceiptsReadonly and burned, so nobody can delete them, the worker included. Public ones carry a summary; sealed ones carry only a salted result hash.
Sealed commitmentskeccak256(spec ‖ salt) and the chosen worker's address. Nothing else.
AcceptancesThe worker's burned promise to run a sealed job, with the block it accepted.
Worker registrationsName, version and public hand-off URL. They expire unless the worker keeps heartbeating.
Reveals (only in a dispute){ spec, salt } for one sealed trigger, published by its owner.
🔒 Never on Arkiv
Alert destinationsTelegram chat IDs and webhook URLs go only to the chosen worker, never on-chain, not even hashed.
Sealed specs before a revealOnly the owner and the assigned worker know what a sealed trigger watches.
The saltKept in the owner's browser (or ~/.arkivate). Without it, a commitment can't be brute-forced.
KeysWorkers sign with their own key. On this site, you sign in your own wallet; Arkivate never holds keys.
The Arkiv access keyServer-side only. The site's read proxy adds it; your browser never sees it.
The CLI
pnpm cli create <spec.json>Publish a public trigger (the spec is the payload).pnpm cli pause <key> [--resume]Pause or resume a public trigger you created.pnpm cli seal --spec <file> --worker <name> --telegram <id>Publish only a salted commitment and hand the spec to one worker.pnpm cli handoff <sealed-key> --telegram <id>Re-send a sealed hand-off (idempotent).pnpm cli reveal <sealed-key>Publish { spec, salt }, burned, so anyone can verify.pnpm cli verify <sealed-key>FIRED, SKIPPED (provable censorship), PENDING, …pnpm cli demo-feed --kind listingEmit synthetic short-lived entities to watch.