# @coda/runner

Datasource runner service (WIP — COD-90). Executes scheduled and on-demand datasource refreshes via SQS, using isolated V8 sandboxes for user-defined code. Exposes a ConnectRPC API for the server to enqueue and inspect runs.

## Quick start

```bash
cp .env.shadow .env   # fill in required values
pnpm --filter @coda/runner dev
```

## Key files

- `src/index.ts` — entry point (startup, SQS consumer, scheduler, ConnectRPC server)
- `src/server.ts` — ConnectRPC server factory
- `src/worker/` — SQS consumer and execution pipeline
- `src/scheduler/` — polling scheduler that enqueues due datasource runs
- `src/executors/` — Snowflake, GraphQL, and circuit-breaker-wrapped executors
- `src/handlers/` — ConnectRPC handler implementations
- `src/rate-limit/` — per-tenant rate limiter (Redis-backed)
- `src/sandbox/` — sandbox session lifecycle helpers
- `.env.shadow` — env template
