Back to the catalog

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.

More