An optional file placed at the repo root that tells iec-builder how to locate and build your service. Most services don't need it. You need it when your service is in a subdirectory (monorepo pattern), uses a non-standard Dockerfile, or needs a custom Helm chart.
NOTE:
.iec.yamllives at the repo root — not inside your service subdirectory. For the monorepo pattern,catalog-info.yamllives inside the service subdirectory.
# .iec.yaml (repo root)
appPath: web # service root relative to repo root (monorepo)
dockerfile: Dockerfile # Dockerfile path relative to appPath (default: Dockerfile)
buildContext: ../.. # Docker build context relative to appPath (default: appPath itself)
helmChart: helm/ # Custom Helm chart path relative to appPath
All fields are optional. An empty .iec.yaml (or no file at all) means: service root = repo root, auto-generate Dockerfile, use repo root as build context, use platform default Helm chart.
The most common use case. You have one repo with multiple services in subdirectories, or a service lives in a subdirectory (e.g., web/):
my-repo/
.iec.yaml ← tells builder: service is in web/
web/
.tawa.yaml ← written by tawa link
catalog-info.yaml ← your service declaration
package.json
src/
.iec.yaml:
appPath: web
With appPath: web, the builder:
catalog-info.yaml from web/catalog-info.yamlweb/ as the Docker build contextweb/Dockerfile (or auto-generates one)web/# From the service subdirectory
cd web/
tawa link # registers service, writes web/.tawa.yaml
# Deploy (also from service subdirectory)
tawa deploy
TIP: You run
tawa linkandtawa deployfrom the service subdirectory — the builder reads.iec.yamlfrom the repo root automatically.
If your Dockerfile is not at {appPath}/Dockerfile:
# .iec.yaml
appPath: web
dockerfile: docker/Dockerfile.prod
The path is relative to appPath (or repo root if no appPath).
If your Docker build context needs to reach outside the service directory (e.g., shared packages at the repo root):
# .iec.yaml
appPath: apps/my-service
buildContext: ../.. # relative to appPath — resolves to repo root
WARNING: Build context paths are evaluated relative to
appPath, not the repo root.../..fromapps/my-servicemeans the repo root.
Use your own Helm chart instead of the platform default:
# .iec.yaml
appPath: web
helmChart: helm/ # relative to appPath
Most services should use the platform default Helm chart. Custom charts are only needed for advanced K8s configurations.
.iec.yaml and .tawa.yaml serve different purposes:
| File | Location | Written by | Purpose |
|---|---|---|---|
.iec.yaml | repo root | developer | builder config (appPath, Dockerfile, Helm) |
.tawa.yaml | service dir | tawa link | service registration (serviceId, repoUrl, branch) |
Don't put builder config in .tawa.yaml — the builder only reads .iec.yaml for these settings.
.iec.yaml from the repo root on every build — no CLI flags neededappPath shifts ALL of: catalog-info.yaml lookup, Docker build context, Dockerfile path, Helm chart resolution.iec.yaml appPath and service.appPath (from DB) are set, .iec.yaml wins.iec.yaml needed at all.iec.yaml with different appPath values — but this requires separate .tawa.yaml registrations too (one per service).iec.yaml inside the service subdirectory — it must be at the repo rootbuildContext thinking it's relative to the repo root — it's relative to appPath.iec.yaml with .tawa.yaml — they are separate files with different purposesbuildContext: web when appPath: web already sets the build context — don't set both unless you need the context to differ from appPathLast updated: February 28, 2026