Local-first · Open source · no cloud

All your accounts.
One place.

Every account you have — cloud bills, subscriptions, your phone and utilities, even your health record — lives behind its own login. Butin gathers them all into one dashboard on your own machine, readable without logging in. Your session, fetched headless, kept on your disk.

macOS (Apple Silicon & Intel)Windows 10/11Linux (AppImage & deb)
All in one place No login to open it Downloaded & yours
butin — Overview
Butin's Overview — cross-service spending totals, a combined monthly-spend chart, what changed, and a by-service table.
Connects to the services you already use
AWSVideotronGitHubClaudeVercelCarnet SantéAirbnbHydro-SolutionChatGPT+32 more →

The problem

Your accounts live in separate dashboards.

Spend, usage, invoices, and records are scattered across dozens of services. Many offer no public API and no export option, leaving you signing in one by one or copying numbers into spreadsheets. Butin connects directly to your accounts to pull your real data into one unified local view.

Without ButinScattered & manual
AWS · Vercel · CloudflareSeparate consoles & auth
Stripe · GitHub · SaaSIndividual invoices & receipts
Telecom · Utilities · RecordsNo API, manual PDF downloads
With ButinOne unified local view

How it works

You sign in once. Butin keeps every account in one place.

Sign in01

Capture the session

A normal login window opens. You sign in by hand — password, MFA, SSO, magic link. Butin captures the session and stores it, encrypted, on your machine. It stays valid as long as the service keeps it — minutes for a bank, days for some.

While it's live02

Fetch headless

While the session holds, Butin reads the same endpoints your browser would — quietly from Node, with no browser window left open. Refresh anytime on demand. When it expires, you simply sign back in.

Keep it03

Keep your data

Every fetch becomes a clean dashboard — spend, usage, members, documents — normalized and saved on your disk, with history. The data is yours even after the session's gone.

On-demand fetching. No export wizard or background browser process required — opening a service queries its endpoints using your stored session. When the session expires, reconnect with one click.

See it

One dashboard for everything you pay for.

The Overview rolls every service into one place — total spend, a combined monthly chart, what moved this month. Open any service for the full detail: billing, usage, members, invoices — each drawn by one generic renderer, so a phone bill and a cloud invoice read the same way.

butin — Claude
A Claude service page in Butin — Summary, Billing, Usage, and Members tabs with spend stat cards and a monthly-spend chart.

Every service, the same shape. Tabs for billing, usage, and members — normalized from whatever the service actually renders under the hood.

butin — Videotron
A Videotron telecom account in Butin — internet and mobile bills with a monthly-spend chart, in Canadian dollars.

Not just dev tools. A phone bill, a water-heater rental, a bank statement — the same billing view, in the account's own currency, with the history the service doesn't keep.

Beyond simple billing

Full structured records, exported locally.

Butin isn't limited to billing summaries. For services with no public API — like the carnet-sante health portal — plugins extract complete records: profiles, medications, appointments, lab results, and document PDFs directly to your disk. No third-party servers, no intermediaries.

No API required

If a browser can view it, a plugin can extract it. Butin supports services that lack a public API or restrict access behind enterprise tiers.

Complete records

Beyond high-level totals: usage breakdowns, member rosters, invoices, and exported documents are saved as clean local files.

41+ services, one model

Cloud infrastructure, developer platforms, telecom, subscriptions, and AI providers — unified under one plugin contract.

Your data. Your machine.

The account it reads is always your own.

Butin only ever reads data that is already yours — in your own authenticated session, on your own hardware. Nothing leaves your machine, and no server takes custody of your credentials.

Your data, brought home.

Your session

It replays the requests your own browser makes. No middleman, no shared credentials.

Your machine

Captured data lives under ~/butin, encrypted with your OS keychain. There is no server.

No custody

No account, no sync, nowhere to send your numbers. We run nothing that can read them.

Open source

The codebase is open source (Apache-2.0 & MIT). Read it, fork it, write your own plugins. Trust the architecture.

Security & privacy architecture

OS Keychain Encryption

Credentials and sessions are encrypted using Electron's safeStorage: Apple Keychain on macOS, Windows DPAPI, and Secret Service on Linux.

Zero Background Daemons

Pull-only architecture. Nothing runs in the background when the app is closed; all fetches are initiated by you when you open or refresh.

Zero Telemetry

No tracking scripts, external analytics, or phone-home pings. All retrieved data stays strictly within ~/butin/ on your computer.

For developers

A service is a small plugin.

41 services already ship, each a small, mostly-declarative plugin: describe how to log in and what to fetch, return normalized data, and one generic renderer draws the dashboard. Most plugins ship no UI at all.

plugins/stripe/main.ts
export const stripe = definePlugin(({
 meta: { id: 'stripe', name: 'Stripe' },
 session: { loginUrl: 'https://dashboard.stripe.com' },
 auth: { kind: 'cookie' },
 capabilities: [
    { id: 'billing',
      collect: async ({ client }) =>
        billing.result({ /* … */ }) }
 ]
})

Their session expires. Your data doesn't.

Free · Open source · macOS · Windows · Linux