Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 30 additions & 30 deletions CHANGELOG.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing to DevCloud

Thanks for your interest in contributing! This file is a short pointer — the full contributor guide lives at [docs/contributing.md](docs/contributing.md).
Thanks for your interest in contributing! This file is a short pointer: the full contributor guide lives at [docs/contributing.md](docs/contributing.md).

## Quick links

Expand Down Expand Up @@ -32,21 +32,21 @@ Do not add a `src/` directory. Add code to `pkg/` only when it is intentionally
- **Bug**: use the [Bug Report](https://github.com/skyoo2003/devcloud/issues/new?template=bug_report.yml) template
- **Feature request**: use the [Feature Request](https://github.com/skyoo2003/devcloud/issues/new?template=feature_request.yml) template
- **Question**: use the [Question](https://github.com/skyoo2003/devcloud/issues/new?template=question.yml) template
- **Security vulnerability**: do not open a public issue — see [SECURITY.md](SECURITY.md)
- **Security vulnerability**: do not open a public issue; see [SECURITY.md](SECURITY.md)

## Pull request workflow

1. Fork the repo and create a feature branch from `main`
2. Make your changes (follow the guidelines in [docs/contributing.md](docs/contributing.md))
3. Run `make test` and ensure lint passes (`golangci-lint run`)
4. Open a PR against `main` — the PR template will guide you
4. Open a PR against `main`; the PR template will guide you
5. CI must be green before review

## Commit message style

Conventional prefixes are preferred: `feat:`, `fix:`, `chore:`, `docs:`, `test:`, `refactor:`.

Release notes are **not** generated from commits — they come from [Changie](https://changie.dev) fragments. Add one for any user-facing change with `changie new` — one sentence, two at most (see [RELEASE.md](RELEASE.md#one-sentence-two-at-most)).
Release notes are **not** generated from commits; they come from [Changie](https://changie.dev) fragments. Add one for any user-facing change with `changie new`: one sentence, two at most (see [RELEASE.md](RELEASE.md#one-sentence-two-at-most)).

## License of Contributions

Expand Down
10 changes: 5 additions & 5 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ DevCloud is a small, volunteer-driven open-source project. This document describ
- **Best-effort response.** No SLA; see [SUPPORT.md](SUPPORT.md) for expectations.

This is appropriate at the project's current size. It is a statement about who decides, not about
API stability — what a release promises is [docs/compatibility-policy.md](docs/compatibility-policy.md).
API stability: what a release promises is [docs/compatibility-policy.md](docs/compatibility-policy.md).

## How decisions are made

Expand All @@ -24,7 +24,7 @@ API stability — what a release promises is [docs/compatibility-policy.md](docs

## How to influence direction

- **Open issues.** Features, bugs, questions — all go through [Issues](https://github.com/skyoo2003/devcloud/issues) or [Discussions](https://github.com/skyoo2003/devcloud/discussions).
- **Open issues.** Features, bugs, questions: all go through [Issues](https://github.com/skyoo2003/devcloud/issues) or [Discussions](https://github.com/skyoo2003/devcloud/discussions).
- **React to existing issues** to surface priority.
- **Submit PRs.** Working code speaks loudest. See [CONTRIBUTING.md](CONTRIBUTING.md).
- **Discuss architecture early.** For non-trivial changes, open a design issue before writing code.
Expand All @@ -33,9 +33,9 @@ API stability — what a release promises is [docs/compatibility-policy.md](docs

As DevCloud grows, the governance model will evolve. Likely milestones:

- **2+ active maintainers** — introduce a lightweight maintainer charter (who can merge what, conflict resolution).
- **First external contributor with sustained commits** — document maintainer eligibility criteria.
- **Foundation consideration** — if the project reaches the scale where vendor-neutral governance matters, a formal foundation model will be evaluated.
- **2+ active maintainers**: introduce a lightweight maintainer charter (who can merge what, conflict resolution).
- **First external contributor with sustained commits**: document maintainer eligibility criteria.
- **Foundation consideration**: if the project reaches the scale where vendor-neutral governance matters, a formal foundation model will be evaluated.

Until then, this one-page document is the full governance.

Expand Down
85 changes: 53 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# DevCloud

A **local development companion for cloud-native apps**. Iterate fast without cloud bills, then land cleanly on your target CSP.
A local development companion for cloud-native applications. Iterate fast without cloud bills, then deploy cleanly to your target cloud provider.

![CI](https://github.com/skyoo2003/devcloud/actions/workflows/ci.yml/badge.svg)
![Go](https://img.shields.io/badge/Go-1.26-00ADD8)
Expand All @@ -12,64 +12,85 @@ A **local development companion for cloud-native apps**. Iterate fast without cl
docker run -p 4747:4747 ghcr.io/skyoo2003/devcloud:latest
```

Point any AWS SDK at `http://localhost:4747`. See [Getting Started](docs/getting-started.md) for boto3 / AWS CLI / Terraform examples and other install options.
Point your AWS, Azure, or GCP SDK and CLI tools at `http://localhost:4747`. See [Getting Started](docs/getting-started.md) for SDK examples, CLI configurations, and Terraform setups.

## Why DevCloud?

Every test against real AWS is billed, every feature branch wants its own sandbox, and every new joiner waits for credentials. DevCloud runs a local, API-compatible cloud environment so you can:
Every integration test against a live cloud account costs money, every feature branch needs an isolated sandbox, and every new team member waits for IAM credentials. DevCloud provides an API-compatible local cloud environment on a single port:

- **Develop offline** — no VPN, no credentials, no internet
- **Iterate without a bill** — integration tests at CI speed, not cloud speed
- **Onboard in minutes** — `docker run` and your team is productive
- **Ship with confidence** — compatibility tests run against real SDKs
- **Develop offline**: no VPN, no cloud credentials, and no internet connection required.
- **Iterate without bills**: run integration tests at local speeds instead of waiting on remote provisioning.
- **Onboard in minutes**: start a single container or binary, and your team is ready to build.
- **Unified multi-cloud on port 4747**: route AWS, Azure, and GCP workloads transparently through one endpoint.
- **Pluggable workload runtimes**: execute serverless functions with standard OCI container runtimes (Docker, Podman, nerdctl), WebAssembly, or isolated host processes without mandatory daemons.
- **Ship with confidence**: verified against official SDKs and CLIs with automated compatibility suites.

DevCloud is an **on-ramp to the cloud**, not a replacement for it. The goal is to make the local → CSP transition boring. It targets AWS today; Azure, GCP and beyond are on the [roadmap](docs/roadmap.md).
DevCloud serves as a local on-ramp to cloud providers, not a production replacement. The goal is to make the transition from local development to cloud deployment straightforward and predictable.

## Features

- **437 AWS services registered, 437 serving at least one operation** — every service AWS publishes is routed, so no SDK call escapes to a billable account. Depth is a separate, smaller promise — see [coverage.md](docs/coverage.md) for both targets.
- **boto3-compatible** — a 1,530-test suite runs in CI (`make test-compat`) across every registered service. Unsupported operations return a clean AWS error, never a false success.
- **Cross-service integration** — CloudFormation provisioning, DynamoDB Streams → Lambda, EventBridge targets, S3 → Lambda
- **Smithy-driven codegen** — Go types, routers and error catalogues generated from AWS models, with a weekly sync workflow that keeps them current
- **Single binary, zero-config** — one Docker image, one port (4747), no config file required; override with `DEVCLOUD_SERVICES`, `DEVCLOUD_DATA_DIR`, `DEVCLOUD_PORT`
- **SDK/CLI compatible** — AWS SDK, CLI, Terraform and CDK work out of the box
- **Admin API** — opt-in REST at `/devcloud/api/*` for service status, resources and request logs (`admin.enabled: true`)
- **441 AWS services registered, 441 serving at least one operation**: every service AWS publishes is routed locally to prevent billable leaks. See [coverage.md](docs/coverage.md) for depth and routing targets.
- **Multi-cloud API emulation**: Azure (Blob Storage, Queue Storage, Table Storage, Cosmos DB, Key Vault, App Configuration) and GCP (Cloud Storage, Secret Manager, Cloud Pub/Sub) served transparently alongside AWS on port 4747.
- **Universal workload runtime**: pluggable OCI (Docker, Podman, nerdctl), WebAssembly, and host process drivers for serverless workloads, enabling zero-daemon local execution.
- **SDK and CLI compatibility**: verified in CI against official AWS (boto3, aws CLI), Azure (Python SDK, az CLI), and GCP (Python SDK, gcloud CLI) client tooling.
- **Cross-service and federated identity**: CloudFormation orchestration, DynamoDB Streams to Lambda, EventBridge targets, S3 to Lambda, and cross-cloud OIDC and STS federation.
- **Smithy and OpenAPI codegen**: Go types, routers, and error catalogues generated from official API models, kept current with automated sync workflows.
- **Single binary, zero-config**: one port (4747), no mandatory configuration file required; customizable via environment variables and devcloud.yaml.
- **Admin API**: opt-in REST endpoints at `/devcloud/api/*` for service status, resource inventory, and request logs (`admin.enabled: true`).

## Core Services (AWS)
## Core Services

### AWS
| Service | Protocol | Storage | Docs |
|---------|----------|---------|------|
| S3 | REST-XML | Filesystem + SQLite | [docs/services/s3.md](docs/services/s3.md) |
| SQS | Query + JSON | In-memory | [docs/services/sqs.md](docs/services/sqs.md) |
| DynamoDB | JSON 1.0 | SQLite | [docs/services/dynamodb.md](docs/services/dynamodb.md) |
| Lambda | REST-JSON | SQLite + Filesystem | [docs/services/lambda.md](docs/services/lambda.md) |
| IAM/STS | Query | SQLite | [docs/services/iam-sts.md](docs/services/iam-sts.md) |
| Lambda | REST-JSON | SQLite + Workload Driver | [docs/services/lambda.md](docs/services/lambda.md) |
| IAM / STS | Query | SQLite | [docs/services/iam-sts.md](docs/services/iam-sts.md) |

The rest of the registered surface is described in the [services matrix](docs/services-matrix.md).
### Azure
| Service | Protocol | Storage | Docs |
|---------|----------|---------|------|
| Blob Storage | REST-XML | Filesystem + SQLite | [docs/services/azure.md](docs/services/azure.md) |
| Queue Storage | REST-XML | In-memory | [docs/services/azure.md](docs/services/azure.md) |
| Table Storage | REST-JSON (OData) | In-memory / SQLite | [docs/services/azure.md](docs/services/azure.md) |
| Cosmos DB | REST-JSON | In-memory / SQLite | [docs/services/azure.md](docs/services/azure.md) |
| Key Vault | REST-JSON | In-memory | [docs/services/azure.md](docs/services/azure.md) |
| App Configuration | REST-JSON | In-memory | [docs/services/azure.md](docs/services/azure.md) |

### GCP
| Service | Protocol | Storage | Docs |
|---------|----------|---------|------|
| Cloud Storage (GCS) | REST-JSON | Filesystem + SQLite | [docs/services/gcp.md](docs/services/gcp.md) |
| Secret Manager | REST-JSON | In-memory | [docs/services/gcp.md](docs/services/gcp.md) |
| Cloud Pub/Sub | REST-JSON | In-memory | [docs/services/gcp.md](docs/services/gcp.md) |

The complete list of supported services is documented in the [services matrix](docs/services-matrix.md).

## Documentation

Start at the [docs index](docs/). Most-read pages:
Start at the [docs index](docs/). Key references:

| | |
| Page | Description |
|---|---|
| [Getting Started](docs/getting-started.md) | Install, first run, SDK examples |
| [Configuration](docs/configuration.md) | Config file, env-var overrides, tier shortcuts |
| [Coverage](docs/coverage.md) | What the service counts mean, and the target |
| [Compatibility Policy](docs/compatibility-policy.md) | What v1.0 guarantees across 1.x — and what it does not |
| [Architecture](docs/architecture.md) | System design, codegen pipeline, plugin model |
| [Contributing](docs/contributing.md) | Dev setup, adding a service |
| [Getting Started](docs/getting-started.md) | Installation, first run, and multi-cloud SDK examples |
| [Configuration](docs/configuration.md) | Configuration file options, environment overrides, and runtime controls |
| [Coverage](docs/coverage.md) | Service counts, routing targets, and depth guarantees |
| [Compatibility Policy](docs/compatibility-policy.md) | Version guarantees across releases and boundary definitions |
| [Architecture](docs/architecture.md) | System architecture, workload execution engine, and plugin design |
| [Contributing](docs/contributing.md) | Local development setup and service contribution guidelines |

Project files: [Support](SUPPORT.md) · [Governance](GOVERNANCE.md) · [Releasing](RELEASE.md) · [Changelog](CHANGELOG.md)
Project links: [Support](SUPPORT.md) | [Governance](GOVERNANCE.md) | [Releasing](RELEASE.md) | [Changelog](CHANGELOG.md)

## Contributing

Contributions are welcome — especially service implementations, compatibility fixes, and documentation. See the [Contributing Guide](docs/contributing.md) and the [Code of Conduct](CODE_OF_CONDUCT.md).
Contributions are welcome, including new service implementations, compatibility improvements, and documentation fixes. See the [Contributing Guide](docs/contributing.md) and the [Code of Conduct](CODE_OF_CONDUCT.md).

For security issues, follow the [Security Policy](SECURITY.md) and do not file a public issue.
For security reports, please refer to the [Security Policy](SECURITY.md) instead of creating public issues.

## License

Apache License, Version 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).
Apache License, Version 2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).

DevCloud is an independent open-source project. References to cloud service providers describe **API compatibility** only; all trademarks are the property of their respective owners. See [TRADEMARKS.md](TRADEMARKS.md).
DevCloud is an independent open-source project. References to cloud service providers describe API compatibility only. All trademarks belong to their respective owners. See [TRADEMARKS.md](TRADEMARKS.md).
Loading
Loading