mrkeyoor.com_
Fri 14 Aug 16:46 UTC
Self-Hostedevaluationupdated 14 Aug 2026

cloud-cost-optimization-hub

Cloud Cost Observability and Optimization Hub, or CCOH, is a self-hosted dashboard intended to combine AWS, Google Cloud, and Azure spending with savings recommendations. The current v0.1 code is closer to a multi-cloud interface prototype: AWS reads real Cost Explorer data, while Google Cloud, Azure, and the recommendation engine still generate fixed sample records.

Verdict

CCOH is an appealing shell for a cloud-cost product, not a trustworthy optimization platform yet. The real AWS ingestion is a useful start, but mock GCP and Azure data, canned recommendations, mismatched setup instructions, and plain JSONB credential storage are disqualifying for production. Fork it as a learning project or foundation only if the missing integrations are the work you intend to do.

Setup1/5Documented make targets are absent and Compose omits both application services
Docs2/5Clear architecture summary, but setup and production claims do not match files
Community2/5Some contributor work exists, with limited recent main-branch movement
Maturity1/5No releases, two mock providers, sample advice, and core operations missing

Who it’s for

Contributors who want a small Go, Next.js, PostgreSQL, and Redis codebase for learning FinOps application architecture.
Teams building a proof of concept that need an attractive multi-cloud dashboard populated with demo data.
Go developers prepared to implement real GCP, Azure, scheduling, security, and recommendation integrations themselves.
Evaluators who can isolate the service from real credentials and treat its output as non-authoritative.

Who it’s NOT for

FinOps teams expecting real three-cloud billing: gcp_service.go and azure_service.go explicitly generate fixed daily sample costs, and issue #5 asks for the missing GCP Billing API integration.
Anyone expecting evidence-based rightsizing or idle-resource advice: the recommendation engine inserts hard-coded EC2, RDS, EBS, and Elastic IP examples and leaves real AWS API work as a placeholder.
Operators following the advertised one-command setup: the README says make up starts the application, but the Makefile has no up target and Docker Compose defines only PostgreSQL and Redis, not the backend or frontend.
Security-sensitive teams ready to enter cloud secrets: account credentials are serialized into a JSONB database column, while the security guide merely recommends encryption at rest and does not document an implemented encryption mechanism.
Production deployments expecting the stated Helm route, background ingestion, or dependency-aware health checks: no Helm chart appears in the repository tree, and open issues #14 and #11 request the latter two capabilities.

Setup reality

The README's five-line quick start does not match the checked-in automation. Copying .env.example is straightforward, but its example database name and credentials also differ from the PostgreSQL values in Docker Compose. make up, make down, make logs, and make dev-deps are documented yet absent from the Makefile; Compose starts only TimescaleDB and Redis. A successful local trial therefore requires starting those dependencies, reconciling configuration, building or running the Go backend and Next.js frontend separately, and accepting that two providers and all recommendations are sample data. There is no tagged release or published production deployment path to fall back on.

A convincing interface around an unfinished engine

Cloud Cost Observability and Optimization Hub presents a familiar FinOps promise: connect Amazon Web Services, Google Cloud, and Azure, see spending together, catch surprises, and act on savings recommendations. The stack is sensible for that job. A Go API built with Gin sits behind a Next.js dashboard, PostgreSQL with TimescaleDB stores time-series costs, and Redis is intended for background work. User registration and cloud-account screens make the repository look more complete than a collection of billing scripts.

The central problem is that the interface runs ahead of the implementation. The README labels the feature set v0.1 and openly includes mock cost data, but also says the architecture is ready for real three-cloud integration. In the actual services, only AWS calls a billing API. Google Cloud and Azure each create 30 daily records with fixed service names and fixed dollar amounts. Those values can make charts move, but they cannot tell anyone what either cloud account costs.

This distinction should decide the evaluation. CCOH is a starter application for contributors, demos, and product exploration. It is not a system a finance or platform team should use to explain a bill.

AWS is real, recommendations are not

The AWS service loads a submitted access key and secret key into the AWS SDK and asks Cost Explorer for the previous 30 days. It fetches daily unblended costs grouped by service, then separately fetches a monthly service summary and writes both sets into PostgreSQL. This is genuine integration, although it is still a thin one. Regions are recorded as global, and the code does not perform resource-level utilization analysis.

Repeated ingestion also deserves caution. The current main-branch service bulk-inserts fetched records. Open pull request #26 says repeated syncs were appending duplicates because the table lacked a suitable uniqueness rule, inflating dashboard totals. That pull request changes writes to a transactional replacement and also fixes stale sync timestamps, but it remains open. Its author notes that manual synchronization is synchronous and uses a background context with no request timeout. The checked-in AWS code confirms those context calls.

The savings layer is more plainly illustrative. It processes AWS accounts only, deletes their previous recommendations, then inserts fixed examples for a t3.large instance, an r5.xlarge database, an unused volume, and an unassociated IP address. Instance identifiers, utilization, costs, and projected savings are constants. A separate method named for real recommendations contains only comments describing future EC2, CloudWatch, RDS, EBS, and address queries. The unit tests validate arithmetic and repository behavior, not the truth of an optimization model.

Multi-cloud means placeholders today

The Google Cloud service checks that a project ID exists, then writes a compute-engine row worth $25.50 for each of the past 30 days. The Azure service does the same with a compute row worth $35.75. Submitted private keys, client emails, tenant IDs, and client secrets are not used to retrieve billing data. Issue #5 explicitly requests replacement of GCP's mock records with the Cloud Billing API. There is no equivalent completed Azure path.

This is risky because sample data sits behind normal-looking account and dashboard flows. A casual user could interpret a rendered chart as synchronized spend. The README does identify mock data, but the product must make that boundary unmistakable inside the interface before real accounts are invited. The safest evaluation uses invented credentials and treats every non-AWS number as demonstration content.

Automatic freshness is missing as well. Open issue #14 asks for a daily ingestion job across active accounts. Without it, data arrives when an account is added or a manual action triggers synchronization. Issue #19 asks the dashboard to show when each provider last synced, and an open pull request implements that display. A cost dashboard without visible and dependable freshness can produce precise-looking but stale decisions.

The quick start does not run as written

The README says to copy .env.example and run make up, promising that the database, backend, and frontend will start. The Makefile has only build, backend, frontend, and test targets. Docker Compose defines PostgreSQL and Redis only. There are no backend or frontend services in that file, and no Helm chart appears in the repository tree despite the architecture section naming Helm for production.

Configuration needs manual reconciliation too. The sample environment points at a cloud_costs database with generic credentials, while Compose creates a ccoh database with a different user and password. An experienced developer can correct these values, start dependencies, run the Go service, and run Next.js separately. That is not one-command setup, and the missing documentation matters because the application handles powerful cloud credentials.

The credential model should stop a production trial. Cloud account secrets are marshalled into a JSONB field and the migration defines that column directly. The security policy recommends running privately, preferring IAM roles, encrypting credentials at rest, and performing audits, but the model does not show an encryption boundary before database persistence. AWS currently requires static credentials in this flow. Until a reviewed secret-storage design exists, do not enter keys with meaningful access.

Health and the sensible use case

The last push was July 13, 2026, about a month before this review. GitHub reported 19 combined open issues and pull requests, and there is no tagged release. Contributor pull requests in July added tests and proposed interface improvements, but several stacked changes remain open while main has not moved. The repository contains an Apache 2.0 license file, even though GitHub's license field did not return a recognized SPDX identifier.

CCOH can still be useful as a teaching codebase. Its separation of accounts, cost records, recommendations, API handlers, and provider services gives contributors clear places to replace fixtures with real integrations. The dashboard offers a visible payoff for backend work. As software to operate, however, it needs honest setup instructions, secret encryption, real GCP and Azure ingestion, measured recommendations, scheduled refreshes, trustworthy health checks, and releases. Until then, the right description is promising scaffold, not cloud-cost authority.

Alternatives

ProjectWhat it isPick it when
OpenCostA mature open-source system for measuring and allocating Kubernetes cloud costs.pick this instead when Kubernetes allocation accuracy and an established cost model matter more than a general three-cloud dashboard.
InfracostA cost estimator that puts cloud price changes into infrastructure-as-code workflows.pick this instead when engineers need cost feedback before Terraform changes are merged.
Cloud CustodianA policy engine for finding and acting on waste, security, and governance problems across clouds.pick this instead when automated resource policies and remediation are more important than a unified dashboard.

What people are saying

  1. [github-trending] oseghalep/cloud-cost-optimization-hub

Sources

  1. CCOH README
  2. AWS cost ingestion service
  3. GCP mock cost service
  4. Azure mock cost service
  5. Recommendation engine
  6. Issue 14: daily cost ingestion job
  7. Pull request 26: duplicate sync records and unbounded requests
  8. Cloud account credential model