merge-to-earn · rust · git-native

Turn code merges into
sustainable open-source funding

Dedalo reads merge history straight from your repository, scores who contributed what, and distributes a funding round to contributor wallets — taking a protocol fee that flows to the network's Open Collective, so the network funds itself instead of depending on grants.

 dedalo plan --amount 1000
$ dedalo plan --amount 1000

Round ded106bd7281  2 merges on main → af3141b5
Gross 1000 USDC

PAYEE            KIND         WALLET           SHARE  AMOUNT
ada              contributor  0xAdA00000000…  41.25%   412.5
bea              contributor  0xBeA00000000…  41.25%   412.5
treasury         treasury     0x22222222222…  15.00%     150
demo-collective  protocol     0x33333333333…   2.50%      25

  contributors               825 USDC
  treasury                   150 USDC
  protocol fee                25 USDC  → open collective

warning: 1 contributor earned a share but has no wallet:
  Cy <cy@example.com>  140 points
  their share was redistributed; link them with `dedalo identity link`
01 · pipeline

Four stages, one boundary that matters

Everything that decides who gets what happens offline and deterministically. Only the last stage touches the outside world.

01 · GIT Read the merges merge commits, their commits, their diffs 02 · ATTRIBUTION Score the work integer weights from rules you declare 03 · PAYOUT Build the plan fees off the top, rest split by weight 04 · SETTLEMENT Execute it re-verify, then broadcast PURE · OFFLINE · REPRODUCIBLE SIDE EFFECTS same repo + same config = same plan id
02 · treasury

Where a round goes

Cut in a fixed order, off the top, with the numbers under your control.

1000 USDC ROUND
  • 82.50%contributors, by attribution weight — and any rounding dust lands here
  • 15.00%your project's own reserve, growing with its activity
  • 2.50%protocol fee to the network's Open Collective — how the network funds itself
03 · invariants

What the code guarantees

Not claims — gates. Each of these is held down by property tests that hammer it with thousands of generated rounds.

no floating point in money

Every amount is an integer count of base units. Percentages are basis points. Nothing rounds by accident.

splits conserve the total

Largest-remainder distribution: a round sums back to exactly what you funded. No dust created, none stranded.

fees round down

Rounding remainders land in the contributor pool, never in the protocol's pocket.

one wallet, one transfer

A contributor with several git emails is paid once, so a batch cannot double-send.

nobody is silently dropped

Someone who earned a share but has no wallet on file is reported in the plan, not quietly removed.

rounds are idempotent

The ledger refuses to settle the same plan twice, so a retried CI job cannot pay twice.

04 · install

Install

Every archive ships a SHA-256 checksum and signed build provenance. The installer refuses to run without verifying the checksum first.

 script
curl -fsSL https://raw.githubusercontent.com/\
dedalo-org/dedalo/main/install.sh | sh
 cargo
cargo install dedalo --locked
# or, without compiling:
cargo binstall dedalo

Or run it in CI

A payout belongs in the pipeline that merged the code.

 .github/workflows/payouts.yml
- uses: actions/checkout@v5
  with:
    fetch-depth: 0        # attribution needs the full history

- uses: dedalo-org/dedalo@v0
  with:
    command: plan
    amount: "1000"
05 · documentation

Read before you trust it

Two places, and the split is deliberate. The handbook is written; the API reference is generated per released version, so it matches the crate you installed rather than whatever main looked like this morning.

 handbook
quickstart          a round in ten minutes
money              integers, and what is proved
dedalo.toml        every key, every default
verification       proved vs. merely tested
threat model       who could make it pay wrong
auditing           check a project yourself
 api reference
# signatures and types, per release
docs.rs/dedalo

# the library, without the CLI
[dependencies]
dedalo = { version = "0.1",
           default-features = false }
06 · status

Project status

⚠ on-chain broadcasting is not live yet

The pipeline from git history to a verified, reproducible payout plan is implemented and tested end to end. What is missing is the last step, and it is missing on purpose.

Dedalo holds no signing key. A round is deposited once against a Merkle root and contributors claim; dedalo propose prints the exact transactions, with their calldata, and people execute them from a multisig. The vault’s rules are pure Rust with a test per way it refuses, and the deployable is an Arbitrum Stylus binding around them — but it is unaudited and undeployed, so nothing has moved a coin.

07 · projects

What else is here

Everything in the organisation is open source and MIT licensed.

 dedalo
The protocol: attribution, payout plans,
the hash-chained ledger, the claim contract,
and the CLI and GitHub Action that drive them.

rust · handbook · api · source
 dedalo-nvim
Attribution where the code is. Shows who
earns from the lines in front of you, read
from the same history a payout comes from.

lua · early · source
08 · contribute

Contributing pays

Dedalo is open source, MIT licensed, and built by the community. If you care about Rust, developer tooling and sustainable open-source economics, contributions are welcome — and they are literally what the project pays out for.

Or fund it

A project whose subject is transparent funding should be transparently funded. The collective's ledger is public, so where the money went is a page you can read rather than a claim.

It is also where the protocol fee is designed to flow: every round a project settles routes 2.5% here, which is what “the network funds itself” means. Nothing flows there yet — settlement is not live.