Misthos

Architecture

The pieces, and how a submission becomes a payout.

Components

ComponentRole
Web app (Next.js)Owner app, contributor pages, public audit pages and verification, APIs. Holds no signing key.
WorkerRuns the submission pipeline and the round job from a Postgres-backed queue. Owns the agent wallet.
PostgresPrograms, submissions, decisions, payouts, and an append-only audit log.
CircleThe agent's smart-contract wallet, gas sponsorship, and contract execution with idempotency keys.
ArcThe vault factory and one vault per program. Payouts and gas in USDC.

A submission

A round

Every step reads the chain and the database before acting, so a crashed or retried job resumes where it stopped without paying twice.

Identifiers

ValueDerivation
programId, roundId, contributorIdkeccak256("misthos:<kind>:" + uuid)
payoutIdkeccak256(abi.encode(programId, roundId, contributorId))
decisionHashkeccak256 of the record's canonical JSON
Payout decisionHashkeccak256 of the sorted record hashes it pays, concatenated
Round decisionRootThe same, over every record in the round