CityCatalyst
Open Source carbon accounting for cities.
https://github.com/open-earth-foundation/citycatalyst
Category: Emissions
Sub Category: Carbon Intensity and Accounting
Keywords from Contributors
climate climate-change sustainability climate-action climate-change-api climate-data climate-targets climatechange nodejs-api reactjs-app
Last synced: about 8 hours ago
JSON representation
Repository metadata
Open Source carbon accounting for cities
- Host: GitHub
- URL: https://github.com/open-earth-foundation/citycatalyst
- Owner: Open-Earth-Foundation
- License: agpl-3.0
- Created: 2023-05-11T18:23:55.000Z (about 3 years ago)
- Default Branch: develop
- Last Pushed: 2026-06-08T08:57:47.000Z (5 days ago)
- Last Synced: 2026-06-08T09:25:08.504Z (5 days ago)
- Language: TypeScript
- Size: 1.05 GB
- Stars: 39
- Watchers: 6
- Forks: 10
- Open Issues: 38
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
README.md
CityCatalyst
The open-source climate journey platform for cities — from measuring emissions to unlocking climate finance.
CityCatalyst helps cities act on climate change without advanced technical skills.
It begins with a GPC-compliant greenhouse-gas inventory, then guides cities through
the full climate journey: assessing climate risk, prioritizing high-impact actions,
and preparing finance-ready projects — AI-assisted and open source throughout.
Built by the Open Earth Foundation.
The climate journey
CityCatalyst organizes its tools into four stages (the Journey Navigator):
| Stage | What cities do | Core modules |
|---|---|---|
| Assess & Analyze | Measure emissions, assess climate risk | GHGI, CCRA |
| Plan | Prioritize and sequence high-impact actions | HIAP (Actions & Plans) |
| Implement | Turn plans into bankable projects | (partner modules) |
| Monitor, Evaluate & Report | Track and report progress | (partner modules) |
Core modules (production):
- GHGI — Greenhouse-gas inventory aligned with the Global Protocol for Community-Scale (GPC). Auto-loads verified datasets and guides cities to a solid emissions baseline.
- CCRA — Climate Risk & Vulnerability Assessment. Identify exposed infrastructure and develop adaptation strategies.
- HIAP — High-Impact Actions & Plans. Identify, prioritize, and co-create practical, implementation-ready climate action plans.
The Journey Navigator also hosts a growing catalog of partner/experimental modules
(e.g. the Flourish climate-finance suite, NBS & Rooftop-Solar project builders, geospatial
risk maps). These are independently hosted and surfaced in-app via the module catalog.
(The Journey Navigator is gated behind the JN_ENABLED feature flag.)
Architecture
CityCatalyst is a monorepo of cooperating services:
| Path | Service | Stack |
|---|---|---|
app/ |
Main web app — UI + REST API (/api/v1) |
Next.js / TypeScript |
global-api/ |
Global emissions, risk & action data API | Python / FastAPI / PostGIS |
climate-advisor/ |
Conversational AI advisor | Python / FastAPI / pgvector |
hiap/, hiap-meed/ |
Action prioritization & plan generation | Python / FastAPI |
api-demo/ |
Example OAuth API client | Static / Nginx |
k8s/ |
Kubernetes manifests (dev / test / prod) | YAML |
Data standard: GPC (Global Protocol for Community-Scale GHG Inventories).
Integrating with CityCatalyst
CityCatalyst is built to be extended and integrated:
- REST API — documented via OpenAPI (
/api/v1), see the API wiki. - OAuth 2.0 — external apps authenticate via a standards-based authorization server (RFC 8414 discovery, PKCE).
- Client SDKs — generated from the OpenAPI spec (TypeScript & Python) via CI. (Generated in CI; not yet published to a public registry.)
- MCP server — a Model Context Protocol server exposes CityCatalyst tools (inventories, emissions, cities, action plans, risk) to AI agents.
Quick start
Full setup instructions live in app/README.md. In short:
git clone https://github.com/Open-Earth-Foundation/CityCatalyst.git
cd CityCatalyst/app
npm install
bash scripts/start-db.sh # starts a local Postgres via Docker
cp env.example .env # configure environment
npm run db:migrate && npm run db:seed
npm run dev
Deployment
Containerized (Docker) and deployed to AWS EKS via GitHub Actions, with images
published to the GitHub Container Registry. Branch-based promotion: develop → dev,
main → test, version tags (vX.Y.Z) → production. See .github/workflows/
and k8s/.
Documentation
Contributing
Contributions are welcome. Please open an issue to discuss substantial changes before
submitting a PR. Code is formatted with Prettier (TS) / Black (Python); PRs must pass
tests (Jest, Playwright, pytest), linting, and the OpenAPI lint check.
License
GNU Affero General Public License v3.0 — © Open Earth Foundation,
a nonprofit public benefit corporation from California, USA.
Owner metadata
- Name: Open Earth Foundation
- Login: Open-Earth-Foundation
- Email: info@openearth.org
- Kind: organization
- Description: Open Source software to fight climate change
- Website: https://openearth.org/
- Location:
- Twitter: Open__Earth
- Company:
- Icon url: https://avatars.githubusercontent.com/u/71936582?v=4
- Repositories: 13
- Last ynced at: 2023-03-06T13:49:31.472Z
- Profile URL: https://github.com/Open-Earth-Foundation
GitHub Events
Total
- Delete event: 1035
- Member event: 1
- Pull request event: 2050
- Fork event: 1
- Issues event: 6
- Watch event: 9
- Issue comment event: 521
- Push event: 2636
- Gollum event: 8
- Pull request review comment event: 1762
- Pull request review event: 2269
- Create event: 1232
Last Year
- Delete event: 523
- Member event: 1
- Pull request event: 968
- Fork event: 1
- Issues event: 6
- Watch event: 2
- Issue comment event: 211
- Push event: 1302
- Gollum event: 1
- Pull request review event: 841
- Pull request review comment event: 711
- Create event: 558
Committers metadata
Last synced: 2 days ago
Total Commits: 8,542
Total Committers: 29
Avg Commits per committer: 294.552
Development Distribution Score (DDS): 0.733
Commits in past year: 2,442
Committers in past year: 16
Avg Commits per committer in past year: 152.625
Development Distribution Score (DDS) in past year: 0.831
| Name | Commits | |
|---|---|---|
| Milan Gruner | m****r@g****m | 2282 |
| Evan Prodromou | e****n@o****g | 895 |
| Cephas Chapa | c****a@g****m | 768 |
| dependabot[bot] | 4****] | 755 |
| isaacbello | i****0@g****m | 679 |
| Mirco Rudolph | m****h@g****m | 532 |
| Cephas Chapa | c****s@o****m | 516 |
| Mirco Rudolph | m****o@o****g | 476 |
| thehighestprimenumber | t****r@g****m | 299 |
| mfonsecaOEF | m****n@o****g | 274 |
| Marina Olivella | m****a@o****g | 248 |
| piotrnowakowski | p****i@g****m | 214 |
| github-actions[bot] | g****] | 154 |
| Amanda Eames | a****a@o****g | 134 |
| Luke Gloege | l****e@g****m | 127 |
| Amanda Eames | a****s@A****l | 80 |
| piotrnowakowski | p****i@o****g | 20 |
| Amanda Eames | a****s@A****r | 15 |
| Amanda Eames | a****s@A****e | 15 |
| Praveen Singh | r****3@g****m | 12 |
| Pablo Borges | 9****o | 12 |
| Amanda | 1****s | 11 |
| mac | m****c@M****l | 7 |
| copilot-swe-agent[bot] | 1****t | 7 |
| Saviobosco | J****e@y****m | 4 |
| Admin | a****n@A****l | 2 |
| AyinawuT | 1****T | 2 |
| Martin Wainstein | m****n@o****g | 1 |
| gretaOEF | 1****F | 1 |
Committer domains:
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 16
Total pull requests: 2,946
Average time to close issues: 4 days
Average time to close pull requests: 4 days
Total issue authors: 7
Total pull request authors: 24
Average comments per issue: 0.38
Average comments per pull request: 0.38
Merged pull request: 2,146
Bot issues: 2
Bot pull requests: 1,239
Past year issues: 4
Past year pull requests: 751
Past year average time to close issues: 11 days
Past year average time to close pull requests: 3 days
Past year issue authors: 3
Past year pull request authors: 15
Past year average comments per issue: 1.0
Past year average comments per pull request: 0.41
Past year merged pull request: 461
Past year bot issues: 1
Past year bot pull requests: 357
Top Issue Authors
- thehighestprimenumber (8)
- isaaccodekill (2)
- dependabot[bot] (2)
- lemilonkh (1)
- cephaschapa (1)
- jim-toth (1)
- evanp (1)
Top Pull Request Authors
- dependabot[bot] (1,004)
- thehighestprimenumber (407)
- cephaschapa (332)
- lemilonkh (329)
- isaaccodekill (267)
- github-actions[bot] (235)
- amanda-eames (118)
- mfonsecaOEF (91)
- evanp (60)
- mircorudolph (53)
- piotrnowakowski (14)
- pablo-ibco (10)
- lgloege (9)
- praveensinghrajput23 (3)
- Copilot (2)
Top Issue Labels
- javascript (2)
- dependencies (2)
- enhancement (1)
- korbit-code-analysis (1)
- bug (1)
Top Pull Request Labels
- dependencies (1,008)
- javascript (598)
- python (383)
- bug (148)
- ui (84)
- python:uv (71)
- api (54)
- enhancement (53)
- korbit-code-analysis (50)
- refactoring (16)
- Visual bug (12)
- data (10)
- testing (8)
- ui feature (7)
- database (5)
- e2e (4)
- tooling (4)
- documentation (3)
- codex (3)
- translation (2)
- deployment (2)
- i18n (2)
- major component library upgrade (2)
- feature_request (1)
Package metadata
- Total packages: 2
- Total downloads: unknown
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 638
proxy.golang.org: github.com/open-earth-foundation/citycatalyst
- Homepage:
- Documentation: https://pkg.go.dev/github.com/open-earth-foundation/citycatalyst#section-documentation
- Licenses: agpl-3.0
- Latest release: v1.17.2 (published 2 days ago)
- Last Synced: 2026-06-11T01:12:49.300Z (2 days ago)
- Versions: 319
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
proxy.golang.org: github.com/Open-Earth-Foundation/CityCatalyst
- Homepage:
- Documentation: https://pkg.go.dev/github.com/Open-Earth-Foundation/CityCatalyst#section-documentation
- Licenses: agpl-3.0
- Latest release: v1.17.2 (published 2 days ago)
- Last Synced: 2026-06-11T01:12:14.468Z (2 days ago)
- Versions: 319
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
Dependencies
- annotated-doc 0.0.4
- annotated-types 0.7.0
- anyio 4.12.1
- certifi 2026.1.4
- click 8.3.1
- colorama 0.4.6
- fastapi 0.128.0
- h11 0.16.0
- hiap-meed 0.1.0
- httpcore 1.0.9
- httpx 0.28.1
- idna 3.11
- iniconfig 2.3.0
- packaging 26.0
- pluggy 1.6.0
- pydantic 2.12.5
- pydantic-core 2.41.5
- pygments 2.19.2
- pytest 9.0.2
- python-dotenv 1.2.1
- starlette 0.50.0
- typing-extensions 4.15.0
- typing-inspection 0.4.2
- uvicorn 0.40.0
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- astral-sh/setup-uv v3 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- astral-sh/setup-uv v3 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- fastapi >=0.128.0
- python-dotenv >=1.2.1
- uvicorn >=0.40.0
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- astral-sh/setup-uv v3 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- python 3.12-slim build
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- astral-sh/setup-uv v3 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- actions/checkout v4 composite
- docker/login-action 65b78e6e13532edd9afa3aa52ac7964289d1a9c1 composite
- actions/checkout v4 composite
- docker/login-action 65b78e6e13532edd9afa3aa52ac7964289d1a9c1 composite
- nginx alpine build
- python 3.12-slim build
- base latest build
- node 22-alpine build
- python 3.11-slim build
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- codecov/codecov-action v4 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- dorny/test-reporter v1 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- 185 dependencies
- SQLAlchemy ==2.0.44
- aiohttp ==3.13.
- alembic ==1.17.2
- black ==25.12.0
- dns-cache ==0.3.
- fastapi ==0.123.0
- flake8 ==7.3.0
- fsspec ==2025.
- geojson ==3.2.
- geopandas >=0.12,<1.2
- httpx ==0.28.1
- mypy ==1.19.0
- nest_asyncio ==1.6.
- openclimate ==0.1.
- openpyxl ==3.1.
- osmnx ==2.0.6
- pandas ==2.3.3
- psycopg2-binary ==2.9.11
- pydantic-settings ==2.
- pyproj ==3.7.
- pytest ==9.0.0
- pytest-cov ==7.0.0
- rioxarray >=0.15.0,<1.0
- scipy ==1.16.
- shapely ==2.1.2
- tqdm ==4.67.
- uvicorn ==0.38.0
- xarray ==2025.
- xlrd ==2.0.
- boto3 >=1.40.45
- chromadb >=1.1.0
- fastapi >=0.118.0
- httpx >=0.28.1
- langchain >=0.3.27
- langchain-chroma >=1.0.0
- langchain-community >=0.3.30
- langchain-core >=0.3.77
- langchain-openai >=0.3.34
- langchain-text-splitters >=0.3.11
- langgraph >=0.6.8
- langgraph-checkpoint >=2.1.1
- langgraph-prebuilt >=0.6.4
- langgraph-sdk >=0.2.9
- langsmith >=0.4.31
- limits >=5.6.0
- openai >=2.0.0
- pandas >=2.3.3
- pydantic >=2.11.9
- pydantic-settings >=2.11.0
- pytest >=8.4.2
- python-dotenv >=1.1.1
- requests >=2.32.5
- scikit-learn >=1.7.2
- slowapi >=0.1.9
- tiktoken >=0.11.0
- uvicorn [standard]>=0.37.0
- xgboost >=3.0.5
- 189 dependencies
- ./.github/actions/slack-notify * composite
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/upload-artifact v4 composite
- codecov/codecov-action v4.0.1 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- 2274 dependencies
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- astral-sh/setup-uv v3 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- python 3.11 build
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- codecov/codecov-action v4 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- dorny/test-reporter v1 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/upload-artifact v4 composite
- codecov/codecov-action v4.0.1 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- actions/checkout v4 composite
- actions/download-artifact v4 composite
- actions/setup-java v4 composite
- actions/setup-node v4 composite
- actions/setup-python v5 composite
- actions/upload-artifact v4 composite
- openapi-generators/openapitools-generator-action v1 composite
- ruby/setup-ruby v1 composite
- @types/k6 ^1.1.1 development
- actions/checkout v2 composite
- actions/checkout v4 composite
- docker/build-push-action v5 composite
- docker/login-action v1 composite
- docker/setup-buildx-action v1 composite
- @eslint/eslintrc ^3.3.3 development
- @jest/globals ^29.7.0 development
- @playwright/test ^1.52.0 development
- @stoplight/spectral-cli ^6.15.0 development
- @storybook/nextjs ^8.0.8 development
- @storybook/react ^8.2.9 development
- @types/bcrypt ^6.0.0 development
- @types/geojson ^7946.0.16 development
- @types/http-errors ^2.0.4 development
- @types/js-cookie ^3.0.6 development
- @types/jsonwebtoken ^9.0.6 development
- @types/lodash ^4.17.17 development
- @types/node 24.0.13 development
- @types/nodemailer ^7.0.4 development
- @types/pg ^8.15.4 development
- @types/react ^19.1.8 development
- @types/react-table ^7.7.20 development
- @types/swagger-ui-react ^5.18.0 development
- @types/uuid ^9.0.8 development
- @types/wellknown ^0.5.8 development
- eslint ^9.39.1 development
- eslint-config-next ^15.5.6 development
- eslint-plugin-i18next ^6.1.3 development
- fetch-mock ^11.1.5 development
- jest ^29.7.0 development
- jest-environment-jsdom ^30.2.0 development
- open-cli ^8.0.0 development
- prettier ^3.6.2 development
- semver ^7.7.3 development
- sequelize-cli ^6.6.2 development
- start-server-and-test ^2.0.12 development
- storybook ^8.2.7 development
- ts-jest ^29.4.1 development
- ts-node ^10.9.2 development
- tsx ^4.21.0 development
- typescript 5.8.3 development
- @ai-sdk/openai ^1.3.22
- @aws-sdk/client-s3 ^3.802.0
- @chakra-ui/react ^3.8.0
- @emotion/react ^11.14.0
- @highlight-run/next ^7.9.38
- @hookform/resolvers ^5.1.1
- @huggingface/inference ^4.7.1
- @isaacs/ttlcache ^1.4.1
- @next/env ^14.2.5
- @nivo/bar ^0.99.0
- @nivo/line ^0.99.0
- @nivo/tooltip ^0.99.0
- @react-email/components ^1.0.1
- @react-pdf/renderer ^4.3.0
- @reduxjs/toolkit ^2.2.7
- @tanstack/react-table ^8.21.2
- accept-language ^3.0.20
- ai ^3.4.7
- bcrypt ^6.0.0
- chakra-react-select ^6.1.1
- csv-parse ^5.6.0
- csv-stringify ^6.5.2
- date-fns ^4.1.0
- date-fns-tz ^3.2.0
- decimal.js ^10.4.3
- dotenv ^16.5.0
- exceljs ^4.4.0
- fetch-blob ^4.0.0
- framer-motion ^12.12.1
- fuse.js ^7.1.0
- geojson ^0.5.0
- http-errors ^2.0.0
- i18next ^25.5.2
- i18next-browser-languagedetector ^8.1.0
- i18next-resources-to-backend ^1.2.1
- js-cookie ^3.0.5
- jsonwebtoken ^9.0.2
- jspdf ^3.0.3
- jspdf-autotable ^5.0.2
- katex ^0.16.25
- lodash ^4.17.21
- nanoid ^5.1.6
- next ^15.5.2
- next-auth ^4.24.13
- next-runtime-env ^3.3.0
- next-swagger-doc ^0.4.1
- next-themes ^0.4.6
- nodemailer ^7.0.11
- openai ^4.68.1
- pg ^8.16.0
- pigeon-maps ^0.22.1
- pino ^9.6.0
- posthog-js ^1.259.0
- react 18.3.1
- react-circle-flags ^0.0.24
- react-dom 18.2.0
- react-email ^4.2.8
- react-hook-form ^7.58.0
- react-i18next ^16.3.5
- react-icons ^5.5.0
- react-intersection-observer ^9.16.0
- react-latex-next ^3.0.0
- react-markdown ^10.1.0
- react-redux ^9.2.0
- react-table ^7.8.0
- remark-gfm ^4.0.1
- sequelize ^6.37.7
- swagger-ui-react ^5.29.0
- uuid ^9.0.1
- wellknown ^0.5.0
- zod ^3.25.76
- @types/react ^19.1.8 development
- @types/react-dom ^19.1.6 development
- rimraf ^6.1.0 development
- typescript ^5.9.2 development
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- astral-sh/setup-uv v3 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/upload-artifact v4 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/setup-buildx-action v3 composite
- PyPDF2 ==3.0.1
- PyYAML ==6.0.3
- SQLAlchemy ==2.0.44
- aiosqlite ==0.21.0
- alembic ==1.17.0
- asyncpg ==0.30.0
- fastapi ==0.119.1
- httpx ==0.28.1
- langchain ==0.3.27
- langchain-openai ==0.3.35
- langchain-text-splitters ==0.3.11
- langsmith ==0.4.33
- numpy ==2.3.4
- openai ==2.6.1
- openai-agents ==0.4.2
- pgvector ==0.4.1
- psycopg2-binary ==2.9.11
- pydantic ==2.12.3
- python-dotenv ==1.1.1
- tiktoken ==0.12.0
- uvicorn ==0.38.0
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- codecov/codecov-action v4 composite
- docker/login-action v3 composite
- dorny/test-reporter v1 composite
- EnricoMi/publish-unit-test-result-action v2 composite
- actions/checkout v4 composite
- actions/checkout v3 composite
- actions/setup-python v2 composite
- actions/upload-artifact v4 composite
- codecov/codecov-action v4.0.1 composite
- docker/login-action 65b78e6e13532edd9afa3aa52ac7964289d1a9c1 composite
- @types/k6 1.1.1 development
Score: -Infinity