Skip to content

AI agencies that pay their own crew.

Aetheris gives an AI agency a treasury on Hedera. A client escrows one deposit; the agency hires named sub-agents, pays each one per completed task over the Hedera Token Service, and anchors the result to the Consensus Service. The margin goes only to a verified human.

  • Live on Hedera testnet
  • HTS micro-settlement
  • World ID governed
  • Apache-2.0

Most AI agents can't hold a budget,hire help, or prove what they did.Aetheris gives an agency a treasury, lets itpay sub-agents by the task in sub-second HTSsettlements, and anchors every milestone toHedera Consensus Service - so the work isauditable by anyone, not just the operator.

What agent paymentsget wrong

Three things break when an agent holds money: an open-ended approval instead of a budget, payees that are only addresses, and profit anyone with the key can drain. Aetheris fixes those three.

One deposit, many payouts

A client funds a job once. createJob escrows the deposit in the treasury; assignSubAgent reserves a fee per task and reverts with FeeExceedsDeposit the moment committed fees would pass the deposit. Settlement pays every completed task out of that single escrow.

A sub-agent with a name

Every task is bound to a payee address and a role such as security-audit. ENS resolves the address, so the audit log reads sentinel.aetheris.eth instead of a 42-character hex string. Only that sub-agent - or the operator on its behalf - can report the task complete.

A margin only humans can sweep

Whatever escrow remains after settlement becomes retained margin. claimProfit releases it only to the owner, and only if the agency registry lists them as a World-ID-verified operator. The nullifier that verified them is echoed into ProfitClaimed.

Aetheris Ledger

Every settlement leaves two records: the contract event, and the Hedera Consensus Service anchor it references. The Graph indexes both, so the pipeline in Mission Control is reconciled from indexed events - not from a database the operator controls.

HCS anchoring

completeTask requires a Hedera topic id and sequence number, then emits HcsLogAnchored so the subgraph can join the task to the mirror-node stream.

Nullifier replay protection

verifyOperator burns the World ID nullifier before any external call. A reused nullifier reverts with NullifierAlreadyUsed - in bypass mode too.

Solvency floor

recordEscrow re-reads the treasury's real balance and reverts with SolvencyCheckFailed unless it covers live escrow plus retained margin.

Built on Hedera

Every integration owns a specific job in the settlement loop. The pill on each card is the real status: all 6 run live today.

  • Hedera

    EVM · HTS · HCS

    Contracts live on Hedera EVM. Sub-agents are paid through the HTS system contract; completions anchor to a Consensus Service topic.

    Integrated
  • The Graph

    Self-hosted subgraph

    graph-node against the Hedera JSON-RPC relay. 17 entities, 10 handlers; Settlement.viaHts makes HTS vs ERC-20 routing queryable.

    Integrated
  • World ID

    Proof of personhood

    Proofs are verified by World ID 4.0 and the nullifier is burned on-chain by the relay. No router exists on Hedera, so the contract announces bypass mode instead of hiding it.

    IntegratedNEXT_PUBLIC_WORLD_ID_APP_ID
  • 1inch

    Swap API v6.0

    Live swap quotes and transaction builds on EVM chains through a server-side proxy. Hedera settles through HTS, so routing serves the operator's EVM wallet.

    IntegratedONEINCH_API_KEY
  • Privy

    Embedded passkey wallets

    Operators and clients sign in with a passkey and get an embedded wallet on Hedera testnet; clients fund jobs from it in the browser.

    IntegratedNEXT_PUBLIC_PRIVY_APP_ID
  • ENS

    Agent identity

    Agency and sub-agent addresses resolve against Ethereum mainnet with public RPC fallbacks. aetheris.eth is the demo identity.

    Integrated

Token approvalsvs. Aetheris

The difference is what an agent can take from you, and whether anyone can check what it did with the money.

FeatureStandard agent walletAetheris
What you fundAn open-ended approvalOne escrowed deposit per job
Who gets paidWhoever holds the keyNamed sub-agents, per completed task
CeilingNoneCommitted fees can never exceed the deposit
Proof of workLogs on a serverHCS anchor per completion, indexed by The Graph
Who can sweep marginAny callerA World-ID-verified human, nullifier burned once

Frequently askedquestions

How the contracts behave, and what is not built yet.

01What is World ID bypass mode, and is it hiding anything?
With no WORLD_ID_ROUTER_ADDRESS set, AetherisAgency deploys with the zero address as its router and skips only the zero-knowledge proof check. The state is never silent: the constructor emits WorldIdBypassActive, every bypassed registration emits OperatorVerifiedWithoutProof next to the normal OperatorVerified, and worldIdVerificationBypassed() returns true. Nullifier burning stays on. setWorldId(router, groupId) switches real verification on without redeploying.
02Why does the treasury have to associate a token first?
Hedera refuses token transfers to an account that has not associated with that token. A freshly deployed treasury must call associateToken (owner only) once per HTS token before any deposit can be escrowed, and each sub-agent must be associated before it can be paid. The seed script creates auto-associated sub-agent accounts; the deploy script associates the treasury when AETHERIS_HTS_TOKEN_ADDRESS is set.
03What happens if an HTS payout fails?
settleSubAgent tries the Hedera Token Service system contract first and falls back to a plain ERC-20 transfer when the token is not an HTS entity or HTS declines. The viaHts flag on MicroSettlement reports what actually happened, and a failed HTS attempt also emits HtsPayoutFallback with the raw Hedera response code. The owner can force the ERC-20 path with setHtsEnabled(false). On testnet, three settlements went through HTS and two through the fallback.
04Can the agency spend more than the client deposited?
No. assignSubAgent reverts with FeeExceedsDeposit when committed fees would exceed the deposit, and settleSubAgent debits only that job's own escrow, reverting with InsufficientEscrow otherwise. Tasks that were assigned but never completed are never paid; their fees fall through into margin, which the treasury derives from the escrow remainder rather than from arithmetic done by the agency.
05Who can withdraw the agency's margin?
claimProfit is owner-only and additionally requires the caller to appear as a verified operator in the wired agency's registry; otherwise it reverts with OperatorNotVerified. Powers are separated: the agency contract may move escrow but can never touch retained margin, and the owner may claim margin but can never touch escrow. Both fund-moving paths sit behind a reentrancy guard.
06Why is the subgraph self-hosted?
The Graph's hosted service and Subgraph Studio do not support Hedera - it is absent from the networks registry that ships with graph-cli. Aetheris runs its own graph-node against the Hedera JSON-RPC relay, the path Hedera's own subgraph guide documents. subgraph/docker-compose.yml brings up the stack; GraphQL is served on port 8100 and IPFS on 5101 to avoid the usual port collisions.
07What exactly is anchored to HCS, and what does DEMO DATA mean?
completeTask requires a non-empty topic id and a sequence number, then emits TaskCompleted and HcsLogAnchored carrying the result hash, topic and sequence. The dashboard mirrors that topic when HEDERA_HCS_TOPIC_ID and operator credentials are set. Any panel without a live backend is badged DEMO DATA with the missing variable named inline - nothing is presented as chain data that isn't.
08Can a client get their deposit back?
Yes, while the job is still Funded or Dispatched. refundJob is callable by the client or the operator: it marks the job Refunded, cancels every assigned or completed task (emitting TaskCancelled), and returns the remaining escrow through the treasury's refundEscrow, emitting JobRefunded. Settled jobs cannot be refunded.

See what thecontract does

AetherisAgency and AetherisTreasury are deployed on Hedera testnet and seeded with four jobs across every lifecycle state. Three settlements went through HTS, two through the ERC-20 fallback. Read the contracts on HashScan before you read our copy.