Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
c8717a5
fix(canvas): correct snap target + drag-snap stickiness for Custom Do…
julia-kafarska May 24, 2026
77c2568
refactor(secret-store): schema-driven 1→N deploy expansion
julia-kafarska May 24, 2026
e808b3d
refactor(canvas-renderer): drop hardcoded iceType branches via SPECIA…
julia-kafarska May 24, 2026
8901ea5
refactor(canvas-path): drop hardcoded iceType in socket-position via …
julia-kafarska May 24, 2026
441a94f
refactor(properties): schema-drive tab visibility + deployment-target…
julia-kafarska May 24, 2026
3c14e84
refactor(properties): schema-drive per-tab section dispatch via SECTI…
julia-kafarska May 24, 2026
58c048f
refactor(canvas-sizing): schema-drive bespoke node sizing via BESPOKE…
julia-kafarska May 24, 2026
fbae1d3
refactor(deploy/edge-classifier): schema-drive isolation + standalone…
julia-kafarska May 24, 2026
8bd7a36
refactor(deploy/passes): schema-drive public-ingress detection + doma…
julia-kafarska May 24, 2026
39bb4e0
refactor(deploy/security-rules): schema-drive iceType classifiers via…
julia-kafarska May 24, 2026
0bfbf50
refactor(classifiers): unify connection-rules + propagation-rules ice…
julia-kafarska May 24, 2026
d963ad6
refactor(deploy): dedup SERVICE_BACKEND_ICE_TYPES via shared serviceB…
julia-kafarska May 24, 2026
f055ba8
refactor(translator): drop hardcoded iceType + provider branches via …
julia-kafarska May 24, 2026
cc92fea
refactor(deploy): drop hardcoded Compute.StaticSite in storage extrac…
julia-kafarska May 24, 2026
57daeca
refactor(deploy/aws): modularise AWSDeployer to mirror gcp/ shape
julia-kafarska May 24, 2026
afdaf6a
feat(deploy/aws): extractors for compute (ecs.service, lambda.functio…
julia-kafarska May 24, 2026
60c4fc8
feat(deploy/aws): extractors for database (rds, dynamodb, elasticache…
julia-kafarska May 24, 2026
d010862
feat(deploy/aws): extractors for network (s3, apigateway, cloudfront,…
julia-kafarska May 24, 2026
27a55ed
feat(deploy/aws): extractors for ancillary (sqs, sns, cognito, secret…
julia-kafarska May 24, 2026
7f5fac9
feat(deploy/aws): extractors for AI/analytics (opensearch, bedrock, s…
julia-kafarska May 24, 2026
8fcf181
feat(deploy/aws): shared infra — STS account-id resolver + IAM ensure…
julia-kafarska May 24, 2026
c9757a1
feat(deploy/aws): s3 handler — account-id suffix + publicWebsite buck…
julia-kafarska May 24, 2026
2a77cde
feat(deploy/aws): lambda handler — fail-fast role + code-source valid…
julia-kafarska May 24, 2026
9e87b9e
feat(deploy/aws): cloudwatch-logs handler + shared _result helpers
julia-kafarska May 24, 2026
e3cf87c
feat(deploy/aws): secrets-manager handler + shared test harness
julia-kafarska May 24, 2026
fae0bf0
feat(deploy/aws): sqs handler — CreateQueue/SetQueueAttributes/Delete…
julia-kafarska May 24, 2026
c2054f3
feat(deploy/aws): sns handler — CreateTopic/SetTopicAttributes/Delete…
julia-kafarska May 24, 2026
af7f2dc
feat(deploy/aws): dynamodb handler — CreateTable + key schema + PITR
julia-kafarska May 24, 2026
3f7713d
feat(deploy/aws): elasticache handler — single-node + replication-gro…
julia-kafarska May 24, 2026
2989447
feat(deploy/aws): rds handler — no-default-password gate + provisioni…
julia-kafarska May 24, 2026
d3adaef
feat(deploy/aws): docdb handler — cluster + per-instance creation
julia-kafarska May 24, 2026
c399b8f
feat(deploy/aws): cognito handler — user pool with password policy + MFA
julia-kafarska May 24, 2026
f5e1df6
feat(deploy/aws): cloudfront handler — us-east-1 ACM cert + minimal d…
julia-kafarska May 24, 2026
a6bafbe
feat(deploy/aws): elbv2 handler — LB + skeleton target group
julia-kafarska May 24, 2026
b3e64c8
feat(deploy/aws): api-gateway handler — REST API + default-stage depl…
julia-kafarska May 24, 2026
8614079
feat(deploy/aws): events-rule handler (CronJob) — PutRule + PutTargets
julia-kafarska May 24, 2026
88871d9
feat(deploy/aws): ecs handler — auto-cluster + task role + service cr…
julia-kafarska May 24, 2026
b5389bf
feat(deploy/aws): opensearch handler — CreateDomain with cluster/EBS/…
julia-kafarska May 24, 2026
f8bcbd8
feat(deploy/aws): bedrock handler — on-demand no-op + provisioned-thr…
julia-kafarska May 24, 2026
494f2e9
feat(deploy/aws): sagemaker handler — EndpointConfig + Endpoint, requ…
julia-kafarska May 24, 2026
e70aae5
feat(deploy/aws): redshift handler — CreateCluster + no-default-passw…
julia-kafarska May 24, 2026
cb85063
feat(deploy/aws): lambda auto-build from Source.Repository
julia-kafarska May 24, 2026
aeca368
test(deploy/aws): unskip AWS Type Map block + end-to-end coverage
julia-kafarska May 24, 2026
ac4281d
docs(deploy/aws): provider notes — quirks, assumptions, deferred work
julia-kafarska May 24, 2026
ad69a21
feat(aws): selectively enable safe categories via feature flags
julia-kafarska May 25, 2026
b32c53a
fix(palette): enable provider dropdown items when any block is available
julia-kafarska May 25, 2026
6ac85de
docs(architecture): explain how canvas edges become cloud infra
julia-kafarska May 25, 2026
0dedbf7
fix(typecheck): unblock blocks + templates + core deploy-expansion
julia-kafarska May 25, 2026
7ca0f3d
fix(typecheck): unblock packages/ui + packages/web
julia-kafarska May 25, 2026
6238278
docs(architecture): explain how canvas edges become cloud infra
julia-kafarska May 25, 2026
11361ae
docs(readme): link AWS rollout state + connections-to-cloud page
julia-kafarska May 25, 2026
1638f09
docs(aws): reflect handler buildout + staged rollout
julia-kafarska May 25, 2026
5422cfe
Merge remote-tracking branch 'origin/main' into schema-driven-refactor
julia-kafarska May 25, 2026
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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Full guide: [docs/getting-started.md](docs/getting-started.md).
## Providers at a glance

- 🟢 **Google Cloud - stable(ish).** 20 service handlers, 45+ importers, full create / update / destroy.
- 🟡 **AWS - in progress.**
- 🟡 **AWS - in progress.** 17 service handlers + 20 extractors; staged rollout via feature flags — see [`packages/core/src/deploy/providers/aws/README.md`](packages/core/src/deploy/providers/aws/README.md) for the per-category state.
- 🟡 **Azure - in progress.**
- ⚪ **IBM Cloud - planned.**
- ⚪ **Kubernetes - planned.**
Expand Down
18 changes: 10 additions & 8 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ flowchart LR
Arch -.-> A4[database]
Arch -.-> A5[desktop]
Arch -.-> A6[ai-assistant]
Arch -.-> A7[connections-to-cloud]

Ref -.-> Rf1[blocks]
Ref -.-> Rf2[extending-providers]
Expand Down Expand Up @@ -56,14 +57,15 @@ You want to run ICE for a team (self-hosted).

You want to read the code, fix bugs, or add features. The canonical contributor doc is [`../CONTRIBUTING.md`](../CONTRIBUTING.md) — pages below complement it.

| Page | What it covers |
| ------------------------------------------------------------------- | ------------------------------------------------- |
| [Testing](testing.md) | Unit · integration · E2E · GCP scenario dashboard |
| [Architecture → core engine](architecture/core-engine.md) | Graph, schemas, plan/apply, scheduler, importers |
| [Architecture → frontend](architecture/frontend.md) | React, Redux slices, SVG canvas, feature folders |
| [Architecture → services](architecture/services.md) | The six backend services composed by the gateway |
| [Reference → blocks](reference/blocks.md) | Concept palette + per-provider variants |
| [Reference → extending providers](reference/extending-providers.md) | How to add a new cloud provider |
| Page | What it covers |
| --------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [Testing](testing.md) | Unit · integration · E2E · GCP scenario dashboard |
| [Architecture → core engine](architecture/core-engine.md) | Graph, schemas, plan/apply, scheduler, importers |
| [Architecture → frontend](architecture/frontend.md) | React, Redux slices, SVG canvas, feature folders |
| [Architecture → services](architecture/services.md) | The six backend services composed by the gateway |
| [Architecture → connections to cloud](architecture/connections-to-cloud.md) | How a canvas edge becomes env vars, IAM, and network policy |
| [Reference → blocks](reference/blocks.md) | Concept palette + per-provider variants |
| [Reference → extending providers](reference/extending-providers.md) | How to add a new cloud provider |

## How these docs are maintained

Expand Down
33 changes: 25 additions & 8 deletions docs/deploying-to-aws.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,35 @@ Same flow as [deploying-to-gcp.md](deploying-to-gcp.md) - drag blocks, connect t

## What works today

The block categories listed in the provider matrix (`docs/provider-status.md` - to be added) are the source of truth. As of this release, the AWS handler set covers compute, storage, basic networking, and managed databases. Anything outside that set will either no-op or surface an "unsupported on AWS" error in the plan modal.
17 service handlers + 20 extractors live in [`packages/core/src/deploy/providers/aws/`](../packages/core/src/deploy/providers/aws/). The categories exposed to the palette / plan modal are gated by feature flags — see the **Rollout state** table in [`providers/aws/README.md`](../packages/core/src/deploy/providers/aws/README.md) for the per-category truth source. Today: Storage (S3), Messaging (SQS, SNS, EventBridge), Cache (ElastiCache), Monitoring (CloudWatch Logs), Security (Secrets Manager), Source, and Config are on. Compute (ECS), Frontend, Scheduler, Network, Database (RDS / DynamoDB / DocDB), AI, and Analytics are gated until their concrete unblockers ship.

For the source-of-truth provider matrix across all clouds, see [provider-status.md](provider-status.md).

## AWS-specific quirks

The deployer handles several AWS-specific gotchas silently. The full list lives in [`providers/aws/README.md`](../packages/core/src/deploy/providers/aws/README.md); highlights:

- **S3 bucket names** get a `-{accountId}` suffix because S3 names are globally unique.
- **CloudFront ACM certs** are pinned to `us-east-1` regardless of deploy region.
- **ECS auto-provisions** a default cluster + task execution role on first deploy. Subnets and security groups are still operator-supplied today; canvas VPC blocks for AWS are deferred.
- **RDS / DocDB / Redshift** refuse to ship without a `master_user_password` — wire a `Security.Secret` or set the property explicitly.
- **RDS provisioning** takes 5–10 minutes; the handler polls `DescribeDBInstances` and reports progress via `ctx.on_step`.
- **Lambda auto-build** clones a connected `Source.Repository`, runs `npm install`, zips, and uploads to `ice-bootstrap-{accountId}-{region}` — needs local `git` / `npm` / `zip` on the deploy host. AWS CodeBuild integration is deferred.
- **SQS / SNS FIFO** queues + topics get the required `.fifo` suffix automatically.

## Known gaps vs. GCP

- No live cost estimate parity for several AWS-specific services.
- The importer (`Import → From AWS`) is not implemented yet.
- Some block types render on the canvas but have no AWS handler - they'll show a yellow "no provider for AWS" pip during plan.
- No importer (`Import → From AWS`) — manual canvas only.
- VPC-aware canvas blocks for ECS subnets/security groups not yet wired.
- Update paths for CloudFront / Cognito / DocDB / Redshift are create-only.
- Tests use mocked AWS SDKs only — no LocalStack integration tests yet.
- Cost estimate parity is sparser than GCP.

If you hit a gap that matters to you, please file a feature request - AWS parity is high-priority on the [ROADMAP](../ROADMAP.md) and contributions are welcome (see [contributing.md](contributing.md)).
If you hit a gap that matters to you, please file a feature request AWS parity is high-priority on the [ROADMAP](../ROADMAP.md) and contributions are welcome (see [contributing.md](contributing.md)).

## See also

- [deploying-to-gcp.md](deploying-to-gcp.md) - the canonical end-to-end tutorial.
- [architecture.md](architecture.md) - how plan / apply work.
- [`packages/providers/aws/src/handlers/`](../packages/providers/aws/src/handlers/) - per-service handler source.
- [deploying-to-gcp.md](deploying-to-gcp.md) — the canonical end-to-end tutorial.
- [architecture/README.md](architecture/README.md) — how plan / apply work.
- [`providers/aws/README.md`](../packages/core/src/deploy/providers/aws/README.md) — operator notes covering every AWS quirk and the rollout-state table.
- [`packages/core/src/deploy/providers/aws/handlers/`](../packages/core/src/deploy/providers/aws/handlers/) — per-service handler source.
28 changes: 15 additions & 13 deletions docs/provider-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,25 @@ Where each provider sits today. The source of truth is `PROVIDER_READINESS` in `

## Current matrix (v0.1)

| Provider | Status | What works |
| ----------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **GCP** | stable | 20+ handlers: Cloud Run (services + jobs), Cloud Functions, GKE, Cloud SQL, Firestore, Memorystore Redis, Cloud Storage, Pub/Sub, Cloud Scheduler, Vertex AI, Discovery Engine, BigQuery, Secret Manager, Identity Platform, API Gateway, Load Balancer, Domain Mapping, Cloud Logging. Full importer via Cloud Asset Inventory. |
| **AWS** | experimental | EC2 instance, S3 bucket, Lambda function. Importer not implemented. No auto-enable for required services. Most other resource categories surface as "unsupported on AWS" in the plan modal. |
| **Azure** | experimental | Virtual Machine, Storage Account, Web App. Importer not implemented. Most other resource categories surface as "unsupported on Azure". |
| **Kubernetes** | design-only | 13 blocks render on canvas. Deployer is not wired. |
| **Alibaba Cloud** | design-only | Blocks render. Deployer is the next item after AWS/Azure parity. |
| **Oracle Cloud** | design-only | Block stubs. No deployer. |
| **DigitalOcean** | design-only | Block stubs. No deployer. |
| Provider | Status | What works |
| ----------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **GCP** | stable | 20+ handlers: Cloud Run (services + jobs), Cloud Functions, GKE, Cloud SQL, Firestore, Memorystore Redis, Cloud Storage, Pub/Sub, Cloud Scheduler, Vertex AI, Discovery Engine, BigQuery, Secret Manager, Identity Platform, API Gateway, Load Balancer, Domain Mapping, Cloud Logging. Full importer via Cloud Asset Inventory. |
| **AWS** | experimental | 17 handlers + 20 extractors: S3 (account-id suffix), Lambda (auto-build from `Source.Repository`), ECS (auto-cluster + task role), RDS (provisioning poll), DynamoDB, ElastiCache, DocDB, CloudFront (us-east-1 ACM cert), API Gateway, ELBv2, SQS/SNS (FIFO suffix), EventBridge, Cognito, OpenSearch, Bedrock, SageMaker, Redshift, CloudWatch Logs, Secrets Manager. Staged rollout via feature flags — Storage / Messaging / Cache / Monitoring / Security / Source / Config categories are on; Compute / Frontend / Scheduler / Network / Database / AI / Analytics are gated until concrete unblockers ship (VPC blocks for ECS, ACM cert validation flow, update paths). See [`packages/core/src/deploy/providers/aws/README.md`](../packages/core/src/deploy/providers/aws/README.md) for the per-category state. Importer not implemented. |
| **Azure** | experimental | Virtual Machine, Storage Account, Web App. Importer not implemented. Most other resource categories surface as "unsupported on Azure". |
| **Kubernetes** | design-only | 13 blocks render on canvas. Deployer is not wired. |
| **Alibaba Cloud** | design-only | Blocks render. Deployer is the next item after AWS/Azure parity. |
| **Oracle Cloud** | design-only | Block stubs. No deployer. |
| **DigitalOcean** | design-only | Block stubs. No deployer. |

## What "experimental" looks like in practice

For an AWS deploy of a canvas that uses Static Site + Custom Domain:
For an AWS deploy of a canvas:

- The plan modal will show creates for `aws.s3.bucket` and `aws.lambda.function` if those blocks are present.
- Anything outside the supported set (e.g., `aws.rds.instance`, `aws.cloudfront.distribution`, networking constructs) will surface in the plan as **unsupported** rather than create.
- Apply runs only against the supported types. Partial-success result with an explicit "this block has no AWS handler yet" log line.
- Blocks in the enabled categories (Storage / Messaging / Cache / Monitoring / Security / Source / Config) plan and apply normally — S3, SQS, SNS, ElastiCache, Secrets Manager, CloudWatch Logs.
- Blocks in gated categories are hidden from the palette when the project's provider is AWS (Compute, Frontend, Scheduler, Network, Database, AI, Analytics). Their handlers exist but aren't exposed yet — flip a category in `PROVIDER_FLAGS.aws.categories` once its unblocker lands.
- RDS / DocDB / Redshift refuse to create without a `master_user_password`. Wire a `Security.Secret` or set the property explicitly.
- CloudFront / Cognito / DocDB / Redshift are create-only today — no update path.
- Lambda auto-build needs local `git` / `npm` / `zip` on the deploy host.

This is the same loop you'd hit on Azure for anything past VM / Storage / Web App.

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "ice",
"license": "Apache-2.0",
"version": "0.1.769",
"version": "0.1.776",
"description": "ICE - Integrated Cloud Environment (Web + Backend)",
"private": true,
"type": "module",
Expand Down
Loading
Loading