Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Cloudflare platform skill covering Workers, D1, R2, KV, AI, Durable Objects, and security.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/tail-workers/configuration.md
1# Tail Workers Configuration23## Setup Steps45### 1. Create Tail Worker67Create a Worker with a `tail()` handler:89```typescript10export default {11async tail(events, env, ctx) {12// Process events from producer Worker13ctx.waitUntil(14fetch(env.LOG_ENDPOINT, {15method: "POST",16body: JSON.stringify(events),17})18);19}20};21```2223### 2. Configure Producer Worker2425In producer's `wrangler.jsonc`:2627```jsonc28{29"name": "my-producer-worker",30"tail_consumers": [31{32"service": "my-tail-worker"33}34]35}36```3738### 3. Deploy Both Workers3940```bash41# Deploy Tail Worker first42cd tail-worker43wrangler deploy4445# Then deploy producer Worker46cd ../producer-worker47wrangler deploy48```4950## Wrangler Configuration5152### Single Tail Consumer5354```jsonc55{56"name": "producer-worker",57"tail_consumers": [58{59"service": "logging-tail-worker"60}61]62}63```6465### Multiple Tail Consumers6667```jsonc68{69"name": "producer-worker",70"tail_consumers": [71{72"service": "logging-tail-worker"73},74{75"service": "metrics-tail-worker"76}77]78}79```8081**Note:** Each consumer receives ALL events independently.8283### Remove Tail Consumer8485```jsonc86{87"tail_consumers": []88}89```9091Then redeploy producer Worker.9293## Environment Variables9495Tail Workers use same binding syntax as regular Workers:9697```jsonc98{99"name": "my-tail-worker",100"vars": {101"LOG_ENDPOINT": "https://logs.example.com/ingest"102},103"kv_namespaces": [104{105"binding": "LOGS_KV",106"id": "abc123..."107}108]109}110```111112## Testing & Development113114### Local Testing115116**Tail Workers cannot be fully tested with `wrangler dev`.** Deploy to staging environment for testing.117118### Testing Strategy1191201. Deploy producer Worker to staging1212. Deploy Tail Worker to staging1223. Configure `tail_consumers` in producer1234. Trigger producer Worker requests1245. Verify Tail Worker receives events (check destination logs/storage)125126### Wrangler Tail Command127128```bash129# Stream logs to terminal (NOT Tail Workers)130wrangler tail my-producer-worker131```132133**This is different from Tail Workers:**134- `wrangler tail` streams logs to your terminal135- Tail Workers are Workers that process events programmatically136137## Deployment Checklist138139- [ ] Tail Worker has `tail()` handler140- [ ] Tail Worker deployed before producer141- [ ] Producer's `wrangler.jsonc` has correct `tail_consumers`142- [ ] Environment variables configured143- [ ] Tested with staging environment144- [ ] Monitoring configured for Tail Worker itself145146## Limits147148| Limit | Value | Notes |149|-------|-------|-------|150| Max tail consumers per producer | 10 | Each receives all events independently |151| Events batch size | Up to 100 events per invocation | Larger batches split across invocations |152| Tail Worker CPU time | Same as regular Workers | 10ms (free), 30s default / 5min max (paid) |153| Pricing tier | Workers Paid or Enterprise | Not available on free plan |154| Request body size | 100 MB max | When sending to external endpoints |155| Event retention | None | Events not retried if tail handler fails |156157## Workers for Platforms158159For dynamic dispatch Workers, both dispatch and user Worker events sent to tail consumer:160161```jsonc162{163"name": "dispatch-worker",164"tail_consumers": [165{166"service": "platform-tail-worker"167}168]169}170```171172Tail Worker receives TWO `TraceItem` elements per request:1731. Dynamic dispatch Worker event1742. User Worker event175176See [patterns.md](patterns.md) for handling.177