For the full decision tree, MEC standard ↔ app name mapping, and common failure scenarios, see the [complete guide](docs/meepctl-troubleshooting.md).
## Automated Dev Workflow (Tilt)
For automated rebuild and redeployment during development, the MEC Sandbox includes a **[Tiltfile](https://tilt.dev/)** that watches your source code and Helm charts for changes, then runs the correct `meepctl` pipeline automatically.
For full documentation, see the **[Tilt Dev Workflow Guide](docs/tilt-dev-workflow.md)**.
### Quick Start
```bash
cd ~/etsi-mec-sandbox
tilt up # Start watching (platform must already be deployed)
# Open http://localhost:10350 for the Tilt dashboard
> **Purpose:** Tilt watches your source code and Helm charts for changes, then automatically runs the correct `meepctl` build/dockerize/deploy pipeline — eliminating manual rebuild steps during development.
- Platform must already be deployed (`meepctl deploy dep` + `meepctl deploy core`)
-[Tilt](https://tilt.dev/) must be installed (`curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash`)
**Start watching:**
```bash
cd ~/etsi-mec-sandbox
tilt up
```
**Open the dashboard:**
- Local: http://localhost:10350
- Remote: `tilt up --host 0.0.0.0` then visit http://<VM-IP>:10350
**Stop watching:**
```bash
tilt down
```
> **Note:** `tilt up` does NOT deploy anything automatically. It only starts watching for file changes. Your running platform is not affected until you save a file.
---
## How It Works
Tilt wraps `meepctl` commands. When you save a file, Tilt detects the change and runs the appropriate pipeline:
-`meep-virt-engine`*(special handling — see below)*
-`meep-webhook`
-`meep-ingress-certs`*(chart only, no Go code)*
---
### Sandbox MEC API Apps (auto-watched)
Each sandbox app has one Tilt resource:
| Resource | Watches | Triggers |
|----------|---------|----------|
| `<app>:code` | `go-apps/<app>/` | `meepctl build` → `meepctl dockerize` → `kubectl rollout restart` on all deployments using that image |
The restart step automatically finds all K8s deployments using the app's Docker image across all namespaces (since sandbox deployments have dynamic names like `mep1-mec033-1`).
**Sandbox apps monitored:**
| App | MEC Standard |
|-----|-------------|
| `meep-ams` | MEC021 |
| `meep-app-enablement` | MEC011 |
| `meep-dai` | MEC016 |
| `meep-federation` | MEC040 |
| `meep-gis-engine` | — |
| `meep-iot` | MEC033 |
| `meep-loc-serv` | MEC013 |
| `meep-metrics-engine` | — |
| `meep-rnis` | MEC012 |
| `meep-sandbox-ctrl` | — |
| `meep-sss` | MEC046 |
| `meep-tm` | MEC015 |
| `meep-vis` | MEC030 |
| `meep-wais` | MEC028 |
---
### meep-virt-engine (special)
`meep-virt-engine` gets special treatment because it bundles **all sandbox Helm charts** inside its Docker image. It has three resources:
**This is the key automation:** When you edit _any_ sandbox Helm chart, Tilt automatically re-dockerizes `meep-virt-engine` (to bundle the updated chart) and redeploys it.
---
### Dependencies (manual buttons)
Dependencies are third-party infrastructure services that rarely change. They appear as **manual buttons** in the Tilt UI — click to trigger.
| Button | Command |
|--------|---------|
| `dep:deploy-all` | `meepctl deploy dep` |
| `dep:delete-all` | `meepctl delete dep` |
| `dep:meep-grafana` | `meepctl deploy dep meep-grafana --force` |
| `dep:meep-couchdb` | `meepctl deploy dep meep-couchdb --force` |