Ask what you earn across every income stream: Stripe, affiliates, app stores, ads, manual.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
One screen for every dollar you make. Self-hosted, privacy-first revenue tracker that aggregates all your income streams β Stripe, affiliates, marketplaces, ads, and manual entries β into a single real-time dashboard, in USD, by day / month / year.
A free, self-hostable Baremetrics alternative for indie hackers who run a portfolio of small income streams, not just one SaaS.
Screenshots use demo data.
Your revenue data lives in your own Supabase project. No third party ever sees your numbers. Connect your own keys, deploy free on Vercel in ~5 minutes.
There's a hosted version at app.incomeos.dev β same dashboard, same MCP, nothing to deploy. Sign in with an email link, connect Stripe read-only in one click, done in about a minute.
Free to start (unlimited manual sources, all charts, sync on demand). Pro is $9/mo with a 14-day trial and adds automatic daily sync, so the numbers are already fresh when you open it.
Self-hosting stays free and fully featured β the hosted version exists for people who'd rather not maintain infrastructure, not to cripple this repo.
Tools like Baremetrics or ProfitWell are great β if you have one Stripe account and $129+/mo to spare. But modern indie hackers earn from a dozen tiny places: a SaaS on Stripe, an Amazon affiliate link, a marketplace actor, some AdSense, a Gumroad template, a sponsorship. Nobody aggregates the long tail.
IncomeOS does:
#1 SaaS, #2 Amazon, #3 Sponsorshipβ¦supabase/migrations/0001_init.sql
in the SQL editor.npm run dev locally). Set the env vars from
.env.example:
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEYDASHBOARD_TOKEN (your login password), CRON_SECRETSTRIPE_SECRET_KEY (optional β a read-only restricted key is recommended)DASHBOARD_TOKEN, hit Sync. Stripe products
appear as sources automatically; add the rest with β Add source.A daily Vercel Cron (vercel.json) keeps Stripe fresh; the Sync button
pulls on demand.
| Source | Status | How |
|---|---|---|
| Stripe | β automatic | Net revenue, grouped per product, zero config |
| Amazon / affiliates | βοΈ manual | Enter the monthly total (one click) |
| Marketplaces, ads, sponsorships | βοΈ manual | Same β numbered sources |
| Gumroad, LemonSqueezy, AdSense, Plaid (bank) | π οΈ roadmap | PRs welcome |
Each source can hold a link to its own dashboard β clicking the card opens it.
IncomeOS ships an MCP server so any AI agent (Claude, Cursorβ¦) can read your income on demand β "how much did I make this month across everything?"
Tools: get_income_summary, get_sources, get_month, log_monthly_income.
See mcp/. Your data stays in your own instance β the MCP just calls
its API with your token.
Next.js 16 (App Router) Β· Supabase (Postgres) Β· Recharts Β· Tailwind v4 Β· Vercel. No multi-tenant server, no SaaS lock-in β it's just your data and your keys.
MIT β see LICENSE. Built for indie hackers, by indie hackers.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/incomeos)<a href="https://allmcps.com/mcp/incomeos"><img src="https://allmcps.com/api/badge/incomeos?style=directory" alt="Incomeos on AllMCPs" /></a>