Sign inSign up

rustywasm/mycloudbills

By rustywasm

•Updated 5 days ago

Self-hosted cloud and AI cost tracking. Your data stays in your own storage bucket.

Image
Monitoring & observability
0

770

rustywasm/mycloudbills repository overview

⁠MyCloudBills

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.

⁠Run it

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.

⁠Connectors

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.

⁠Settings (all optional)

VariableWhat it does
MCB_DOMAINa DNS name pointed at the server, instead of <ip>.sslip.io
MCB_ADMIN_EMAIL, MCB_ADMIN_PASSWORDthe first adount exists, ignored after
MCB_BUCKET_URL, MCB_BUCKET_KEY, MCB_BUCKET_SECRET, MCB_BUCKET_ENDPOINT, MCB_BUCKET_REGIONthe bucket, given up front instead
of through the dialog
MCB_MASTER_KEY64 hex chars that encrypt connector secrets, instead of a generated one
MCB_ACME_EMAILwhere Let's Encrypt sends expiry ma

Images are published for linux/amd64 and linux/arm64

Tag summary

Content type

Image

Digest

sha256:9ef0c4665…

Size

56.7 MB

Last updated

5 days ago

docker pull rustywasm/mycloudbills