In 2026, data movement between clouds often costs more than the AI inference itself. Teams pick a model on token price and get killed by network charges.
This pre-flight predictor flashes a warning before you build a $10k/mo cross-cloud pipeline. Rates pulled from public price pages (AWS $0.09/GB to internet · GCP $0.12/GB to other-cloud · Snowflake $40/TB).
Egress is 76% of total cost. The data is bigger than the inference. Run inference IN GCP (provision the model there) instead of pulling the data out.
| From | To | $/GB |
|---|---|---|
| AWS | AWS | $0.02 |
| AWS | AZURE | $0.09 |
| AWS | GCP | $0.09 |
| AWS | INTERNET | $0.09 |
| AWS | SAME-REGION | $0 |
| AZURE | AWS | $0.087 |
| AZURE | AZURE | $0.02 |
| AZURE | GCP | $0.087 |
| AZURE | INTERNET | $0.087 |
| AZURE | SAME-REGION | $0 |
| GCP | AWS | $0.12 |
| GCP | AZURE | $0.12 |
| GCP | GCP | $0.02 |
| GCP | INTERNET | $0.12 |
| GCP | SAME-REGION | $0 |
| SNOWFLAKE | AWS | $0.13 |
| SNOWFLAKE | AZURE | $0.127 |
| SNOWFLAKE | GCP | $0.16 |
Pass 3 headers on any proxy call. If the predicted verdict is rose ("MOVE THE MODEL"), the proxy returns 412 Precondition Failed before forwarding to OpenAI/Anthropic — saving you both the egress and the inference cost.
curl -X POST https://proxy.cartieai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_KEY" \
-H "X-Cartie-Key: $CARTIE_KEY" \
-H "X-Cartie-Source-Cloud: gcp" \
-H "X-Cartie-Dest-Cloud: aws" \
-H "X-Cartie-Data-GB: 1024" \
-H "X-Cartie-Token-Budget-Pct: 0.05" \
-H "X-Cartie-Egress-Enforce: true" \
-d '{"model":"gemini-3-flash","messages":[...]}'
# Response when egress-dominant + enforce=true:
# HTTP/1.1 412 Precondition Failed
# { "error":"egress_preflight_blocked", "verdict":"MOVE THE MODEL", ... }Blocks any PR that adds an egress-dominant cross-cloud pipeline. Posts /api/egress/preflight-plan with the Terraform plan diff → aggregate verdict → CI exits non-zero on rose.
# .github/workflows/cartie-egress-gate.yml
# Blocks PRs that introduce egress-dominated cross-cloud pipelines.
name: Cartie Egress Gate
on:
pull_request:
paths:
- 'terraform/**'
- 'iac/**'
jobs:
egress-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Extract planned routes from terraform plan
id: extract
run: |
# Your team's helper that turns a tf plan into the routes JSON.
# Output shape: {"routes":[{"source_cloud":"gcp","dest_cloud":"aws",
# "data_gb":1024,"model":"gemini-3-flash","label":"summary_pipeline"}]}
./scripts/tf-plan-to-routes.sh > routes.json
- name: Call Cartie egress preflight
id: preflight
run: |
RESPONSE=$(curl -s -X POST "https://cartieai.com/api/egress/preflight-plan" \
-H "Content-Type: application/json" \
--data @routes.json)
echo "$RESPONSE" | tee preflight.json
SHOULD_BLOCK=$(echo "$RESPONSE" | jq -r .should_block)
if [ "$SHOULD_BLOCK" = "true" ]; then
echo "❌ Cartie blocked this PR — egress dominates."
echo "$RESPONSE" | jq .blocked_reasons
exit 1
fi
echo "✅ Cartie egress gate passed."CARTIE wires the predictor into your PR checks. Cross-cloud egress over 30% of total cost? Merge is blocked.