io.github.Perufitlife/incomeos
Ask what you earn across every income stream: Stripe, affiliates, app stores, ads, manual.
Open source Open in the app JSON README (API)
About
Ask what you earn across every income stream: Stripe, affiliates, app stores, ads, manual.
Details
- Kind
- MCP servers
- Topic
- Finance & crypto
- Publisher
- perufitlife
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.2.2
- Stars
- 1
- Last push
- 2026-08-11T10:12:15Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-08-29 03:02:10
- Updated
- 2026-08-29 03:02:10
- Origin id
io.github.Perufitlife/incomeos
README
# ๐ฐ IncomeOS โ one screen for every dollar you make
Most revenue dashboards assume you have one product on one Stripe account.
IncomeOS assumes what's actually true for an indie hacker: a SaaS on Stripe, an
Amazon affiliate link, a marketplace actor, a mobile app, a sponsorship โ I track
**25 sources, and most of them make under $10 a month**. Nothing adds them up.
**โ [See it running on my real numbers](https://app.incomeos.dev/p/renzo)** โ
my own income, live, not demo data.
<p align="center">
<img alt="IncomeOS dashboard โ every income stream on one screen" src="docs/dashboard.png" width="820">
</p>
Self-hosted and MIT. Your revenue lives in **your** Supabase project โ no third
party ever sees your numbers. Deploy free on Vercel in about five minutes, or
use the [hosted version](https://app.incomeos.dev) if you'd rather not maintain
infrastructure.
## Ask your AI how much you made
This is the part nothing else does. IncomeOS ships an **MCP server**, so Claude,
Cursor, or any MCP client can read your income on demand:
> *"How much did I make this month across everything?"*
> *"Which source grew the most since May?"*
> *"Log $180 for Amazon affiliates in July."*
```json
{
"mcpServers": {
"incomeos": {
"command": "npx",
"args": ["-y", "incomeos-mcp"],
"env": { "INCOMEOS_URL": "https://your-incomeos.vercel.app", "INCOMEOS_TOKEN": "your-token" }
}
}
}
```
Tools: `get_income_summary`, `get_sources`, `get_month`, `log_monthly_income`.
See [`mcp/`](./mcp). The MCP talks to *your* instance with *your* token โ the
data never leaves it.
## What it does
- ๐ข **Numbered sources** โ `#1 SaaS`, `#2 Amazon`, `#3 Sponsorship`โฆ
- โก **Stripe on autopilot** โ net revenue after fees, auto-grouped per product.
- โ๏ธ **Everything else in 10 seconds** โ one monthly total per source. The long
tail has no API and never will; typing it beats not tracking it.
- ๐
**Day / month / year**, with pro-rated averages so monthly-only sources
still show an honest "avg per day".
- ๐ **Month-over-month trend** per stream, and ๐ฏ **goals** with live progress.
<p align="center">
<img alt="Income sources โ Stripe products alongside manual sources" src="docs/sources.png" width="820">
</p>
<p align="center"><sub>Dashboard screenshots use demo data. The public page above is real.</sub></p>
## Quickstart (~5 min)
1. **Create a Supabase project** (free) and run `supabase/migrations/0001_init.sql`
in the SQL editor.
2. **Deploy to Vercel** (or `npm run dev`) with the env vars from
[`.env.example`](./.env.example): `SUPABASE_URL`,
`SUPABASE_SERVICE_ROLE_KEY`, `DASHBOARD_TOKEN` (your password), `CRON_SECRET`,
and optionally `STRIPE_SECRET_KEY` (a read-only restricted key is plenty).
3. **Open it, sign in, hit Sync.** Stripe products show up as sources on their
own; add the rest with **โ Add source**.
A daily Vercel Cron keeps Stripe fresh; the **Sync** button pulls on demand.
## Connectors
| Source | Status | How |
| --- | --- | --- |
| **Stripe** | โ
automatic | Net revenue, grouped per product, zero config |
| Amazon / affiliates | โ๏ธ manual | Monthly total, one click โ no API exists |
| Marketplaces, ads, sponsorships | โ๏ธ manual | Same, as numbered sources |
| Gumroad, Lemon Squeezy, Paddle, Ko-fi, RevenueCat | ๐ ๏ธ roadmap | PRs welcome |
Every source can hold a link to its own dashboard โ clicking the card opens it.
## Self-hosted vs hosted
This repo is the self-hosted build: Stripe, manual sources, all the charts, goals,
and the MCP. Free forever, no feature held back to sell you something.
[app.incomeos.dev](https://app.incomeos.dev) is the hosted build, and it's ahead
of this repo on a few things I run for myself: RevenueCat sync, a weekly email
digest, the public page linked at the top, and email-link sign-in instead of a
shared password. Free tier covers unlimited manual sources, every chart, and sync
on demand; **Pro is $9/mo** and adds automatic daily sync.
If you'd rather not maintain infrastructure, use the hosted one. If you'd rather
own your database, clone this. Both are the same dashboard.
## Tech
Next.js 16 (App Router) ยท Supabase (Postgres) ยท Recharts ยท Tailwind v4 ยท Vercel.
## Roadmap
- [x] Income MCP โ ask your agent what you made
- [ ] More connectors (Gumroad, Lemon Squeezy, Paddle, Ko-fi, RevenueCat)
- [ ] Port the hosted extras back here (digest, public page)
- [ ] CSV import / export
## License
MIT โ see [LICENSE](./LICENSE).
---
If you track income across more than one place, a โญ helps other people find this.