Clean installation
This is the supported installation path for 0.1.0-alpha.1. Start from a clean
clone or source archive; do not copy bin, obj, node_modules, databases, or
local secret files from another environment.
Prerequisites
- .NET SDK
10.0.100or newer on the .NET 10 line - Node.js
24.18.1for the complete contract/SDK toolchain - Docker with Compose v2 for the local container path
- Git for a source checkout
Python, Java, PHP, and Rust are required only when developing their respective SDKs. Their exact CI baselines are in version-baseline.md.
Source installation
From the repository root:
dotnet --version
node --version
docker version
dotnet restore iRoute.slnx
dotnet build iRoute.slnx --configuration Release --no-restore
npm ci
npm ci --prefix sdks/node
dotnet test --solution iRoute.slnx --configuration Release --no-build --no-restore
npm run test:contracts
npm run test:deployment
npm run test:regression
npm run test:sdks
npm run test:release
The SDK runner skips a native language locally when its toolchain is absent; the official CI jobs cover every supported language before release.
Direct source runs that use DevelopmentHeaders must explicitly set
ASPNETCORE_ENVIRONMENT=Development. The API rejects development identity
headers at startup in every other environment.
Smallest runnable deployment
Start durable SQLite API and worker containers with no provider credentials:
docker compose --file deploy/compose.sqlite.yaml up --build --wait
curl --fail http://localhost:8080/health/live
curl --fail http://localhost:8080/health/ready
Submit the checked example from another terminal:
curl --request POST http://localhost:8080/v1/executions \
--header 'Content-Type: application/json' \
--header 'X-Tenant-Id: clean-install' \
--header 'X-Actor-Id: adopter' \
--header 'Idempotency-Key: clean-install-email-001' \
--data @examples/email-draft.json
Submission returns HTTP 202; poll the execution URL or reconnect to its SSE stream until it reaches Succeeded. Shut down without deleting the named
SQLite volume:
docker compose --file deploy/compose.sqlite.yaml down
Use down --volumes only when deliberately discarding local state.
Production-shaped deployment
The PostgreSQL Compose and Kubernetes paths require operator configuration. Read deploy/README.md and operations.md before using them. In particular:
- configure JWT identity;
DevelopmentHeaderscannot start outside Development; - replace all example secret, host, registry, and image values;
- use an external backed-up PostgreSQL service;
- run the release-matched migration job before workloads;
- keep exactly one lifecycle worker per database;
- run at least two execution workers for takeover capacity;
- configure TLS ingress, secret management, and at least one generic gateway deployment;
- keep the registered gateway route list identical across execution workers and use PostgreSQL for shared circuit state;
- run sustained load, soak, and production failover validation before declaring the installation production-ready.
Installation failures
- A failing
/health/readywith a reachable database usually means migrations are pending; run the migration imagestatuscommand. - A .NET SDK outside the
global.jsonpolicy fails before compilation; install a compatible .NET 10 SDK. - Node dependency drift is resolved with
npm ci, never by editing a lockfile manually. - Do not work around a contract or regression failure by regenerating a golden baseline without reviewing the behavioral change.
Report reproducible non-security failures through the bug template. Report vulnerabilities privately according to SECURITY.md.