Skip to content
Pixel art courier in a hooded cloak and red scarf, cradling a sapling growing from a coin

Alms — a fee-funded charity treasury allocated by an autonomous AI agent with zero-trust governance.

Fees in. Forests and food out.

100% Autonomous & Auditable · by design

What this is

A treasury that spends itself, on a schedule, in public.

Transaction fees earned across the ponsfamily network land in a treasury no committee touches. Once a day an AI agent reads the balance, writes a plan and pays it out — inside limits it cannot raise, through screening it cannot skip, onto a ledger it cannot edit.

Spendable balance

$0

Awaiting the next cycle

Total donated

$0

0 settled transfers

Countries reached

0

Worldwide relief network

Payout ratio

80%

Share of balance released per run

Unit 01Field issue
Pixel art courier in a ragged dark hooded cloak and streaming red scarf, cupping a glowing green sapling, standing against a red city skyline

Live from the treasury

Where the money is

Read straight from the API on every revalidation. Nothing in these tiles is typed by hand, and the empty ones stay empty until a cycle fills them.

API connected
Pixel art analyst figure reading from a ledger
Courier · Unit 01

Project: Alms


One fee, one tree at a time.

$0Total donated
0Settled transfers
0Countries reached
CoverageExcludes ID by policy

Where
it went

No settled transfers yet. This chart fills itself from GET /api/donations/stats — it is not drawn by hand.

Open the ledger

What this is

A treasury that spends itself

Three properties define it. Everything else on this page is a consequence of one of them.

Funded by fees, not donations

The treasury is filled by transaction fees earned across the ponsfamily network. There is no fundraising drive and no separate collection: giving is a function of activity that already happened.

Allocated without a committee

An AI agent sets the split and picks recipients on a fixed schedule, inside limits it cannot raise. No monthly meeting, no discretionary override, no single person deciding where a payout lands.

Auditable end to end

Every run, rejected plan and settled transfer is queryable, including the reasoning the agent gave at the time and the exact prompt it was operating under.

Capital flow

Fee to forest, in six steps

Each step commits before the next begins, so there is no window where money is in motion without a record of where it went.

One cycle · one day

Step 01


Fee ingestion

ponsfamily.com posts every network fee to a signed webhook. The signature is an HMAC over the raw bytes, and the provider event id makes the endpoint idempotent, so a retried delivery is acknowledged without crediting twice.

POST /api/webhooks/ponsfamily-fee

Step 02


Treasury credit

The fee row and the balance increment commit in one database transaction. There is no state where a fee is recorded but uncounted, or counted but unrecorded.

fee_transactions + treasury

Step 03


Scheduled cycle

A cron job wakes the agent on a fixed schedule. Below the treasury floor the run is written down as skipped, with the reason, and nothing moves.

node-cron, single-run lock

Step 04


Decision

Claude receives the released budget, the all-time category split and the countries funded recently, then returns a plan through a strict tool schema. Prose is rejected; only a valid tool call counts.

submit_donation_plan

Step 05


Screening

Budget, allocation count, duplicates and the geographic rule are checked before any money moves. One violation rejects the whole plan and the agent gets exactly one corrective retry.

reject-then-retry, once

Step 06


Disbursement and ledger

The debit and the ledger row commit together, then the transfer is attempted outside that transaction. A failure credits the money back and marks the row failed. Nothing disappears quietly.

donation_logs

Autonomous reasoning engine

How the agent thinks & executes

Every line below is a real record from the agent run log — the reasoning it gave, the screening it passed, and what actually settled. If no cycle has run, the stream says so rather than inventing one.

Live · GET /api/agent/runs

Agent status

[ Run log ]

MK-01://agent/execution_stream.log
CONNECTING
|
[AGENT INIT] Schema: submit_donation_plan

Connecting to this site

Awaiting API
Autonomous engine

Agent MK-01

Each cycle runs on a fixed schedule. The agent cannot raise its own budget limits, skip screening, or withhold its reasoning.

Cycle cadence
Decision model
Payout ratio
Per-run ceiling
Excluded
Disbursement rail

What this shows

Real records from the agent run log, replayed in order. If the stream is empty, no cycle has run yet.

01

Data & need telemetry

Evaluates verified canopy survival rates and acute emergency indices, then balances the two categories against the all-time split it is shown at the start of the run.

02

Deterministic guardrails

Hardcoded budget ceilings, recipient deduplication and the compliance screen run over every plan before a single dollar moves.

03

Atomic vault & public ledger

Postgres commits the debit and the ledger row in one transaction. Receipts and rationale are public and append-only.

Treasury policy

The limits it runs under

Served live from GET /api/agent/policy. If an operator changes a limit, this section changes with it — the numbers are not copied into the page.

Budget release
Treasury floor
$500

Below this the run is skipped and recorded

Payout ratio
80%

Share of the balance released per cycle

Per-run ceiling
$25,000

Hard cap, applied after the ratio

Allocations per run
2–4

Forces a spread rather than one large bet

Execution
Schedule
0 2 * * *

UTC · disabled

Model
claude-sonnet-5

Full system prompt published at /api/agent/policy

Disbursement rail
mock

Simulated transfers — live rails are Phase 3

Guardrails
Zero-Trust

Enforced in prompt, code and database

Allocation mandate

Two categories, nothing else

The agent balances between them and corrects for the all-time split it is shown at the start of every run.

Reforestation

Reforestation

Tree planting and forest restoration where a dollar buys the most surviving canopy — mangroves, degraded tropical land and watershed replanting, favouring organisations that report survival rates rather than planting counts.

  • Mangrove restoration
  • Watershed replanting
  • Agroforestry
Humanitarian relief

Humanitarian relief

Acute crisis response routed to responders already operating in the country: famine and food security, displacement, clean water access and emergency medical care, with the reasoning for each choice recorded beside the payment.

  • Famine relief
  • Clean water
  • Emergency medical
Clean water
Medical
Direct aid
Local partners

Global giving without borders

The
Record

Issue 01 // Field log

Cover story

Pixel art planter figure kneeling to press a sapling into the ground

Check it yourself

Every claim on this page maps to an endpoint you can call without an account. If a number here disagrees with the API, the API is right.

No account, no key, no rate limit

Open ledger

Amount, recipient, country, category, status and receipt for every disbursement, cursor-paginated and public. No login required.

GET /api/donations

Published policy

The exact system prompt, model id, schedule and budget limits the agent runs under, served live from configuration rather than copied into a document.

GET /api/agent/policy

Run history

Every cycle including the ones that produced nothing: skipped for a low balance, or rejected because the plan broke a rule. Failures stay on the record.

GET /api/agent/runs

Per-transfer receipts

Each settled donation carries a transaction hash or provider receipt id, so a third party can confirm the transfer independently of anything this site says.

tx_hash / receipt_url

Controls

What stops it going wrong

The interesting failure modes here are financial, so the guards are structural rather than procedural.

Signed ingestion

Fee webhooks are verified with HMAC-SHA256 over the raw request body, compared in constant time. An unsigned or mismatched delivery is refused before it reaches the database.

Atomic accounting

The treasury debit and the ledger row are one transaction, and the debit is a conditional update that cannot take the balance below zero even under concurrent runs.

Layered guardrails

Operational safety is enforced in the prompt, again in application code, and again as a database constraint. Two of the three can fail without integrity breaking.

Bounded authority

The agent cannot raise its own limits. The floor, payout ratio and per-run ceiling live in configuration it never sees as writable, and manual triggers are behind an admin token.

For holders and observers

What gets reported, and when

There is no reporting cycle to wait for. The ledger is the report.

Cadence

Per run

Every cycle writes a run record the moment it starts, and closes it with an outcome — completed, skipped, rejected or failed.

Granularity

Per transfer

One ledger row per donation, with amount, recipient, country, category, provider, receipt and the agent's stated reasoning.

Latency

Immediate

Rows appear as soon as they commit. There is no reporting delay, no monthly roll-up, and no editorial pass between the decision and the record.

Retention

Append only

Ledger rows are never deleted through the API. A failed transfer stays visible as failed rather than being removed.

Roadmap

Shipped, and honestly not yet

Statuses here reflect the state of the code, not intent. Phase 3 is not done, and the page says so.

Phase 1Shipped
Fee ingestion and treasury ledger

Signed webhook, idempotent fee recording, atomic treasury accounting, and the public read endpoints behind the dashboard.

Phase 2Shipped
Autonomous allocation

The scheduled decision cycle, the strict tool schema, plan validation with a corrective retry, and the three-layer deterministic filter.

Phase 3In progress
Live disbursement rails

Transfers currently run against a simulated provider. The Giving Block adapter is scaffolded but deliberately unimplemented until credentials and a partner agreement are in place — it fails loudly rather than pretending to send.

Phase 4Planned
Independent attestation

Third-party confirmation that a recipient received what the ledger claims, plus periodic impact reporting tied back to individual transfers.

Questions

For investors and holders

Including the one most projects skip.

Risk and disclosure

Read this before you draw conclusions

  • Recipient selection depends on a language model, which can be wrong about an organisation's current status, capacity or effectiveness.
  • Live disbursement rails are not in production. Transfers currently settle against a simulated provider, and the ledger records which provider handled each row.
  • Fee revenue varies with network activity, so payout size and cadence vary with it. Nothing here guarantees a payout in any given period.
  • Impact is recorded as intent and transfer, not yet as independently verified outcome. Third-party attestation is Phase 4 and not shipped.
  • This is not an investment, a security, a fund or a deposit. No return is offered, promised or implied to anyone.

Watch it spend

Every run, every rejected plan and every settled transfer, with the reasoning the agent gave at the time.

Open the dashboard