Start
Overview
Point a coin’s creator fees at a GitHub repo, a YouTube channel, a Twitch or a Kick stream. The money waits until the owner proves the handle.
Every trade of a pump.fun coin pays a creator fee. Normally it goes to one wallet, chosen at launch by whoever launched. That is a poor fit for a very common case: a fan launches a coin for a streamer, a channel or a project that has no idea it exists. Either the fees go to the fan, or they go nowhere useful.
Upstream makes the target of the fees an account on another platform. The fees sit in a vault. When the owner of that account shows up, they prove it, and the vault pays out everything that was waiting. From then on, fees stream straight to them.
The problem
- The people who earn attention (streamers, maintainers, channels) are rarely the people who launch coins about them.
- Sending fees to "the right person" needs a way to prove who the right person is. A wallet address does not prove it. A bio does.
- If nobody claims, the money should not vanish or be taken by the first person who asks.
The idea in five lines
- Attach. A coin is created with a vault as its fee destination and an account as its target:
twitch.tv/name,kick.com/name,youtube.com/@nameorgithub.com/owner/repo. - Wait. Fees accrue in escrow. Nobody can take them.
- Prove. The owner asks for a code. The code is derived from their wallet, so it can only ever pay that wallet. They paste it somewhere only they can edit: a bio, a description, a file in the repo.
- Attest. Independent attesters read the public page, see the code, and sign what they saw.
- Release. With enough signatures the vault pays out what was waiting and binds the wallet. If nobody ever claims, the fees go back after a delay the coin chose at launch.
The wallet is part of what the code is computed from. If someone copies a code off the page and asks for the fees to go to their own wallet, the vault computes a different code for that wallet and refuses. See Proof of handle.
Four platforms, one rule
| Platform | Where the code goes | Read live from a page |
|---|---|---|
| GitHub | file .upstream in the repo, or the account bio | yes |
| YouTube | channel description | with an API key (the CLI needs none) |
| Twitch | channel bio | yes |
| Kick | channel bio | yes, but Kick may block some browsers |
pump.fun supports GitHub accounts for fee sharing in its own app, and its program has a social fee mechanism in which one claim authority key signs every release. Upstream covers GitHub too, adds the three streaming platforms, and replaces the single signer with independent attesters. See pump.fun integration.
Where it stands
The engine, the attester network software, the CLI and an on-chain vault program are written. The program is tested on a local Solana runtime, including a differential test that runs random histories through the program and through the JS engine and requires identical results to the lamport, and an integration test against the real pump.fun programs on a fork of mainnet. All of it is listed, with numbers, in the verification report.
What does not exist yet: an independent audit, a deployment to a real cluster, and attesters run by independent operators. The vault on this website is the JS engine running in your browser, and the attesters on it are demo keys. See Limits and risks.