| Cloud Storage HTTP/REST :24081 | Verified local workflows | Yes | community | service-data verified | - verified — buckets.create/list/delete
- verified — objects.upload/download/list/delete
- unsupported — iam, lifecycle policies, notifications: Production-only control-plane behavior; not applicable to local development.
| - [prod_only] IAM, lifecycle policies, and notifications not emulated in LocalCloud.
|
| Pub/Sub gRPC :24082 | Partial local emulation | Yes | community | volatile verified | - verified — topics.create/get/list/delete
- verified — subscriptions.create/get/list/delete
- verified — publish/pull/ack/modifyAckDeadline
- unsupported — schemas, snapshots, seek, dead-letter policy: The configured Pub/Sub gRPC endpoint fails unsupported schemas, snapshots, seek, and advanced subscription fields explicitly with UNIMPLEMENTED.
| - Schemas, snapshots, seek, dead-letter policy, filters, and other advanced subscription fields are not implemented on the configured endpoint.
- gcloud and console paths remain partial for advanced Pub/Sub workflows.
|
| Firestore gRPC :24083 | Partial local emulation | No | community | volatile verified | - partial — documents.create/read/update/delete: External emulator is available; seed and browser parity needs hardening.
- partial — queries/index behavior: Complex query/index parity is unverified.
| - Seed and browser parity is not fully hardened.
- Index/query behavior is unverified.
|
| Bigtable gRPC :24084 | Verified local workflows | Yes | pro | service-data release-unverified | - verified — instances/tables/families
- verified — row mutations and reads
- verified — cbt CLI compatibility
- verified — localcloud console data browser
- verified — data survives emulator restart
- verified — materialized views (CMVs)
- unsupported — snapshots and backups: All 10 snapshot/backup RPCs return codes.Unimplemented:
SnapshotTable, GetSnapshot, ListSnapshots, DeleteSnapshot,
CreateBackup, GetBackup, UpdateBackup, DeleteBackup, ListBackups, RestoreTable.
Also: CreateTableFromSnapshot, UndeleteTable.
- unsupported — IAM policy management: GetIamPolicy, SetIamPolicy, TestIamPermissions return codes.Unimplemented.
- verified — new proto methods return Unimplemented (no panics)
| - [prod_only] Single-node emulator by design; clusters, multi-region, replication require Google infrastructure.
- GoogleSQL queries (ExecuteQuery/PrepareQuery) not supported — data-plane uses HBase-style API only.
- Change streams, app profiles, and logical views are not implemented in the emulator.
- Session protocol (OpenTable/OpenAuthorizedView/OpenMaterializedView) not implemented — not needed for correctness.
|
| Spanner gRPC :24085 · HTTP/REST :24086 | Partial local emulation | Yes | pro | service-data release-unverified | - unknown — Native SQL, read, and streaming read: Change-stream reads use native ExecuteStreamingSql. Unary ExecuteSql intentionally retains the emulator's rejection of change-stream queries.
- unknown — Sessions, transactions, and batch DML: Existing native transaction and session behavior remains authoritative.
- unknown — Partition query/read and batch write: Existing native partition and batch-write behavior remains authoritative.
- unknown — Instance, configuration, and instance-partition administration: Existing native instance-admin behavior remains authoritative.
- unknown — Database administration and DDL: Existing native database-admin behavior remains authoritative.
- unknown — Instance and database IAM policies: Policies are stored durably and returned through native endpoints. Authorization remains intentionally permissive and TestIamPermissions returns requested permissions.
- unknown — Backup, copy, restore, and backup schedules: Backups and schedules use LevelDB-backed metadata and compatible long-running operations.
- unknown — Long-running operation lifecycle: Native operation polling and lifecycle behavior is shared by instance, database, backup, copy, and restore calls.
| - Pinned extended Spanner emulator image; the exact image and immutable digest come from `SPANNER_EMULATOR_IMAGE` in the root Dockerfile.
- Change-stream support matrix — native gRPC/REST ExecuteStreamingSql supported; official SDK clients through SPANNER_EMULATOR_HOST supported; LocalCloud SQL Editor through managed run APIs or cancellable /query/stream NDJSON supported; gcloud spanner databases execute-sql unsupported for change streams because it uses unary ExecuteSql.
|
| BigQuery HTTP/REST :24087 · gRPC :24088 | Partial local emulation | Yes | community | service-data release-unverified | - verified — datasets.create/list/delete
- verified — tables.create/list/delete
- partial — SELECT, JOIN, window functions, CTEs, PIVOT/UNPIVOT, MERGE: DuckDB-backed via SQLGlot transpiler. ~96% BigQuery SQL coverage, 175+ functions.
958 tests passing. Key gaps: GROUP BY ROLLUP/CUBE/GROUPING SETS, SEMI/ANTI JOIN,
BQML (clear error), AEAD encryption, KLL quantiles, graph queries, continuous queries.
⚠ Type coercion risk: DuckDB is permissive where BigQuery is strict — queries that
work locally may error in production. Division by zero returns Inf instead of error.
GEOGRAPHY: 12 ST_* functions with haversine approximation (not true geodesic).
- partial — DECLARE, SET, IF/WHILE/LOOP, BEGIN/EXCEPTION, CALL, EXECUTE IMMEDIATE: Full scripting interpreter with variable scoping, BREAK/CONTINUE, RAISE, transactions.
- partial — CREATE MATERIALIZED VIEW, auto-refresh: Supported in emulator with PARTITION BY, CLUSTER BY, OPTIONS.
- partial — query Parquet/CSV/JSON files (local + GCS): CREATE EXTERNAL TABLE with format/uris options. Object tables not supported.
- partial — gRPC Storage Read/Write API (AVRO + Arrow): gRPC endpoint on port 24088. ReadRows with streaming support.
- partial — INFORMATION_SCHEMA views: 11 views: COLUMNS, TABLES, SCHEMATA, PARTITIONS, VIEWS, ROUTINES, TABLE_OPTIONS, TABLE_STORAGE, JOBS_BY_*, COLUMN_FIELD_PATHS.
| - DuckDB type coercion is permissive where BigQuery is strict — queries accepted locally may error in production.
- Division by zero returns Inf/NaN instead of error; integer division returns int instead of FLOAT64.
- GROUP BY ROLLUP/CUBE/GROUPING SETS not supported.
- SEMI/ANTI JOIN syntax not supported (rely on EXISTS/NOT EXISTS transpile).
- BQML (CREATE MODEL, ML.PREDICT, ML.EVALUATE, etc.) returns clear error.
- AEAD encryption functions and KLL quantile functions not implemented.
- GEOGRAPHY functions use haversine approximation, not true WGS84 geodesic.
- BIGNUMERIC truncated to DECIMAL(38,9); FARM_FINGERPRINT requires pyfarmhash for correct values.
- Time travel (FOR SYSTEM_TIME AS OF), continuous queries, graph queries, search/vector indexes not supported.
- External object tables (OBJ.* functions) not supported.
|
| Google Sheets HTTP/REST :24080 | Partial local emulation | Yes | community | metadata verified | - partial — spreadsheets.values.get: Returns durable row-major values for one exact A1 range.
- partial — spreadsheets.values.batchGet: Returns durable values for repeated exact ranges query parameters.
| - Spreadsheet metadata, writes, formulas, range evaluation, OAuth, and production Sheets access are not emulated.
- Values are selected by exact stored A1 range and project scope.
|
| Secret Manager gRPC :24080 | Partial local emulation | Yes | community | service-data verified | - verified — secrets.create/list/get/delete
- verified — versions.add/access/list
- unsupported — rotation, CMEK, per-secret IAM: Rotation policies, customer-managed encryption keys, and per-secret IAM are not implemented.
| - [prod_only] Rotation and CMEK (customer-managed encryption keys).
- Per-secret IAM is not complete.
|
| Cloud Tasks gRPC :24080 | Partial local emulation | Yes | community | service-data verified | - partial — queues.create/list/delete: Facade-backed queue lifecycle exists.
- partial — tasks.create/list/delete: Dispatch and scheduling parity remain limited.
| - App Engine tasks and OAuth token generation are not complete.
|
| Cloud Scheduler gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - partial — jobs.create/list/get/delete/pause/resume: Cron scheduling and HTTP/Pub/Sub/App Engine targets exist for local workflows.
| - Timezone rules beyond cron-utils support are not fully verified.
|
| Cloud Functions (2nd Gen) gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - partial — functions.create/list/get/delete/update: Metadata CRUD and trigger routing exist; build/container execution is not emulated.
| - Build and container execution are metadata-only; use Functions Framework locally.
|
| AlloyDB gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - verified — clusters/instances.create/list/get/delete
| - [prod_only] PSC (Private Service Connect) and cross-region replication.
- Backup/restore is not complete.
|
| Dataproc gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - verified — clusters.create/list/get/delete
- partial — jobs submit/list/get: Cluster jobs run in the Dataproc runtime container; jobs without a cluster use ephemeral serverless containers. Execution requires Docker socket access and a compatible runtime image; otherwise only metadata paths are available.
| - Autoscaling and Kubernetes cluster mode are not complete.
- Runtime execution requires Docker socket access; without it, cluster metadata remains available but Spark/Hadoop processes are not started.
|
| Cloud IAM gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - partial — getIamPolicy/setIamPolicy/testIamPermissions: Permissive policy stub with local policy storage.
| - Role validation, conditions, and deny policies are not complete.
|
| Cloud Resource Manager HTTP/REST :24080 | Verified local workflows | Yes | community | metadata verified | - verified — projects.create/list/get/update/delete
| - [prod_only] Organization/folder hierarchy not modeled in LocalCloud.
|
| Service Usage HTTP/REST :24080 | Partial local emulation | Yes | community | stateless verified | - partial — services.enable/disable/list: Local service toggles are available; quota billing semantics are not complete.
| - Quotas and service entitlement behavior are stubs.
|
| Cloud Billing HTTP/REST :24080 | Partial local emulation | Yes | community | metadata verified | - partial — billing accounts and budgets CRUD: Local REST facade covers selected Terraform-oriented paths.
| - Real billing, budget enforcement, and cost export are not implemented.
|
| Cloud Logging gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - partial — write log entries and list/filter entries: Local ingestion exists; query/filter parity is limited.
| - Metrics, exclusions, audit logs, and production sink behavior are limited.
|
| Cloud Monitoring gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - partial — create/list time series and descriptors: Local metric storage exists; query parity is limited.
| - Alerting, uptime checks, and dashboards are partial.
|
| GKE gRPC :24080 · k3d :24092 | Partial local emulation | No | pro | metadata verified | - partial — clusters CRUD: Local facade exists for cluster metadata and k3d-oriented workflows.
- unsupported — node pools, autoscaling, upgrades: Production cluster management; local k3d provides the runtime cluster.
| - Kubernetes runtime parity depends on host runtime/k3d integration.
- [prod_only] Node pools, autoscaling, and upgrades (GCP-managed cluster autoscaler, regional instance groups).
|
| Compute Engine HTTP/REST :24080 | Partial local emulation | No | pro | metadata verified | - partial — instances.create/get/list/start/stop/delete: Docker-backed instance approximation exists when container runtime is available.
- unsupported — disks, snapshots, templates, networking: This operation is not available in LocalCloud.
| - [prod_only] Persistent disks and live migration (hypervisor-level storage/VM management).
- Snapshots, instance templates, and VPC networking are not yet emulated.
|
| Cloud Run gRPC :24080 | Partial local emulation | No | pro | metadata verified | - partial — services/revisions: Local facade exists for service metadata.
- unsupported — jobs: This operation is not available in LocalCloud.
- unsupported — custom domains, production routing: Production-only DNS and load-balancing features.
| - Container execution and routing require host runtime architecture.
- [prod_only] Custom domains and production routing (Google Front End load balancers, managed TLS).
|
| Memorystore (Redis/Valkey) RESP :24089 | Partial local emulation | Yes | community | service-data verified | - partial — RESP commands: Redis/Valkey-compatible data path is available.
- unsupported — Cloud Redis admin API: Cloud Redis Admin API is production control-plane; local Redis/Valkey data path is fully functional.
| - Pub/Sub, Lua, streams, and MULTI/EXEC are not supported.
|
| Cloud Workflows gRPC :24080 | Partial local emulation | Yes | community | metadata verified | - partial — workflow deploy/list/get/delete: Local facade and seed paths exist.
- partial — executions: Execution engine exists but connector/runtime parity needs expansion.
| - In-flight execution checkpointing is not durable across restart.
|
| Vertex AI HTTP/REST :24080 | Partial local emulation | No | pro | metadata verified | - partial — generateContent, streamGenerateContent, embedContent, countTokens: Deterministic local GenAI REST facade exists for selected flows.
- unsupported — models, tuning, batch prediction: This operation is not available in LocalCloud.
| - [prod_only] Model training and tuning (requires TPU/GPU clusters).
- Prediction endpoints and model management are out of current scope.
|
| Cloud KMS HTTP/REST :24080 | Partial local emulation | No | pro | metadata verified | - partial — key rings, crypto keys, versions: Local REST facade exists.
- partial — encrypt/decrypt/sign/verify: Crypto operation parity needs SDK and IAM tests.
| - [prod_only] HSM (physical FIPS 140-2 Level 3 hardware) and EKM (external key manager providers).
- Import jobs and Cloud HSM level enforcement are not implemented.
|
| Cloud SQL HTTP/REST :24080 · PostgreSQL :24090 · MySQL :24091 | Partial local emulation | Yes | community | service-data release-unverified | - partial — instances/databases/users: Local REST facade with PostgreSQL and MySQL 8.4 data planes.
- partial — MySQL 8.4 data plane: Shared, on-demand mysqld with logical schema isolation on port 24091.
- unsupported — replicas, backups, PSC: This operation is not available in LocalCloud.
| - [prod_only] Read replicas (cross-region replication) and PSC (Private Service Connect).
- MySQL instances share one on-demand MySQL 8.4.11 server; schemas and physical wire logins are deterministically isolated by project and instance.
- Backup/restore execution is not implemented.
|