This page takes you from a clean machine to a running ICE canvas, then outlines what to try first.
- Node.js 22 or later. Check with
node --version. - pnpm 10 or later. Install with
npm install -g pnpmor follow pnpm.io/installation. - Git. Standard.
No Docker required for the default setup - ICE's dev mode uses an embedded SQLite file.
For a production-like setup (PostgreSQL + Redis + BullMQ workers), see the "Production-like dev" section below. You will need Docker for that path.
git clone https://github.com/light-cloud-com/ice.git
cd ice
pnpm installFirst pnpm install takes ~3-5 minutes (large monorepo, many workspace packages).
ICE's resource-type catalogue is generated from the Terraform and Pulumi registries - about 550 MB of source-of-truth schemas, far too large for git. Generate it locally once after install:
pnpm schemas:buildThis pulls provider schemas, unifies them, and writes:
packages/core/src/schemas/generated/resource-types.ts- the typed resource catalogue used by the enginepackages/core/src/schemas/generated/manifest.json- per-provider version manifestpackages/core/src/schemas/generated/unified-types.json- the canonical unified schemapackages/core/src/schemas/generated/raw/- per-provider raw extracts (cache)
The first run takes 10–15 minutes and downloads ~600 MB. Subsequent runs hit the cache under .schema-cache/ and finish in seconds.
To narrow the scope (faster, smaller):
# Just GCP + AWS + Azure (the providers ICE actively deploys)
pnpm schemas:build -- --providers hashicorp/google,hashicorp/aws,hashicorp/azurermRe-run any time you bump a provider version. The output is in .gitignore; only the small SQLite catalog at packages/core/data/ice-schemas.db is committed.
Skip this step. Community Edition needs zero env vars to run.
What you might want to know:
- Local secrets used for session signing and at-rest credential encryption are auto-generated on first boot and persisted per-user (
~/Library/Application Support/ice/secrets.jsonon macOS,~/.config/ice/secrets.jsonon Linux,%APPDATA%\ice\secrets.jsonon Windows). Keep this file safe - it's the key to your DB-encrypted provider credentials. - Cloud provider credentials (GCP / AWS / Azure) are entered in-app under Settings → Providers and live encrypted in the workspace DB.
- The optional AI assistant reads
ANTHROPIC_API_KEYfrom.envfor now - an in-app settings flow is on the roadmap. See ai-assistant. .env.examplelists optional dev overrides (alternateDATABASE_URL,PORT, seed credentials,ANTHROPIC_API_KEY). Only touch it if you need to override a default or enable AI.
Web app (default):
pnpm dev:allOpens at http://localhost:5173. The API gateway starts on port 15173. No login - you're dropped straight onto the canvas.
Desktop app (Electron):
pnpm dev:desktopSame canvas, running in an Electron window with an embedded gateway. No external server; all state in a local SQLite file.
- On the canvas, open the palette (left side) and drag a Static Site block onto the surface.
- Drag a Custom Domain block next to it.
- Connect them by dragging from one block's edge to the other.
- Select the Static Site block - the properties panel opens on the right. Fill in a GitHub repo (or leave blank for now).
- Click Deploy in the top toolbar. If you have GCP credentials configured, it will plan and apply real infrastructure.
If you do not yet have GCP credentials, the deploy will produce a clear error message. Connect a credential under Settings → Providers in the app; the validator tells you which IAM role is missing if a key fails.
If you want to develop against PostgreSQL + Redis + BullMQ workers (closer to how ICE Cloud runs), you will need Docker and a Postgres instance. The dev scripts default to SQLite for onboarding friction reasons; a docker-compose setup is on the roadmap - see ROADMAP.md.
| Symptom | Likely cause | Fix |
|---|---|---|
Cannot find module '@ice/db' after pull |
Stale install | pnpm install && pnpm --filter @ice/db exec prisma generate |
| Port 5173 already in use | Another Vite app | Kill the other process or set PORT=5174 pnpm dev:web |
ECONNREFUSED :15173 from web |
Gateway not started | Check the pnpm dev:all terminal for gateway errors |
| Electron window blank on macOS | First-run security prompt | System Settings → Privacy & Security → approve ICE |
Error: SQLITE_READONLY |
Permissions on .desktop-dev.db |
rm .desktop-dev.db and re-run pnpm dev:setup |
| AI panel shows "No API key" | ANTHROPIC_API_KEY not set |
Add ANTHROPIC_API_KEY=sk-ant-... to .env and restart |
Still stuck? Open an issue with your OS, Node version, and the exact error. See CONTRIBUTING.md for the bug template.
- architecture - how the pieces fit together.
- testing.md - run the test suites.
.env.example- all environment variables.package.json- the full list ofpnpmscripts.