End-to-end path on the local compose stack. Target: under ~15 minutes with Foundry installed.
- Docker
- Foundry (
forge,cast,anvil— Anvil also runs in compose) curl+jq(optional but handy)
cd deploy
docker compose up --buildWait until API logs show it is listening. Postgres :5432, Anvil :8545, API :8080.
From the repo root (host Foundry talking to compose Anvil):
./scripts/deploy-anvil.sh
./scripts/seed-anvil.shConfirm health:
curl -s localhost:8080/health | jq .curl -s -X POST localhost:8080/auth/register \
-H 'Content-Type: application/json' \
-d '{"email":"demo@wallet.test","password":"password123"}' | jq .
ACCESS=$(curl -s -X POST localhost:8080/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"demo@wallet.test","password":"password123"}' | jq -r .access_token)RESP=$(curl -s -X POST localhost:8080/intents \
-H "Authorization: Bearer $ACCESS" \
-H 'Content-Type: application/json' \
-d '{"text":"swap 10 USDC"}')
echo "$RESP" | jq .
PLAN_ID=$(echo "$RESP" | jq -r .plan.id)Expect plan status awaiting_approval with approve + swap steps.
curl -s -X POST "localhost:8080/plans/$PLAN_ID/steps/0/approve" \
-H "Authorization: Bearer $ACCESS" | jq .
curl -s -X POST "localhost:8080/plans/$PLAN_ID/steps/1/approve" \
-H "Authorization: Bearer $ACCESS" | jq .
curl -s "localhost:8080/plans/$PLAN_ID" \
-H "Authorization: Bearer $ACCESS" | jq .Expect step statuses succeeded and plan completed.
curl -s -X POST localhost:8080/intents \
-H "Authorization: Bearer $ACCESS" \
-H 'Content-Type: application/json' \
-d '{"text":"swap 150 USDC"}' | jq .Expect rejected_policy / amount_over_cap. No executable approve path.
curl -s -X POST localhost:8080/intents \
-H "Authorization: Bearer $ACCESS" \
-H 'Content-Type: application/json' \
-d '{"text":"bridge funds somewhere"}' | jq .Expect rejected_schema.
cd apps/mobile
flutter run --dart-define=API_BASE=http://127.0.0.1:8080Sign in → New intent → use chip swap 10 USDC → Approve steps → check History.
- Compose sets
PLANNER_MODE=mock(no LLM key). - Anvil key defaults are local demo only — never point this stack at a real network.
- Eval fixtures:
cd services/api && go run ./cmd/evals -dir ../../evals/cases