Self-hosted cloud and AI cost tracking. Your data stays in your own storage bucket.
770
One ledger for every cloud and AI bill, kept as plain Parquet in an object-storage bucket you own. The AI assistant you already use (Claude, ChatGPT, Claude Code, Codex, Cursor) connects over MCP and asks typed, read-only questions: totals, breakdowns, what changed, what is weird, what is wasted, where the month lands. No bundled model. Apache-2.0.
On a small Linux server reachable on ports 80 and 443:
docker run -d --name mcb --restart unless-stopped -p 80:80 -p 443:443 -v mcb:/data \
-e [email protected] -e MCB_ADMIN_PASSWORD=change-me \
rustywasm/mycloudbills
Then docker logs mcb prints the address, https://<public-ip>.sslip.io, with a
Let's Encrypt certificate it fetches and renews itself. In the browser: connect your
bucket (Cloudflare R2, AWS S3, any S3-compatible store, Google Cloud Storage or
Azure Blob), sign in, and Get started hands you the one line that connects your AI.
The image holds the mcb binary and the signed connector catalog, nothing else.
Everything it knows lives in your bucket. The mcb volume holds only the master key,
the bucket settings and the certificate. To upgrade, pull and recreate the container.
AWS (CUR 2.0), Azure, GCP, OpenAI, Anthropic, OpenRouter, Fireworks, Together, Cartesia, Deepgram, Cloudflare, Vercel, GitHub, Datadog, DigitalOcean, Confluent, Twilio, flat subscriptions, and a demo source with no cr sandboxed WASM collector that can only reach the hosts its manifest declares.
| Variable | What it does |
|---|---|
MCB_DOMAIN | a DNS name pointed at the server, instead of <ip>.sslip.io |
MCB_ADMIN_EMAIL, MCB_ADMIN_PASSWORD | the first adount exists, ignored after |
MCB_BUCKET_URL, MCB_BUCKET_KEY, MCB_BUCKET_SECRET, MCB_BUCKET_ENDPOINT, MCB_BUCKET_REGION | the bucket, given up front instead |
| of through the dialog | |
MCB_MASTER_KEY | 64 hex chars that encrypt connector secrets, instead of a generated one |
MCB_ACME_EMAIL | where Let's Encrypt sends expiry ma |
Images are published for linux/amd64 and linux/arm64
Content type
Image
Digest
sha256:9ef0c4665…
Size
56.7 MB
Last updated
5 days ago
docker pull rustywasm/mycloudbills