ETLs in the Era of AI and Sandboxes

lol-lol-lol-21 pts0 comments

Agentic Airbyte | Visual Execution Tutorial

Skip to main content

Flow Board / intent becomes evidence<br>step 1 / plan

Agentic Airbyte execution flow<br>Goal enters the AI harness, the harness calls Crabbox, Crabbox injects a credential profile into a worker, Airbyte moves data from source to target, and evidence returns to the harness.

Goal<br>policy

AI harness<br>writes spec<br>chooses next action

Crabbox<br>lease + run<br>collect artifacts

Profile<br>scoped env

Worker<br>repo + env<br>Airbyte runs

Source<br>API / DB

Evidence<br>logs / JUnit<br>metrics / config

Target<br>warehouse

AI Harness Reads goal and writes a bounded spec.

calls Crabbox ->

Crabbox Leases a worker and injects the named profile.

runs command ->

Worker + Airbyte Reads source and writes target. Agent never sees rows.

returns evidence ->

Evidence Logs, metrics, JUnit, redacted config.

control = intent + command<br>credentials = profile -> env<br>data = source -> target<br>evidence = artifacts -> decision

1Plan<br>2Lease<br>3Inject<br>4Move<br>5Prove<br>6Repair

owner: agent<br>The agent compresses intent into a job spec.

It reads the goal, repo state, schemas, previous evidence, and policy. It emits a bounded run. It does not move data.

Input goal + policy + repo state

Output job JSON + Crabbox command

||

run replay<br>One job, traced from request to repair.

Click a row. The main flow jumps to the same boundary.

00:00<br>Request Sync CRM accounts into the warehouse before 08:00.

00:02<br>Spec Agent writes refs, profile, validation, retry, artifacts.

00:05<br>Lease Crabbox finds a warm worker and returns a run id.

00:31<br>Sync Airbyte reads source.crm.accounts and writes target rows.

02:14<br>Validate Worker emits counts, schema drift check, JUnit, config.

02:18<br>Decision Agent sees one failing freshness check and emits a repair job.

phase: request<br>Human or schedule gives intent.

The input is a business goal, not a connector config dump. The agent still has to choose the run shape.

Owner human / schedule

Input goal + deadline + policy

Output bounded intent for the harness

Evidence none yet

mental model<br>Everything is easier when each box owns one question.

Read the system as 4 contracts. Each box gets a narrow input, owns one decision, and emits a narrow output.

agent / driver<br>What should run next?

Turns intent and previous evidence into the next bounded job spec.

Reads goal, repo, evidence<br>Writes job spec, next action

crabbox / runner<br>Where can it run safely?

Leases the sandbox, hydrates code, injects scoped env, captures outputs.

Reads pool, command, profile<br>Writes run id, artifacts

airbyte / mover<br>How do rows move?

Runs the connector in the worker. Source and target never enter model context.

Reads source, target, env<br>Writes target rows, sync status

evidence / judge<br>What happened?

Converts logs and checks into finish, retry, repair, or alert.

Reads logs, JUnit, metrics<br>Writes decision, repair input

owner: agent<br>The agent is the driver, not the pipe.

It can inspect repo state and evidence, then write the next bounded job. It should never carry production rows or raw secrets.

Can do choose refs, profile, validation, retry, next action

Must not do move rows, store secrets, sanitize artifacts

Intent -> Spec<br>Goal becomes refs, profile, retry policy, validation, artifacts.

Spec -> Run<br>Spec becomes a sandboxed command with a durable run id.

Profile -> Env<br>Profile name becomes scoped variables inside the worker only.

Source -> Target<br>Connector moves rows directly. The prompt never becomes the data plane.

Worker -> Evidence<br>Execution becomes logs, JUnit, metrics, counts, redacted config.

Evidence -> Action<br>Signals become finish, retry, repair, or alert.

bad design<br>Agent becomes the integration runtime.<br>Secrets, rows, logs, and retries collapse into one prompt loop.

bounded design<br>Agent chooses experiments. Systems execute them.<br>Each boundary has one owner, one input shape, and one evidence shape.

red flags<br>The model context becomes the data plane.

The agent sees too much, owns too much, and cannot prove what happened. Debugging depends on an unstructured transcript.

Failure mode secret leakage, copied rows, non-repeatable retries

Fix move data movement back into a worker with scoped credentials and artifacts

runnable shape<br>The runnable shape has 3 contracts.

A useful agent output is not prose. It is a spec contract, an execution handoff, and an evidence contract.

ai-agent-dispatch.sh<br>Copy

# Goal: sync CRM accounts into the warehouse safely.

crabbox pool ensure example-org/data-movement/main/provider/linux/etl \<br>--min-ready 3 \<br>--create -- \<br>--cache-volume airbyte-etl

mkdir -p .crabbox/generated<br>cat > .crabbox/generated/accounts-sync.json --json<br>crabbox artifacts download --out evidence/

job spec anatomy

Refs source + target<br>Profile scoped env<br>Proof artifacts + tests

Spec Contract plan

Agent writes: refs, profile name, allowlists, validation, retry, artifact globs. Agent never writes: raw secrets or copied rows.

Execution Handoff lease

Crabbox...

evidence agent crabbox profile spec writes

Related Articles