Tasks overview
The Tasks page is the main work surface. It has two kinds of work:
- Onchain task groups — build transactions across many wallets.
- Social task groups — fan an off-chain HTTP/browser flow across many burner accounts.
A group has a kind (onchain or social) chosen at create time. You cannot mix
the two kinds in one group; the + Build Task dialog branches off the group’s
kind.
Anatomy of a group
| Element | What it is |
|---|---|
| Name | Free-form. |
| Kind | onchain or social. Locked after creation. |
| Chain | (Onchain only.) The target EVM chain. |
| Status pills | Per-row live state — Pending, Running, Completed, Failed. |
| Live log | Per-row modal with the verbose execution trace. |
When any row is Running, the table polls every 1 second so progress is live.
Anatomy of a row
For onchain rows: one row = one wallet × one task config. The runner signs with that wallet, broadcasts, and stamps the row.
For social rows: one row = one burner account × one module instance. The runner steps through the module’s request → captcha → verify pipeline.
Building tasks
Click + Build Task inside a group. The dialog adapts:
- Onchain: contract address → ABI auto-fetch (Sourcify, ~300ms debounced) →
function picker → arg fields (with
{address}/{id}template tokens) → value → gas → wallet group → mode. - Social: pick a module or paste a Google Forms URL → account group → per-field overrides → save.
Saving creates one task row per wallet (onchain) or per account (social).
The runner
The runner owns task status end-to-end. Every exit path stamps a status:
- Success →
Completed, tx hash if onchain. - Failure →
Failed, revert reason or HTTP error inLastError. - Mid-execution →
Runningwith progress updates so the UI flashes the latest revert reason.
If you force-kill the app mid-run, surviving rows get demoted to Stopped on next
launch. Re-Start to resume them.
Multi-wallet fan-out
You build the task once; the runner instantiates per wallet. Each wallet’s nonce is tracked independently. Failures don’t cascade — one wallet reverting doesn’t pause the rest.
For onchain: nonces are pre-fetched per task. EIP-1559 gas is computed once per task with a fresh tip baseline from the gas ticker.
For social: each account’s run is fully isolated (own browser profile, own proxy if pinned).
Multi-RPC under the hood
The runner picks RPC URLs through the RPC store with failover.
The persistent client pool keeps one *ethclient.Client per URL with HTTP/2 +
MaxIdleConnsPerHost: 32, so the broadcast doesn’t pay TLS handshake on each
attempt.
Continue to:
- Onchain tasks — the build dialog in detail.
- Simulate / Spam / Instant — execution modes explained.
- Scavenger search —
{id}templating. - Social tasks — the off-chain side.
- Modules — pre-built templates pinned by the team.