$0.00 raised to fund the software that runs the world.
Give back to the open-source software that supports your world with a single command. No donation required, just a status line in your agent CLI or IDE.
curl -fsSL https://obrigado.dev/install.sh | sh && obrigado installWe stand on the shoulders of giants
Most of the code your project runs was written by someone else. A lockfile often lists hundreds of packages, and you picked a small fraction of them yourself. The rest came in as dependencies, and many of them are maintained by one or two people who are not paid for it. AI coding agents make it easy to use a package without ever reading its code, so fewer people end up in its issue tracker, which is where most contributors start. That leaves the same one or two people doing more of the work, still unpaid.
Questions
Where does the money actually go?
What do I get out of it?
What's the best way to financially support open source projects?
What does this cost advertisers?
What does install actually touch?
statusLine in your agent's own settings, written through the interface that agent documents. Nothing else, and no file belonging to another program gets read or rewritten. It also asks four targeting questions, all defaulting to no, and prints the JSON your answers produce. Uninstall puts it back.What do you collect about me?
By default: the package names in your lockfile, your agent and OS, and whether anyone is at the keyboard. Never your hostname, your repo name, or a file path. It sits under a random install ID, not an account. Your lockfile counts toward the totals we publish either way; no package is named there until 5 separate installs report it.
Opt in and advertisers can also aim at those packages, your country, your IP range, and what your agent has been reading. This is the exact JSON a render sends, either way:
obrigado privacy
{
"deps": [
{ "p": "npm:react", "d": 0 },
{ "p": "npm:scheduler", "d": 1 }
],
"private_repo": false,
"signals": {
"ci": false,
"tty": true,
"display": true,
"agent": "claude-code",
"agent_version": "2.1.4",
"client_version": "0.1.0",
"surface_version": "0.1.0",
"os": "linux",
"sharing": {
"packages": false,
"region": false,
"network": false,
"activity": false
},
"docker": false,
"container": false
}
}
{
"deps": [
{ "p": "npm:react", "d": 0 },
{ "p": "npm:scheduler", "d": 1 }
],
"private_repo": false,
"signals": {
"ci": false,
"tty": true,
"display": true,
"agent": "claude-code",
"agent_version": "2.1.4",
"client_version": "0.1.0",
"surface_version": "0.1.0",
"os": "linux",
"sharing": {
"packages": true,
"region": true,
"network": true,
"activity": true
},
"retrieved": ["npm:react"],
"docker": false,
"container": false
}
}
The sharing block is permission, not information. Your country and IP range come off the connection, get matched, and are never stored.
Once the line is shown, a second request confirms it. No prompt, no message, no filename, no model, no cost.
{
"events": [
{
"type": "impression",
"impression_id": "8f1c0e2a-5d77-4a31-9b0e-2c6f1d4e8a55",
"nonce": "3Qk1r0Zp8vJt2mXq5Lw9Aw==",
"signals": {
"timing": { "session_s": 1840, "api_s": 412 }
}
}
]
}
{
"events": [
{
"type": "impression",
"impression_id": "8f1c0e2a-5d77-4a31-9b0e-2c6f1d4e8a55",
"nonce": "3Qk1r0Zp8vJt2mXq5Lw9Aw==",
"signals": {
"timing": { "session_s": 1840, "api_s": 412 },
"retrieved": ["npm:react"]
}
}
]
}A society grows great when old men plant trees
in whose shade they shall never sit.