Limits and timeouts
Row caps, worker concurrency, client timeouts, cache lifetimes, and the environment variables that move them.
Bulk and concurrency
| Limit | Value | On breach |
|---|---|---|
Rows per --inputs call | 1000 | INVALID_ARG — split into sequential calls |
| Server-side workers | 25 | Higher --concurrency is silently clamped |
| Default concurrency | 10 | Reduces automatically under upstream rate pressure |
| Export page size | 10,000 rows | Auto-paged to the --out file |
When concurrency is clamped, the started event reports
concurrencyClamped: true — the run still completes.
Timeouts
| Setting | Default | Override |
|---|---|---|
| Per-call client timeout | 180s | EXIMAGENT_TIMEOUT_MS |
| Heartbeat interval | 30s | — |
EXIMAGENT_TIMEOUT_MS=900000 eximagent enrich contacts --collectionId <id>
Operations that routinely exceed the default: enrich contacts over 200+ rows,
and any confirmed search run.
Caches
| Cache | Lifetime | Key |
|---|---|---|
| Website crawl | 100 days | Canonical URL |
| Profile lookup | 100 days | Resolved profile URL |
Repeat requests inside the window are free. Re-crawl when a source page has changed materially — cached does not mean current.
Environment variables
| Variable | Effect |
|---|---|
EXIMAGENT_PROFILE | Default saved account for the session |
EXIMAGENT_TIMEOUT_MS | Per-call client timeout in milliseconds |
HTTPS_PROXY | Proxy for outbound HTTPS |
Known limitations
- Profile resolution is most reliable from canonical URLs; resolving from a bare company name is weaker.
enrich contactsis collection-scoped — narrow with row-subset flags rather than expecting an arbitrary input set.- Enrichment returns image URLs, not stored bytes, so source-page rot is possible. Re-enrich when images stop resolving.
--strictapplies to single-input calls only; bulk runs always auto-pick.