Skip to content

Repository files navigation

devcloud

Local cloud service emulator for development and E2E inspection.

devcloud runs a local dashboard plus compatible development endpoints for Mail, S3, GCS, DynamoDB, BigQuery, SQS, Google Cloud Pub/Sub, Redshift, and Redis. It is designed for deterministic local tests and manual inspection, not for production workloads or full cloud-provider parity.

Quick Start

Initialize local configuration and start all enabled services:

cargo run -p devcloud-orchestrator -- init
cargo run -p devcloud-orchestrator -- up

Open the dashboard:

http://127.0.0.1:18025/
http://127.0.0.1:18025/dashboard/

Default local endpoints:

ServiceEndpointDashboard
Mail SMTP127.0.0.1:11025http://127.0.0.1:18025/dashboard/mail
S3http://127.0.0.1:14566http://127.0.0.1:18025/dashboard/s3
GCShttp://127.0.0.1:14443http://127.0.0.1:18025/dashboard/gcs
DynamoDBhttp://127.0.0.1:18000http://127.0.0.1:18025/dashboard/dynamodb
BigQueryhttp://127.0.0.1:19050http://127.0.0.1:18025/dashboard/bigquery
SQShttp://127.0.0.1:19324http://127.0.0.1:18025/dashboard/sqs
Pub/Sub gRPC127.0.0.1:18085http://127.0.0.1:18025/dashboard/pubsub
Pub/Sub RESThttp://127.0.0.1:18086http://127.0.0.1:18025/dashboard/pubsub
Redshift SQL127.0.0.1:15439http://127.0.0.1:18025/dashboard/redshift
Redshift APIhttp://127.0.0.1:19099http://127.0.0.1:18025/dashboard/redshift
Redisredis://127.0.0.1:16379http://127.0.0.1:18025/dashboard/redis
Application Auto Scalinghttp://127.0.0.1:18030http://127.0.0.1:18025/dashboard/applicationautoscaling

Useful commands:

cargo run -p devcloud-orchestrator -- help
cargo run -p devcloud-orchestrator -- init
cargo run -p devcloud-orchestrator -- up
cargo run -p devcloud-orchestrator -- dashboard
cargo run -p devcloud-orchestrator -- reset

BigQuery Dashboard Management

/dashboard/bigquery includes a compact local management console for BigQuery development workflows. It keeps the existing catalog browser for projects, datasets, tables, rows, schemas, and jobs, and adds a SQL query runner with useLegacySql=false, dry run, max results, result table, selected result JSON, and job reference.

The dashboard can create local datasets and tables and insert local table rows through guarded datasets.insert, tables.insert, and tabledata.insertAll flows. Guided forms cover common fields, raw JSON mode is available for request-shape testing, and the row editor validates JSON before calling insertAll while showing partial insert errors.

Dashboard API clients can also start local BigQuery jobs.insert workflows through /api/bigquery/projects/{projectId}/jobs, including GCS-backed load/import and extract/export jobs that use devcloud GCS gs:// URIs.

Safety boundaries: dashboard mutations go through /api/bigquery/* or the local BigQuery REST API path, never direct storage calls. The UI does not persist or log row payloads, credentials, Authorization headers, bearer tokens, or full request bodies. When BigQuery is disabled, query and mutation controls remain unavailable.

Dashboard Frontend

The dashboard frontend source lives in web/dashboard/. The Vite build output is written to services/dashboard/assets/react, which the Rust dashboard crate embeds at compile time.

cd web/dashboard
npm install
npm run build

Do not edit files under services/dashboard/assets/react by hand; rebuild the React app instead.

Configuration

Configuration lives at .devcloud/config.yaml. Runtime data is stored under .devcloud/data by default.

project: devserver:
smtpPort: 11025mailHttpPort: 11080dashboardPort: 18025eventRelayPort: 18027s3Port: 14566gcsPort: 14443dynamodbPort: 18000bigqueryPort: 19050sqsPort: 19324pubsubGrpcPort: 18085pubsubRestPort: 18086redshiftPort: 15439redshiftAPIPort: 19099redisPort: 16379redisHttpPort: 16380appAutoScalingPort: 18030auth:
smtp:
mode: relaxeduser: devpassword: devs3:
mode: relaxedaccessKeyId: devsecretAccessKey: devgcs:
mode: relaxedproject: devclouddynamodb:
mode: relaxedaccessKeyId: devsecretAccessKey: devbigquery:
mode: relaxedproject: devcloudbearerToken: devsqs:
mode: relaxedaccessKeyId: devsecretAccessKey: devaccountId: "000000000000"pubsub:
mode: relaxedprojectID: devcloudbearerToken: devredshift:
mode: relaxeduser: devpassword: devaccessKeyId: devsecretAccessKey: devaccountId: "000000000000"redis:
mode: relaxedpassword: ""appAutoScaling:
mode: relaxedaccessKeyId: devsecretAccessKey: devaccountId: "000000000000"storage:
path: .devcloud/dataservices:
mail:
enabled: truemaxMessageBytes: 10485760s3:
enabled: trueregion: us-east-1pathStyle: truevirtualHostStyle: falsemaxObjectBytes: 5368709120multipart:
minPartBytes: 5242880gcs:
enabled: trueproject: devcloudlocation: USdynamodb:
enabled: trueregion: us-east-1billingMode: PAY_PER_REQUESTmaxItemBytes: 400000maxTables: 256bigquery:
enabled: trueproject: devcloudlocation: USmaxRowsPerTable: 1000000maxRequestBytes: 10485760query:
maxResultRows: 10000maxExecutionSeconds: 30defaultUseLegacySql: falsesqs:
enabled: trueregion: us-east-1queueUrlHost: 127.0.0.1maxQueues: 256maxMessageBytes: 1048576maxReceiveBatchSize: 10defaultVisibilityTimeoutSeconds: 30defaultDelaySeconds: 0defaultMessageRetentionSeconds: 345600defaultReceiveWaitTimeSeconds: 0schedulerIntervalSeconds: 1pubsub:
enabled: trueproject: devclouddataDir: .devcloud/data/pubsubmessageDataDir: .devcloud/data/messagedefaultAckDeadlineSeconds: 10messageRetentionSeconds: 604800maxAckDeadlineSeconds: 600maxPullMessages: 1000pullWaitTimeoutSeconds: 1enableREST: trueenableStreamingPull: trueenablePush: falseredshift:
enabled: trueregion: us-east-1clusterIdentifier: devclouddatabase: devdataDir: redshiftnodeType: dc2.largenumberOfNodes: 1maxStatementBytes: 16777216backend:
kind: postgresmode: managedmanaged: trueexternalDsn: ""dataAPI:
enabled: truemaxResultBytes: 524288000maxResultRows: 10000statementRetentionSeconds: 86400sessionRetentionSeconds: 86400sql:
enableExtendedProtocol: falsemaxResultRows: 10000defaultSearchPath: publiccopyUnload:
enableLocalS3: truemaxInputRowBytes: 4194304redis:
enabled: truemode: managedbinaryPath: ""externalUrl: ""dataDir: redismaxMemoryMB: 256appendOnly: falseappAutoScaling:
enabled: trueregion: us-east-1

Support Matrix

Legend:

ValueMeaning
YesImplemented and covered by tests or E2E smoke checks.
PartialUseful local subset exists, but behavior is not complete provider parity.
NoNot implemented. Requests may fail, be ignored, or return a compatibility error.

Service Availability

CapabilityMailS3GCSDynamoDBBigQuerySQSPub/SubRedshiftRedisApp Auto Scaling
Local endpointYesYesYesYesYesYesYesYesYesYes
Dashboard viewYesYesYesYesYesYesYesYesYesYes
Dashboard mutation actionsPartialPartialPartialPartialPartialPartialYesYesPartialNo
Persistent local storageYesYesYesYesYesYesYesYesYesYes
Configurable portYesYesYesYesYesYesYesYesYesYes
Enable/disable via configYesYesYesYesYesYesYesYesYesYes
Local relaxed auth modeN/AYesYesYesYesYesYesYesYesYes
Strict cloud-grade auth/IAMNoPartialNoPartialNoPartialNoPartialPartialPartial

Mail

FeatureStatusNotes
SMTP receiveYesSupports local inbound SMTP for development.
HELO / EHLO, MAIL FROM, RCPT TO, DATA, RSET, NOOP, QUITYesCore SMTP smoke path.
Message parsingYesParses headers, text body, HTML body, and attachments.
Raw RFC 5322 sourceYesAvailable through the dashboard API.
Dashboard inboxYesInspect messages and raw source.
Delete messagesYesSingle-message and clear-all paths are available through dashboard API.
Outbound relayNodevcloud is an inbox emulator, not an SMTP relay.
SMTP AUTHNoDefault auth.smtp.mode is off.
TLS / STARTTLSNoLocal plaintext development endpoint only.
IMAP / POP3NoNot implemented.

S3-Compatible API

FeatureStatusNotes
Path-style bucket/object routesYesDefault route model.
Virtual-host style routesPartial{bucket}.localhost Host-header requests route to the same local bucket handlers; path-style remains the default.
List bucketsYesGET /.
Create, head, list, delete bucketYesEmpty-bucket delete is supported.
Get bucket locationYesReturns configured region.
Put, head, get, delete objectYesIncludes metadata and content headers.
Range GETYesSupports byte ranges.
ListObjectsV2YesPrefix listing is covered.
CopyObjectYesSupports copy and metadata replacement.
Content-MD5 validationYesInvalid and mismatched digests return S3-style errors.
Multipart uploadYesCreate/upload/list/complete/abort local multipart flows.
Presigned URL validationYesCovered for local SigV4 GET.
AWS SigV4 header authPartialRelaxed mode is default; strict mode validates local credentials.
ACLs, bucket policy, IAMPartialBucket policy and bucket/object ACL metadata endpoints are supported locally, including versionId-aware object ACL metadata; IAM enforcement is not implemented.
VersioningPartialBucket versioning, generated and null version IDs, version-aware get/delete/copy-source, delete markers, multipart-complete version IDs/ETags, and local ListObjectVersions with key/version markers are supported.
LifecyclePartialBucket lifecycle metadata endpoints are supported; Enabled expiration rules for current objects are applied locally on S3 reads/lists.
NotificationsPartialBucket notification configuration metadata, including EventBridge metadata, is supported; matching local object create/delete flows append local event records.
SSE/KMSPartialSSE-S3 and SSE-KMS request metadata is stored locally and exposed through object read/write response headers; real KMS and SSE-C are not implemented.
ReplicationPartialBucket replication configuration metadata is supported; enabled prefix rules replicate local object write/copy/multipart-complete flows and enabled delete marker replication to existing local destination buckets.
Object LockPartialBucket object lock configuration, object retention/legal-hold metadata, response headers, local delete guards, and governance retention bypass are supported.
S3 SelectPartialMinimal SelectObjectContent supports SELECT * FROM S3Object for CSV and JSON Lines with eventstream responses; filtering and projections are not implemented.
Inventory / analyticsPartialBucket inventory and analytics configuration metadata endpoints are supported locally; CSV-format enabled inventory configs generate deterministic local reports under bucket storage.

GCS-Compatible JSON API

FeatureStatusNotes
JSON API bucket routesYes/storage/v1/b....
Create, get, list, delete bucketYesEmpty-bucket delete is supported.
Object media uploadYesuploadType=media.
Object multipart uploadYesuploadType=multipart.
Object resumable uploadYesSession start and final upload are supported.
Object metadata get/list/patch/deleteYesIncludes generation and metageneration fields.
Object media downloadYes/download/storage/v1/... and alt=media.
Range downloadYesSupports byte ranges.
Copy, rewrite, composeYesLocal object-copy workflows.
PreconditionsYesGeneration/metageneration mismatch returns 412.
Pagination and prefix filtersPartialUseful local subset for object listing.
OAuth bearer validationPartialLocal relaxed modes only; no real Google IAM validation.
XML APINoJSON API subset only.
IAM/ACLs, retention, lifecycleNoNot implemented.
Pub/Sub notifications, signed URLsNoNot implemented.

BigQuery-Compatible REST API

FeatureStatusNotes
REST v2 project/dataset/table routesYesLocal catalog resources persist under .devcloud/data/bigquery.
Table schema and row APIsYestables.insert, tables.get/list/patch/delete, tabledata.insertAll, and tabledata.list.
Partitioning and clustering metadataYesTime/range partitioning and clustering fields round-trip in table metadata.
View metadata and query executionPartialView table resources persist query metadata and can be queried through the local SELECT subset.
Routine metadataPartialroutines.insert/list/get/patch/update/delete persist local UDF/procedure metadata; routines are not executable.
Jobs APIYesQuery, query destination tables, load, copy, extract, get, list, cancel, and result workflows are covered locally.
GoogleSQL query executionPartialDeterministic local subset for common SELECT workflows; unsupported syntax fails closed.
Google Cloud BigQuery client librariesPartialLocal dataset/table/row/query compatibility workflows are covered through Rust E2E gates with endpoint override.
IAM policy endpointsPartialLocal policy shape is supported; no real Google IAM enforcement.
BigQuery Storage API, BI Engine, MLNoNot implemented.

DynamoDB-Compatible API

FeatureStatusNotes
AWS JSON 1.0 endpointYesUses X-Amz-Target: DynamoDB_20120810.*.
List/Create/Describe/Update/DeleteTableYesTables become ACTIVE immediately.
AttributeValue shapesYesSupports string, number, binary, bool, null, map, list, and sets.
PutItem/GetItem/UpdateItem/DeleteItemYesIncludes condition expression and return value subsets.
Query and ScanYesSupports key conditions, pagination, filters, and projections for local use.
Global secondary indexesPartialQueryable local index state for supported projection paths.
Local secondary indexesPartialMetadata is accepted; behavior is not full DynamoDB parity.
BatchGetItem / BatchWriteItemYesLocal batch subset.
TransactGetItems / TransactWriteItemsYesLocal transaction subset.
PartiQL ExecuteStatement / BatchExecuteStatement / ExecuteTransactionPartialSupported statement subset; unsupported PartiQL is rejected.
TTLYesTTL metadata and expiration are supported locally.
StreamsPartialStream metadata, shard iterators, and record reads exist for local inspection.
Backups and restorePartialLocal backup metadata and restore flow.
Tags and resource policiesPartialLocal metadata only; no IAM enforcement.
DescribeLimits / DescribeEndpointsYesLocal compatibility responses.
AWS SigV4 header authPartialRelaxed mode is default; strict mode validates local credentials.
DAX, global tables, autoscalingNoNot implemented.
Real capacity accounting/throttlingNoLocal deterministic behavior, not AWS capacity simulation.
IAM condition enforcementNoNot implemented.

DynamoDB dashboard management is available under /dashboard/dynamodb and the local /api/dynamodb/* dashboard API. The dashboard can inspect tables, items, indexes, TTL, and streams, and can run guarded local management flows for CreateTable, PutItem, UpdateItem, UpdateTimeToLive, DeleteItem, DeleteTable, Query, and Scan. Query and Scan expose result pagination with count, scanned count, next/previous controls, and selected result item JSON. Recent operation history is stored only in browser localStorage as metadata; it does not persist item payloads, credentials, full request payloads, or pagination keys. Dashboard mutation endpoints forward through the local DynamoDB JSON protocol path instead of editing storage directly. Destructive DeleteItem and DeleteTable flows require confirmation text matching the selected table name, and disabled DynamoDB services do not expose active mutation controls.

Google Cloud Pub/Sub-Compatible API

FeatureStatusNotes
gRPC emulator endpointYesImplements local google.pubsub.v1.Publisher, Subscriber, and SchemaService surfaces.
REST v1 endpointYesSupports topic, subscription, publish, pull, ack, seek, schema, and IAM-compatible local workflows.
Google Cloud Pub/Sub client librariesYesUse PUBSUB_EMULATOR_HOST=127.0.0.1:18085 and PUBSUB_PROJECT_ID=devcloud.
Topic create/get/list/update/deleteYesIncludes labels, retention, schema settings, and KMS metadata where applicable.
Subscription create/get/list/update/deleteYesIncludes ack deadline, retain acked messages, filters, retry policy, dead-letter policy, push config, and ordering flags.
Publish / Pull / Acknowledge / ModifyAckDeadlineYesLocal lease and redelivery behavior is covered by unit and E2E tests.
StreamingPullYesSupports flow control, ack/modack/nack, cancellation, and ordering-key gates.
Ordering keysYesLocal ordered delivery gate is implemented for pull and streaming pull flows.
Snapshots and SeekYesSnapshot CRUD and seek-to-time/snapshot flows are implemented.
SchemasYesSchema CRUD, revisions, rollback/delete revision, and validate message are implemented locally.
Push subscriptionsPartialLocal HTTP push worker, retry policy, and OIDC/no-wrapper metadata are supported when push is enabled.
IAM endpointsPartialLocal policy shape is supported; no real Google IAM enforcement.
Exactly-once deliveryPartialMetadata is accepted; no real cloud-grade exactly-once guarantee.
Cloud Monitoring, quotas, billingNoNot implemented.
Production durability / HANoFilesystem-backed local emulator only.

Pub/Sub dashboard actions are available under /dashboard/pubsub:

  • create topics
  • create subscriptions
  • publish a message to the selected topic
  • pull messages from the selected subscription
  • acknowledge pulled messages

Redshift-Compatible API

FeatureStatusNotes
PostgreSQL wire endpointYesListens on 127.0.0.1:15439 by default for local Redshift-style SQL clients.
PostgreSQL simple query protocolYesCovers psql smoke workflows.
PostgreSQL extended query protocolPartialSupports Parse, Bind, Describe, Execute, Sync, Close, text bind parameters, portal resume, and safe unsupported errors for binary formats.
PostgreSQL execution backendYesDefault backend is managed local PostgreSQL; explicit memory fallback remains available for development continuity.
Redshift SQL translationPartialHandles local subsets for DDL/DML, Redshift table attributes, CTAS/views/materialized-view metadata, function rewrites, COPY, and UNLOAD.
COPY from local S3YesLocal S3 side effect imports into the PostgreSQL-backed table path.
UNLOAD to local S3YesQuery results can be exported through local S3 side effects.
Redshift Data APIYesExecute/describe/get-result/list workflows are covered by local gates.
Redshift management APIPartialCluster, parameter group, tags, credentials, and snapshot metadata workflows are local metadata.
Redshift Serverless APIPartialNamespace and workgroup metadata are local compatibility responses.
Snapshot restoreYesRestores cluster metadata from local snapshot metadata without copying real AWS data.
System catalog / BI introspectionPartialProvides representative pg_catalog, information_schema, Redshift system views, and workload metadata for common probes.
Dashboard query runnerYesRedshift dashboard supports status, catalog, table detail, statement history, and SQL query execution.
Real AWS Redshift / IAM / KMS / CloudWatchNoNot implemented; devcloud does not make real AWS calls.
MPP / columnar execution / Spectrum / datashareNoOut of local compatibility scope.

Redis-Compatible Endpoint

FeatureStatusNotes
Redis wire endpointYesUses a real redis-server child process in managed mode; devcloud does not re-implement RESP.
External Redis modeYesservices.redis.mode: external validates externalUrl with PING and exposes the same dashboard surface.
Managed persistenceYesRuntime data is kept under .devcloud/data/redis by default.
String/hash/list/set/zset inspectionPartial/dashboard/redis lists keys with SCAN and shows type-specific previews.
Command runnerPartialDashboard commands are restricted to the Redis allowlist in docs/design-redis-compat.md.
Destructive actionsPartialKey delete, expire, and guarded FLUSHDB are supported; FLUSHALL and unsafe commands are rejected.
Redis AUTHPartialRelaxed mode does not set requirepass; strict mode passes the configured password to managed Redis.
Cluster, Sentinel, modules, RedisJSON, RediSearchNoOut of local compatibility scope.

Dashboard API

FeatureStatusNotes
Service registryYesGET /api/dashboard/services.
Mail messages APIYesList, fetch detail/raw, delete.
S3 dashboard APIYesBucket/object listing, download links.
GCS dashboard APIYesBucket/object/upload-session inspection.
DynamoDB dashboard APIYesStatus, tables, table detail, indexes, TTL, streams, items, guarded management operations, Query, and Scan.
SQS dashboard APIYesStatus, queues, messages, leases, DLQ, and purge.
Pub/Sub dashboard APIYesStatus, topics, subscriptions, publish, pull, ack, and message metadata.
Redshift dashboard APIYesStatus, clusters, catalog, table detail, query runner, and statement history.
Redis dashboard APIYesStatus, SCAN-based keys, key inspector, allowlisted command runner, delete, expire, and guarded FLUSHDB.
Common React dashboard shellYesAll service pages are served under /dashboard/<svc> from the shared React shell; compatibility /mail, /s3, /gcs, /dynamodb, /bigquery, /redis paths return 301 redirects.

Verification

Local build and test

cargo build --workspace
cargo test --workspace

Service acceptance gates and E2E scripts are run locally because they require service-specific external tooling (awscli-local, postgres server binaries, aws CLI, etc.).

Manual acceptance gates (per service)

Run before claiming a service MVP is complete or when investigating a service-level regression:

StageCommand
Mail MVPVERIFY_STAGE=full bash scripts/mail-autoloop/verify.sh
S3 MVPVERIFY_STAGE=full bash scripts/s3-autoloop/verify.sh
GCS MVPVERIFY_STAGE=full bash scripts/gcs-autoloop/verify.sh
DynamoDB MVPVERIFY_STAGE=full bash scripts/dynamodb-autoloop/verify.sh
BigQuery MVPVERIFY_STAGE=full bash scripts/bigquery-autoloop/verify.sh
SQS MVPVERIFY_STAGE=full bash scripts/sqs-autoloop/verify.sh
Pub/Sub MVPVERIFY_STAGE=full bash scripts/pubsub-autoloop/verify.sh
Redis MVPVERIFY_STAGE=full bash scripts/redis-autoloop/verify.sh
Application Auto Scaling MVPVERIFY_STAGE=full bash scripts/applicationautoscaling-autoloop/verify.sh
GCS SDK compatVERIFY_STAGE=full-sdk-compat bash scripts/gcs-sdk-compat-autoloop/verify.sh
BigQuery SDK compatVERIFY_STAGE=full-sdk-compat bash scripts/bigquery-sdk-compat-autoloop/verify.sh
Pub/Sub full compatVERIFY_STAGE=full-compat bash scripts/pubsub-full-compat-autoloop/verify.sh
Redshift advanced compatVERIFY_STAGE=full-advanced bash scripts/redshift-advanced-compat-autoloop/verify.sh

Manual E2E smoke

ServiceScriptExtra tool requirement
Mailscripts/mail-e2e.shnone
S3scripts/s3-e2e.shawscli-local (pipx install awscli-local)
GCSscripts/gcs-e2e.shnone
DynamoDBscripts/dynamodb-e2e.shaws CLI
BigQueryscripts/bigquery-e2e.shnone
SQSscripts/sqs-e2e.shnone
Pub/Subscripts/pubsub-e2e.shnone
Redshiftscripts/redshift-e2e.shpsql, aws, and postgres server binary on PATH for managed mode
Redshift managed PostgreSQLscripts/redshift-managed-postgres-e2e.shinitdb, postgres, psql on PATH
Redshift SQL translatorscripts/redshift-translator-e2e.shpsql, aws, and postgres server binary on PATH
Redisscripts/redis-e2e.shredis-cli
Application Auto Scalingscripts/applicationautoscaling-e2e.shnone

Useful env vars:

  • E2E_INTERACTIVE=true keeps the daemon running after the journey for browser/API inspection.
  • E2E_DELETE_DATA=false preserves stored data for inspection (DynamoDB, BigQuery, SQS).
  • E2E_<SVC>_PORT and E2E_DASHBOARD_PORT override defaults when the standard ports are busy. Example: E2E_INTERACTIVE=true E2E_S3_PORT=14566 E2E_DASHBOARD_PORT=18025 scripts/s3-e2e.sh.

Project Structure

PathPurpose
orchestratorCLI, config loading, workspace initialization, and service supervisor.
services/mailSMTP inbox service.
services/s3S3-compatible HTTP service and filesystem-backed object store.
services/gcsGCS JSON API-compatible HTTP service.
services/dynamodbDynamoDB-compatible JSON API service.
services/bigqueryBigQuery-compatible REST API service.
services/redisRedis-compatible managed/external service wrapper.
services/sqsSQS-compatible JSON and Query API service.
services/pubsubGoogle Cloud Pub/Sub-compatible REST and gRPC service.
services/redshiftRedshift SQL, Data API, and management API service.
services/dashboardLocal Web UI, embedded React assets, and dashboard APIs.
docs/Product and compatibility designs.
mock/UI design mocks.
scripts/*-autoloop/Bounded implementation-loop and verification scripts.
scripts/*-e2e.shEnd-to-end smoke tests.

Notes

  • devcloud is a local emulator. It intentionally does not implement cloud IAM, billing, availability, or production security guarantees.
  • Runtime data under .devcloud/ should not be committed.
  • Default development credentials are dev/dev for local S3 and DynamoDB strict-mode smoke tests.
  • Compatibility targets are driven by the scripts and design docs in docs/; unsupported provider APIs should be added deliberately with tests.

About

Local cloud service emulator — a single Rust binary serving compatible dev endpoints for S3, GCS, DynamoDB, BigQuery, SQS, Pub/Sub, Redshift, Redis, and SMTP mail, with a React dashboard.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages